Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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
XML的XSD';具有不同类型和重新排序类型的列表的_Xml_Xsd - Fatal编程技术网

XML的XSD';具有不同类型和重新排序类型的列表的

XML的XSD';具有不同类型和重新排序类型的列表的,xml,xsd,Xml,Xsd,请告诉我,如何创建xsd模式,以成功验证以下xml: 有效的XML 1 <?xml version="1.0" encoding="UTF-8"?> <start xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd"> <list> <typeA> <value>t

请告诉我,如何创建xsd模式,以成功验证以下xml:
有效的XML 1

    <?xml version="1.0" encoding="UTF-8"?>
<start xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd">
  <list>
    <typeA>
      <value>test string value 123</value>
    </typeA>
    <typeB>
      <value>test string value 456</value>
    </typeB>
    <typeC>
      <value>test string value 789</value>
    </typeC>
  </list>
</start>

测试字符串值123
测试字符串值456
测试字符串值789
有效的XML 2

    <?xml version="1.0" encoding="UTF-8"?>
<start xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd">
  <list>
    <typeB>
      <value>test string value 456</value>
    </typeB>
    <typeC>
      <value>test string value 789</value>
    </typeC>
  </list>
</start>

测试字符串值456
测试字符串值789
有效的XML 3

    <?xml version="1.0" encoding="UTF-8"?>
<start xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd">
  <list>
    <typeC>
      <value>test string value 789</value>
    </typeC>
    <typeC>
      <value>test string value 123</value>
    </typeC>
  </list>
</start>

测试字符串值789
测试字符串值123
有效的XML 4

    <?xml version="1.0" encoding="UTF-8"?>
<start xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd">
  <list>
    <typeC>
      <value>test string value 789</value>
    </typeC>
  </list>
</start>

测试字符串值789
具有重新排序类型的XML 5无效

<?xml version="1.0" encoding="UTF-8"?>
<start xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd">
    <list>
        <typeB>
            <value>test string value 456</value>
        </typeB>
        <typeC>
            <value>test string value 789</value>
        </typeC>
        <typeA>
            <value>test string value 123</value>
        </typeA>
    </list>
</start>

测试字符串值456
测试字符串值789
测试字符串值123

我编写了XSD,但它不适用于具有重新排序类型的XML(XML 5):


有没有其他方法可以做到这一点?
解决方案应该适用于上面列出的5个不同的XML文件

提前谢谢

试试这个,它可以工作:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="start">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="list" type="list"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="list">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="typeA" type="generic" />
        <xs:element name="typeB" type="generic" />
        <xs:element name="typeC" type="generic" />
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="generic">
    <xs:sequence>
      <xs:element name="value" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>


此shcema不会使实例XML 5无效。(但在重读这个问题时,也许OP希望实例XML 5有效?我不知道。)@MichaelKay,是的,他希望它有效。。这就是他的要求。也许我误解了这个问题。当您说XML 5“无效”时,您是说希望模式将其视为无效而拒绝,还是说存在问题,因为当前模式将其视为无效而拒绝?
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="start">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="list" type="list"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="list">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="typeA" type="generic" />
        <xs:element name="typeB" type="generic" />
        <xs:element name="typeC" type="generic" />
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="generic">
    <xs:sequence>
      <xs:element name="value" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>