相关疑难解决方法(0)

XSD - 如何允许任何次序的元素?

我正在尝试创建一个XSD,并尝试使用以下要求编写定义:

  • 允许指定的子元素出现任意次数(0到无界)
  • 允许子元素按任何顺序排列

我环顾四周,发现像各种解决方案这样:

<xs:element name="foo">
  <xsl:complexType>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="child1" type="xs:int"/>
      <xs:element name="child2" type="xs:string"/>
    </xs:choice>
  </xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

但据我所知xs:choice仍然只允许单个元素选择.因此,将MaxOccurs设置为无界限应该只意味着子元素中的"任何一个"可以多次出现.这准确吗?

如果上述解决方案不正确,我怎样才能实现我在上述要求中所说的内容?

编辑:如果要求如下,该怎么办?

  • 元素child1 child2可以出现任意次数(0到无界)
  • 元素以任何顺序排列
  • 元素child3和child4应该只出现一次.

例如,此xml有效:

<foo>
<child1> value </child1>
<child1> value </child1>
<child3> value </child3>
<child2> value </child2>
<child4> value </child4>
<child1> value </child1>
</foo>
Run Code Online (Sandbox Code Playgroud)

但这不是(缺少孩子3)

<foo>
<child1> value </child1>
<child1> value </child1>
<child2> value </child2>
<child4> value </child4>
<child1> value </child1>
</foo>
Run Code Online (Sandbox Code Playgroud)

xml xsd

102
推荐指数
4
解决办法
10万
查看次数

为什么xs:choice在生成的xml中允许多个不同的xs:元素?

我知道这个相关问题,我理解我的问题与答案相矛盾,但以下XML文件完全符合以下XMLSchema

我的XML数据:

<?xml version="1.0" encoding="utf-8"?>
<myElements>
    <el1>bla</el1>
    <el1>bla</el1>
    <el1>blabla</el1>
    <el2>bgt</el2>
    <el2>pel</el2>
    <el3>sdf</el3>
</myElements>
Run Code Online (Sandbox Code Playgroud)

我的XMLSchema:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="myElements">
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="el1" />
                <xs:element name="el2" />
                <xs:element name="el3" />
                <xs:element name="el4" />
            </xs:choice>
        </xs:complexType>
    </xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

W3学校和其他消息来源说:

XML Schema choice元素只允许声明中包含的一个元素出现在contains元素中.

在我看来,这意味着我的XML数据应该只接受其中一个:

  • 0到任何el1
  • 0到任何el2
  • 0到任何el3
  • 0到任何el4

但是,如果您尝试将我的xml数据验证到我的xmlschema,它是有效的,我不明白为什么.

我是否完全误解了文档?

我使用的验证器是否松散且非标准?如果是的话,什么是一个好的验证器,为什么有人会在我描述的情况下使用选择?(是的,我确实遇到过这个)

xml xsd xsd-validation

1
推荐指数
1
解决办法
579
查看次数

标签 统计

xml ×2

xsd ×2

xsd-validation ×1