2010-03-10 4 views
2

У меня есть XML-тег:Создание схемы XSD

<ROW field1="value 1" field2="value 2" ... /> 

fieldi имеет строковое значение, а количество атрибутов fieldi является переменной, но не менее 1. Можно ли создать схему XSD для этого тег?

возможно XML документ

<ROWDATA> 
    <ROW field1="dfgdf" field2="ddfg"></ROW> 
    <ROW field1="dfedf" field2="djkfg" field3="cdffd"></ROW> 
    <ROW field1="dfedf" field2="djkfg" field3="cdffd" field4="dfedf" field5="djkfg" field6="cdffd"></ROW> 
</ROWDATA> 

в этом XML-документ, который я получаю от веб-сервера, может быть переменное число поле атрибутов (я отметил их fieldi, где я означает порядок конкретного поле атрибута) Так что я, неизвестно количество строчных элементов и неизвестное количество атрибутов поля в элементе ROW

Благодаря

ответ

0

Если вы не комфортно в письменной форме XSD себя, использовать какой-генератор, как this.

EDIT: Основываясь на вашем XML в комментариях, я могу думать о структуре ниже XSD

<xsd:element name="FieldHeader"> 
    <xsd:complexType> 
      <xsd:sequence> 
       <xsd:element name="Fields" type="xsd:string"/> <!--use minOccurs maxOccurs here--> 
      </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
<xsd:simpleType name="fieldi"> 
    <xsd:restriction base="xsd:string"/> 
</xsd:simpleType> 
<xsd:simpleType name="Fields"> 
    <xsd:list itemType="fieldi" /> 
</xsd:simpleType> 
+0

Я пытался использовать некоторые генераторы, но они генерировали атрибуты с флагом «по желанию». В моем случае я не знаю, сколько атрибутов fieldi может быть в теге Nikolai

+0

Если вы не знаете, сколько раз элемент появится в XML, вы можете установить атрибут maxOccurs элемента «fieldi» на «неограниченный «это означает, что может быть столько же вхождений элемента« fieldi », сколько пожелает автор. –

+0

нет возможности установить maxOccurs для атрибутов, только для элементов yo может это сделать – Nikolai

2

Если вы используете Visual Studio 2008:

  • Откройте файл Xml в Visual Studio
  • Перейдите в пункт меню «Xml» в верхней части экрана
  • Выберите «Создать схему»

Это создаст вашу XSD схему (ы)

EDIT Попробуйте this example для получения подробной информации о настройке MinOccurs (по элементам) или требуется (атрибуты), так что вы можете управлять вашими производными схемами.

+0

Я пробовал, но получил схему с «необязательными» атрибутами, это не то, что мне нужно, потому что я не знаю, сколько у меня атрибутов – Nikolai

+0

@Nikolai - я расширил свой ответ. – amelvin

+0

Я попытался использовать «ref» для ссылки на атрибуты, но все еще неуспешно ... – Nikolai

0

Я думаю, что понял ваше требование. Чтобы избежать неправильных представлений, позвольте мне рассказать о том, что я понял однажды:
«У вас есть xml-файл, который содержит элемент с именем fieldi, поставляется с набором некоторых неизвестных атрибутов. Это означает, что вы не знаете [или скажите, пожалуйста, don 't хочу] имена и значения этих атрибутов. Просто хочу видеть, появляется по крайней мере 1 атрибут ",

Ну. жаль, что это требование исчерпывает возможности XML-схемы. : - [

Вы не можете иметь атрибуты, не указанные в схеме. Если он появляется в xml, для этого требуется соответствующее определение. Есть что-то под названием <anyAttribute/> [click-here], которое снова требует определения [где-то, в другой связанной схеме].

1) Определение всех возможных атрибутов, создающих use="optional", не представляется практически возможным. А также ваше последнее требование пропускается.
2) Если это возможно, преобразуйте все атрибуты в элементы [с помощью преобразования, или вы можете либо попросить отправителя сделать это, я не знаю, насколько это сложно в вашем случае], и определить элемент <any/>, который звучит несколько комфортно. но ваше требование [по крайней мере один атрибут должно появиться] все еще не достигнуто.

так что это я могу добавить к вам. Если вы можете изменить требование или ввести XML-структуру, то дайте мне знать, я буду видеть, могу ли я помочь вам в любых других отношениях, ..

С уважением,
нарождающейся про

+0

Привет, Теперь есть возможность изменять атрибуты на элементы, потому что это не мой xml, я получаю его с сервера ... Спасибо, в любом случае – Nikolai

0

Я решаемые проблема, но по-другому, контролируя десериализацию XML-документа так, как мне нужно. Однако мне не нравится это решение, потому что я хотел создать классы из схемы xsd и использовать их в своем коде.

Во всяком случае, благодаря всему

Смежные вопросы