具有可选子元素的默认 XML 序列(或全部)是否必须至少有一个子元素?

2023-12-23

如果有人能够确认以下模式的解释是否正确,我将不胜感激:

<xs:element name="Element1">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Child1" minOccurs="0" />
            <xs:element name="Child2" minOccurs="0" /> 
        </xs:sequence>
    </xs:complexType>
</xs:element>

虽然两者Child1 and Child2是可选的,Element1必须有至少一个孩子才能符合上述架构;即文件:

<Element1></Element1>    

不会遵守。为了使其有效,需要顺序minOccurs = 0(?)

Update

该问题涉及当子元素可选时序列(和所有)出现的含义。例如,文档;

<Element1>
    <Child2/>
    <Child1/>
</Element1>

将符合上述架构。这个序列会发生两次;在第一遍中,Child1缺席了。在第二,Child2缺席了。但重点是,顺序minOccurs(默认为 1)已满足,因为它发生了两次。

对于我上面给出的第一个例子(只是Element1;没有子元素),序列根本不会出现,并且不(IMO)满足minOccurs = 1.


具有可选子元素的默认 XML 序列(或全部)是否必须至少有一个子元素?

No...

虽然两者Child1 and Child2是可选的,Element1必须在 至少有一个孩子符合上述架构

默认值为minOccurs is 1,所以你的假设是正确的xsd:sequence被限制出现一次。然而,xsd:sequence minOccurs="1"只要其子级的出现约束满足一次,就满足。当所有子项出现约束都满足时minOccurs="0",允许有一个空序列。 所以,<Element1/>是有效的,即使没有任何Child1 or Child2儿童元素。

See also

  • XML 架构 minOccurs / maxOccurs 默认值 https://stackoverflow.com/questions/4821477/xml-schema-minoccurs-maxoccurs-default-values
  • XSD 中 和 之间的区别? https://stackoverflow.com/questions/36286056/the-difference-between-all-sequence-choice-and-group-in-xsd

更多示例:

XSD 与xs:sequence minOccurs="0"

<xs:element name="r">
    <xs:complexType>
        <xs:sequence minOccurs="0" maxOccurs="1">
            <xs:element name="a"/>
            <xs:element name="b"/> 
        </xs:sequence>
    </xs:complexType>
</xs:element>

有效的 XML: <r/> and <r><a/><b/></r>

XSD 与xs:sequence minOccurs="1"(默认)

<xs:element name="r">
    <xs:complexType>
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element name="a"/>
            <xs:element name="b"/> 
        </xs:sequence>
    </xs:complexType>
</xs:element>

有效的 XML: <r><a/><b/></r>

XSD 与xs:sequence minOccurs="2"

<xs:element name="r">
    <xs:complexType>
        <xs:sequence minOccurs="2" maxOccurs="2">
            <xs:element name="a"/>
            <xs:element name="b"/> 
        </xs:sequence>
    </xs:complexType>
</xs:element>

有效的 XML: <r><a/><b/><a/><b/></r>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有可选子元素的默认 XML 序列(或全部)是否必须至少有一个子元素? 的相关文章

  • 将 DOCTYPE 添加到 Scala XML 的最简单方法?

    我怎样才能在 Scala XML 中制作这个最小的 HTML5 p p 当然 在 Scala 中制作类似 HTML 的 XML 很简单 gt val html p p html scala xml Elem p p 但是 我怎样才能注入DO
  • 从数据库生成 XML 时出现 PHP 编码错误 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试获取一个简单的 PHP 服
  • w3c规范语法中的减号

    减号是什么意思 14 CharData lt lt gt lt From w3c XML 1 0 规范 https www w3 org TR REC xml dt cdsection 另外 在哪里可以找到与语法语法相关的信息 我很难找到有
  • 无法使用 android.support.v7.widget.AppCompatTextView 实例化以下类

    最近我在 android studio 的应用程序中将我的 sdk 从 25 更改为 26 我在所有 xml 中都遇到了这个奇怪的错误 目前 该错误并没有以我能看到的任何方式影响我的应用程序 但每次我必须编辑或更改 xml 中的某些内容时
  • XML 到 YAML 转换

    我怎样才能把它转换成yml
  • 在 Google 地图片段中扩充 XML 时出错

    尝试使用片段显示谷歌地图 使用了以下内容page https developers google com maps documentation android start作为教程 我收到异常 错误膨胀类片段 1 导入jar google p
  • 从 xsd 生成 cXML 类会引发错误“元素‘uri:ds:Signature’丢失。”

    我正在尝试根据 cXML 1 2 034 版本生成 cXML 类http cxml org http cxml org XSD 由 Visual Studio 转换 我将 cXML dtd 转换为 xsd 然后尝试运行 xsd exe cX
  • 如何将 XMP XML 块序列化为现有的 JPEG 图像?

    我有许多 JPEG 图像 其中包含损坏的 XMP XML 块 我可以轻松修复这些块 但我不确定如何将 固定 数据写回图像文件 我目前正在使用 JAVA 但我愿意接受任何能让这项任务变得容易的事情 这是目标关于 XMP XML 的另一个问题
  • 使用 powershell 编辑 XML

    好吧 我感觉自己像个大白痴 为了工作中的管理目的 我使用 Powershell 已经有一段时间了 也就是说 编写脚本不是我的强项 现在 我正在尝试编写一个 PS 脚本 将一个部分添加到一堆机器上的 XML 中 以添加设置来解决我们在某个应用
  • 如何在 Perl 中发送此 SOAP XML?

    我必须发送下面的 XML 我有no idea从哪儿开始 我知道我需要在 Perl 中查找 SOAP 但大致就是这样
  • “序言中不允许有内容”错误,但 XML 声明之前没有任何内容

    首先我已经详尽地检查了以下问题 这个问题似乎不是同一件事 SAXParseException 序言中不允许有内容 https stackoverflow com q 20551572 1571426 org xml sax SAXParse
  • 如何向开关对象添加/更改波纹效果

    下面是我自定义的开关 红圈是默认的波纹效果 我发现设置一个波纹可绘制作为开关的背景 控制波纹的颜色
  • 如何修改我的设置以允许 VS2010 从“未经授权的区域”加载第 3 方 XSD 文件?

    我在 Visual Studio 2010 中打开了第 3 方 XSD 文件 该文件从同一第 3 方的其他架构文件导入命名空间 在架构文件的 XML 编辑器视图中 xs import 元素带有下划线 并显示以下错误 请求类型为 System
  • 如何重命名序列化对象列表后生成的 XML 属性

    我正在序列化对象列表List
  • 如何使用SAXReader解析GPX文件?

    我正在尝试解析GPX file http en wikipedia org wiki GPS eXchange Format 我用 JDOM 尝试过 但效果不太好 SAXBuilder builder new SAXBuilder Docu
  • 创建自定义弹出对话框菜单

    我目前正在尝试在单击菜单按钮时实现弹出菜单 如下图所示 我尝试了 popupwindow 方法 但无法实现确切的情况 这就是我正在尝试的方式 private View OnClickListener showPopupWindow retu
  • powershell xml排序节点和替换子节点

    我正在尝试使用 powershell 和 xml 做一些非常简单的事情 但没有遇到任何麻烦 基本上我试图采用以下 xml 并按名称对机器元素进行排序 然后将它们放回到 XML 中 以便我可以保存回文件中 如果输出 new 对象 排序似乎有效
  • 如何仅从 XML 生成 JAXB 类

    我需要从不提供架构的 xml 生成类 我知道这几乎没有用 但事实是我们有 xml 它是结构化的 我们应该能够从 xml 创建模型 过去我都是手工完成的 但是当前我正在使用的 xml 文档非常大 我的时间可能会更好地花在构建满足我需要的东西上
  • XAMARIN - 添加来自 youtube 的视频

    我搜索如何从 youtube 添加视频的信息 例如 我想从一些 YouTube 链接添加视频 我认为它应该在网络视图中 但我需要一些详细信息 因为我找不到有关我的问题的任何信息 您可以使用 webview 播放 youtube 视频 str
  • Python配置文件生成器

    我想用Python制作一个配置文件生成器 我的大致想法是使用模板文件和一些具有真实设置的 XML 文件来提供输入 然后使用程序生成真正的配置文件 例子 template file server IP serverip server name

随机推荐