如何在 xml 架构中使用序列和非序列子项

How to use sequence and non sequence childs in xml schema

提问人:Learner 提问时间:10/18/2023 最后编辑:DijkgraafLearner 更新时间:10/18/2023 访问量:49

问:

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 和 seuqence 复杂类型?

3. XSD处理器及其对XSD标准的符合性:1.0或1.1。

我正在使用 XSD 处理器...及其是否符合 XSD 标准......

xml xsd xml 解析

评论

0赞 Yitzhak Khabinsky 10/18/2023
XML 示例的格式不正确。
0赞 Yitzhak Khabinsky 10/18/2023
在提出 XSD 问题时,您需要提供一个最小的可重现示例:(1) 格式正确的输入 XML。(2) 你的逻辑,以及尝试实现它的完整 XSD。(3) XSD 处理器及其符合 XSD 标准:1.0 或 1.1。
0赞 Yitzhak Khabinsky 10/18/2023
stackoverflow.com/questions/16101488/......
0赞 Yitzhak Khabinsky 10/18/2023
这回答了你的问题吗?<xsd:all> 和 <xsd:sequence> 在架构定义中的区别?
0赞 Learner 10/18/2023
不是真的,或者我不知道如何使用它。我怎样才能将序列和所有序列都放在一个复杂类型中?

答:

0赞 Michael Kay 10/18/2023 #1

不能在同一内容模型中混合使用 xs:all 和 xs:sequence,但可以定义允许

id, name, nodes, edges

name, id, nodes, edges

通过制作内容模型

sequence
   choice
      sequence
         id
         name
      sequence
         name
         id
   nodes
   edges

评论

0赞 Learner 10/18/2023
实际上,这很聪明,让我试着在这里得到答案
0赞 Learner 10/21/2023
在两者之间,我被困在这个上面,如果你可能的话,我很感激你的帮助:stackoverflow.com/questions/77327983/......