Ниже приведен xml, из которого мне нужно создать схему xml (файл xsd), проверяющую имя поля, т.е. в узле tableData (ниже xml), имя первого столбца должно быть «field» с ключом как « name "и его значение должно быть" Data1 ". Я также хочу проверить, что значение этого столбца должно иметь тип xs: integer (значение равно 123).
Точно так же нужно для всех столбцов таблицы. Я новичок в проверке XML, поэтому возникают проблемы.
XML:
<table name="Employee">
<tableData>
<field name="Data1">123</field>
<field name="Data2">234</field>
<field name="Data3">Y</field>
<field name="Data4">321</field>
</tableData>
</table>
Я пытался создать схему, но не смог проверить тип 123 (то есть xs: integer) и другие типы столбцов. Пожалуйста, если кто-то может дать подсказку по этому вопросу.
Схема, которую я пробовал:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="tableData" >
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="4" name="field" type="fieldType" minOccurs="4"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="fieldType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="validAttributeType" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="validAttributeType">
<xs:restriction base="xs:string">
<xs:enumeration value="Data1"/>
<xs:enumeration value="Data2"/>
<xs:enumeration value="Data3"/>
<xs:enumeration value="Data4" />
</xs:restriction>
</xs:simpleType>
</schema>
Кроме того, для таблицы name = "Employee" в xml (первая строка в xml) я попытался создать схему и добавить ее до схемы, о которой я упоминал выше, но это дает ошибку: элемент 'table' не может содержать дочерний элемент 'tableData', потому что модель содержимого родительского элемента - только текст. Схема, которую я добавил выше схемы, упомянутой выше:
<xs:element name="table" type="mTable"/>
<xs:complexType name="mTable" >
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string" fixed="Employee"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>