#xml #xsd
#xml #xsd
Вопрос:
Для следующего XML-файла
<MyElement>
<Data1>123</Data1>
<Data2>234</Data2>
</MyElement>
Схема XSD выглядит следующим образом:
<xs:element name="MyElement" minOccurs="1" maxOccurs="1" >
<xs:complexType>
<xs:sequence>
<xs:attribute name="Data1" type="xs:unsignedInt" />
<xs:attribute name="Data2" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
Для элемента, который содержит данные не в дочерних узлах, а в атрибутах:
<MyElement Data1="123" Data2="234" />
Схема XSD выглядит следующим образом:
<xs:element name="MyElement" minOccurs="1" maxOccurs="1" >
<xs:complexType>
<xs:attribute name="Data1" type="xs:unsignedInt" />
<xs:attribute name="Data2" type="xs:unsignedInt" />
</xs:complexType>
</xs:element>
Но как определить XSD-схему для «смешанного» случая?
<MyElement Data1="123">
<Data2>234</Data2>
</MyElement>
РЕДАКТИРОВАТЬ: и еще один:
<MyElement Data1="123">234</MyElement>
Большое спасибо!
P.S. Я пробовал разные комбинации, но validator (встроенный в MSVS2010, жалуется на любую из моих идей).
Ответ №1:
Согласно онлайн-конвертеру
<MyElement Data1="123">
<Data2>234</Data2>
</MyElement>
преобразует в
<?xml version="1.0" encoding="utf-16"?>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="MyElement">
<xs:complexType>
<xs:sequence>
<xs:element name="Data2" type="xs:string" minOccurs="0" msdata:Ordinal="0" />
</xs:sequence>
<xs:attribute name="Data1" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="MyElement" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Я думаю, вы хотите именно это
<xs:element name="MyElement">
<xs:complexType>
<xs:sequence>
<xs:element name="Data2" type="xs:string" />
</xs:sequence>
<xs:attribute name="Data1" type="xs:string" />
</xs:complexType>
</xs:element>
Также ваш первый пример выглядит неправильно, поскольку ваши xml-узлы должны быть преобразованы в элементы, а не в атрибуты последовательности