如何在 xml 模式中使用序列和非序列子代

问题描述 投票:0回答:1

1。我有一个格式良好的 xml,如下

<graph>
    <id>g0</id>
    <name>test</name>
    <nodes>
        <node>
            <id>a</id>
            <name>xxxx</name>
        </node>
        <node>
            <id>e</id>
            <name>xxxx</name>
        </node>
    </nodes>
    <edges>
        <node>
            <id>e1</id>
            <from>a</from>
            <to>e</to>
        </node>
    </edges>
</graph>

2。我的逻辑,XSD 尝试实现它

我正在尝试为我的 xml 定义一个模式,其角色是所有元素都应按顺序排列,但 id 和 name 可以按任何顺序排列 这是我的sechema

    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="graph" type="AType"/>
<xsd:complexType name="AType">
    <xsd:sequence>
        <xsd:element name="id" type="xsd:string" />
        <xsd:element name="name" type="xsd:string" />
        <xsd:element name="nodes"  minOccurs="0">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="node" maxOccurs="unbounded" minOccurs="0">
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element type="xsd:string" name="id"/>
                                <xsd:element type="xsd:string" name="name"/>
                                <xsd:any minOccurs="0"/>
                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>
</xsd:schema>

所以你可以在这里看到我的

    <id>g0</id>
<name>test</name>

也是序列的一部分,它们被迫遵循顺序,但我不希望对这两个有任何顺序,只要它们在那里 有什么建议吗?

注意:请注意,我知道 all 意味着顺序并不重要,但我的问题是如何将 all 和 seuqence 一起使用复杂类型?

3. XSD 处理器及其与 XSD 标准的一致性:1.0 或 1.1。

我正在使用 XSD 处理器...以及它与 XSD 标准的一致性...

xml xsd xml-parsing
1个回答
0
投票

您不能在同一内容模型中混合使用 xs:all 和 xs:sequence,但您可以定义一个允许其中任意一种的序列

id, name, nodes, edges

name, id, nodes, edges

通过制作内容模型

sequence
   choice
      sequence
         id
         name
      sequence
         name
         id
   nodes
   edges
© www.soinside.com 2019 - 2024. All rights reserved.