一个 XSD 用于整个文档和片段?
One XSD for both whole document and fragment?
我希望创建一个能够验证完整 XML 文档及其片段的语法。
我有一组文档聚集在一个“批次”中。每个文档都有一组元数据:
<batch>
<document>
<metadata1 />
<metadata2 />
<metadata3 />
</document>
<document>
<metadata1 />
<metadata2 />
<metadata3 />
</document>
</batch>
我的 SpringBatch 进程在文档中拆分批次(StaxEventItemReader)
我希望验证代表单个文档的子 XML:
<document>
<metadata1 />
<metadata2 />
<metadata3 />
</document>
我读到 here 我不能使用部分 XSD 来验证 XML。
但是,有没有一种方法,同时避免重复,用两个 XSD 进行验证,其中一个验证片段,另一个会验证批次?
您可以通过指定多个可能的根元素,用单个 XSD 实现您的目标:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="batch">
<xs:complexType>
<xs:sequence>
<xs:element ref="document" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="document">
<xs:complexType>
<xs:sequence>
<xs:element name="metadata1" type="xs:string" />
<xs:element name="metadata2" type="xs:string" />
<xs:element name="metadata3" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
这样文档可能有一个 batch
或一个 document
根元素,并且没有定义重复。
我希望创建一个能够验证完整 XML 文档及其片段的语法。
我有一组文档聚集在一个“批次”中。每个文档都有一组元数据:
<batch>
<document>
<metadata1 />
<metadata2 />
<metadata3 />
</document>
<document>
<metadata1 />
<metadata2 />
<metadata3 />
</document>
</batch>
我的 SpringBatch 进程在文档中拆分批次(StaxEventItemReader) 我希望验证代表单个文档的子 XML:
<document>
<metadata1 />
<metadata2 />
<metadata3 />
</document>
我读到 here 我不能使用部分 XSD 来验证 XML。
但是,有没有一种方法,同时避免重复,用两个 XSD 进行验证,其中一个验证片段,另一个会验证批次?
您可以通过指定多个可能的根元素,用单个 XSD 实现您的目标:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="batch">
<xs:complexType>
<xs:sequence>
<xs:element ref="document" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="document">
<xs:complexType>
<xs:sequence>
<xs:element name="metadata1" type="xs:string" />
<xs:element name="metadata2" type="xs:string" />
<xs:element name="metadata3" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
这样文档可能有一个 batch
或一个 document
根元素,并且没有定义重复。