我需要创建一个XSD文件来安全处理我们得到的XML。 XML将如下所示:
<Books>
<Book>
<abc>hello</abc>
<xyz>crazy</xyz>
<q123>world</q123>
...
</Book>
<Book>
<abc>bye</abc>
<xyz>bye</xyz>
<q123></q123>
...
</Book>
</Books>
<Books>
元素是根元素,因此只有一个。<Book>
元素介于1到100之间。问题出在<Book>
元素的子元素上。
好消息是,每个<Book>
元素将具有相同数量和相同顺序的子元素。以下是我到目前为止的XSD。这基于XSD for varying element names
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.1">
<xs:element name="Books">
<xs:complexType>
<xs:sequence>
<xs:element name="Book" minOccurs="0" maxOccurs="1000">
<xs:complexType>
<xs:sequence>
<xs:any processContents="strict" namespace="##local" minOccurs="0" maxOccurs="500"/>
</xs:sequence>
<xs:assert test="every $e in * satisfies matches(local-name($e), '.{1,100}')"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
当我尝试解析XML时,出现此错误:The 'http://www.w3.org/2001/XMLSchema:assert' element is not supported in this context.
我不确定为什么会收到该错误。另外我也不知道如何测试子元素的值在0到100个字符之间,以及如何确保它具有0个属性。
我正在使用C#.NET 4.6。预先感谢!