这是XML文件的摘录,<_0>
,<_7>
... <_100>
是随机的,<id>
,<contact_id/>
,<status>
和<is_test_data>
是固定的。我需要创建一个XSD文件来验证这个XML
<?xml version="1.0" encoding="UTF-8"?>
<result>
<result_ok>1</result_ok>
<total_count>6</total_count>
<page>1</page>
<total_pages>1</total_pages>
<results_per_page>50</results_per_page>
<data>
<_0>
<id>12</id>
<contact_id/>
<status>Complete</status>
<is_test_data>1</is_test_data>
</_0>
<_7>
<id>13</id>
<contact_id/>
<status>Complete</status>
<is_test_data>1</is_test_data>
</_7>
<_2>
<id>14</id>
<contact_id/>
<status>Complete</status>
<is_test_data>1</is_test_data>
</_2>
<_6>
<id>15</id>
<contact_id/>
<status>Complete</status>
<is_test_data>1</is_test_data>
</_6>
.
.
.
.
<_100>
<id>15</id>
<contact_id/>
<status>Complete</status>
<is_test_data>1</is_test_data>
</_100>
</data>
</result>
这是我创建的XSD,但不确定如何为随机元素创建模式
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="apiresult">
<xs:complexType>
<xs:sequence>
<xs:element name="result_ok" type="xs:int" />
<xs:element name="total_count" type="xs:int" />
<xs:element name="page" type="xs:int" />
<xs:element name="total_pages" type="xs:int" />
<xs:element name="results_per_page" type="xs:int" />
<xs:element name="data">
<xs:complexType>
<xs:sequence>
<xs:element name="_0">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:int" />
<xs:element name="contact_id" />
<xs:element name="status" type="xs:string" />
<xs:element name="is_test_data" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
答案 0 :(得分:2)
您无法使用XSD执行此操作。 (除非您基本上使用XSD 1.1断言进行整个验证,但根本不使用XSD)。
如果您想验证这个奇怪的XML,我建议先将其转换为更主流的内容,例如:使用XSLT更改所有元素名称。