Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 整个文档和片段都有一个XSD?_Java_Xml_Spring_Xsd_Xml Validation - Fatal编程技术网

Java 整个文档和片段都有一个XSD?

Java 整个文档和片段都有一个XSD?,java,xml,spring,xsd,xml-validation,Java,Xml,Spring,Xsd,Xml Validation,我希望创建一个能够验证完整XML文档及其片段的语法 我有一套“批量”聚合的文档。每个文档都有一组元数据: <batch> <document> <metadata1 /> <metadata2 /> <metadata3 /> </document> <document> <metadata1 />

我希望创建一个能够验证完整XML文档及其片段的语法

我有一套“批量”聚合的文档。每个文档都有一组元数据:

<batch>
    <document>
        <metadata1 />
        <metadata2 />
        <metadata3 />
    </document>
    <document>
        <metadata1 />
        <metadata2 />
        <metadata3 />
    </document>
</batch>

My SpringBatch进程在文档中拆分批次(使用) 我希望验证表示单个文档的子XML:

<document>
    <metadata1 />
    <metadata2 />
    <metadata3 />
</document>

我读到我不能使用部分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>


这样,文档可以有一个
批处理
文档
根元素,并且没有定义重复。

非常清晰,工作非常完美。非常感谢。另外,这也让我更好的理解