不明确的 XML 模式

2024-05-09

我正在尝试为 XML 生成一个非常简单的 XML 架构,类似于以下内容:

<messages>
  <item>
    <important_tag></important_tag>
  </item>
  <item>
    <important_tag></important_tag>
    <tag2></tag2>
  </item>
  <item>
    <tag2></tag2>
    <tag3></tag3>
  </item>
</messages>

这个想法是<important_tag>将有一个具体的定义,并且它可能会也可能不会出现在<item>。它也可能出现多次。 此外,之前或之后可能还有其他标签<important_tag>我无法提前命名。

我想给一个具体的定义<important_tag>。例如,定义它必须包含的属性。 我的意思是ifimportant_tag 存在它必须符合我的定义。任何其他标签不必符合任何定义。

我尝试使用以下方案:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="messages">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="item" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="item">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="important_tag" minOccurs="0"/>
        <xs:any minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="important_tag">
    <xs:complexType>
      <xs:simpleContent>
        ... specific definitions for important_tag ...
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
</xs:schema>

这会导致错误,指出架构不明确。

确切的错误消息是:

cos-nonambig: '<xs:element ref="important_tag">' makes the content model non-deterministic against '<xs:any>'. Possible causes: name equality, overlapping occurrence or substitution groups.

我正在使用 Altova XMLSpy。

我该如何解决这个问题?

谢谢, 达纳


MSDN 上有一篇很棒的文章讨论了设计可扩展模式,您可以找到here http://msdn.microsoft.com/en-us/library/ms950793.aspx,我建议您仔细阅读所有内容,但具体到您的观点,它解释了为什么您在“使用 XML 架构设计可版本化的 XML 格式”下的第 2 点中收到此错误(您可以搜索“非确定性”和直接到那里。

基本上,一旦您拥有 xs:any 元素,验证器就无法假设有关其他同级元素的任何信息,因此 - 您很可能有一个 important_tag 的定义,它不需要这些强制属性,因此无法验证这些元素

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

不明确的 XML 模式 的相关文章

随机推荐

  • 无需时间即可生成随机字符串?

    我知道如何使用 Runes 和播种 rand Init 在 go 中生成随机字符串time UnixNano 我的问题是 是否可以 使用 stdlib 在不使用当前时间戳 安全 的情况下播种 rand 此外 我问 因为仅仅依靠时间来为敏感操
  • JavaScript 右移负数

    这是片段 var i 101 console log 101 i toString 2 console log 101 gt gt 1 i gt gt 1 toString 2 var l 101 console log 101 l toS
  • 垃圾收集器不适用于 NodeJS / Chrome 中的类型化数组

    我最初将其记录为原项目中的一个问题 https github com nodejs help issues 3590 它立即转移到帮助主题 没有很好的解释 所以现在我想在这里提问 如果我们在 NodeJS v14 v16 v17 中运行以下
  • 如何动态创建 Luigi 任务

    我正在为 Luigi Tasks 构建一个包装器 但遇到了一个障碍Register http luigi readthedocs io en stable modules luigi task register html Register该
  • JQuery UI - 无法更改模态对话框中日期选择器中的月份/年份

    Using 日期选择器里面一个模态对话框 不工作更改月份 年份Firefox 19 0 2 中的下拉列表请参阅 http jsfiddle net 469zV 2 http jsfiddle net 469zV 2 HTML div tit
  • Android进程调度

    我试图更好地理解 以便在创建 Android 应用程序 服务时确定潜在的互操作性问题对可靠性的影响 我想弄清楚进程优先级是如何确定的 服务和活动之间优先级的差异以及调度程序是否以不同方式对待它们的优先级 基本上 我试图深入了解某个活动或服务
  • 制作一个固定大小的 UIView,如 UISwitch(使用 IBDesignable)

    当我使用时本指南 http iphonedev tv blog 2014 12 15 create an ibdesignable uiview subclass with code from an xib file in xcode 6要
  • 禁用 Materialise Carousel 上的触摸

    看起来以前没有人问过这个问题 因为我几乎在互联网上寻找一个非常简单的答案 如何禁用在物化轮播上向左 向右滑动的功能 在 Materialize js 添加 编辑 var allowCarouselDrag true value functi
  • 在Python中从列表中获取n个项目组的惯用方法? [复制]

    这个问题在这里已经有答案了 给定一个列表 A 1 2 3 4 5 6 是否有任何惯用的 Pythonic 方式来迭代它 就好像它是 B 1 2 3 4 5 6 除了索引之外 这感觉像是 C 的遗留物 for a1 a2 in A i A i
  • 更改 Android 中突出显示文本的颜色

    我不确定这是否可能 也许有人可以纠正我 我在 Android 应用程序中有一个 EditText 视图 该视图在蓝色背景上有白色文本 当选择文本时 通过长按和编辑对话框 我希望突出显示为白色并将文本颜色更改为黑色 令人烦恼的是 似乎没有办法
  • React + 路由器 + Google 标签管理器

    我花了一些时间在 Quickcypher com 上开发 MVP 我想开始进行一些分析 它对于跟踪总访问量非常有用 但是当我尝试跟踪使用 React Router 的网站上的不同 URL 时 情况却出问题了 我的方法是这样的 设置一个在某些
  • Android VideoView 中纵向视频方向错误

    我在 Android 设备上以肖像方向拍摄新视频 如下所示 Intent intent new Intent android provider MediaStore ACTION VIDEO CAPTURE startActivityFor
  • 启动画面后主窗口出现在其他窗口后面

    我有一个带有启动屏幕的 Windows 窗体应用程序 当我运行该应用程序时 启动屏幕显示正常 消失并加载应用程序的主窗体 但是 当我加载主窗体时 它出现在包含该应用程序的 Windows 资源管理器目录下 这是运行启动画面然后运行主窗体的代
  • firebase批量更新和onWrite触发同步

    我在同步两个 Firebase 云函数时遇到问题 第一个函数对多个文档执行批量更新 第二个函数由onWrite触发这些文档之一 为了便于说明 假设我有两个文档A and B 在两个单独的集合中 第一个云功能更新两个文档A and B有消防库
  • 按字母顺序对对象的 ArrayList 进行排序

    我必须创建一个方法来排序数组列表根据电子邮件按字母顺序排列对象 然后打印排序后的数组 我在排序时遇到麻烦的部分 我已经研究过并尝试使用Collections sort vehiclearray 但这对我不起作用 我是因为我需要一个叫做比较器
  • 在读/写二进制数据结构时访问位域

    我正在为二进制格式编写一个解析器 这种二进制格式涉及不同的表 这些表同样采用二进制格式 通常包含不同的字段大小 其中 50 100 个之间 大多数这些结构都有位域 并且在 C 语言中表示时看起来像这样 struct myHeader uns
  • 使用 Promise 语法编写同步代码有什么好处吗?

    有同步承诺这样的概念吗 使用 Promise 语法编写同步代码有什么好处吗 try foo bar a b bam catch e handleError e 可以写成类似的东西 但使用同步版本then foo then bar bind
  • 如何在 Caffe 的网络中出现多次损失?

    如果我在网络中定义多个损失层 从这些末端到网络的开头是否会发生多个反向传播 我的意思是 他们真的是这样工作的吗 假设我有这样的事情 Layer1 Layer2 Layer n Layer cls1 bottom layer n top cl
  • 为什么对gapi.client.drive.realtime.get的响应为空?

    下面是成功进行身份验证的页面 然后尝试使用drive realtime get 方法以三种方式获取现有实时文档的JSON 导出 console log 调用的结果显示在注释中 ID 为 EXISTING FILE ID 的文件存在 并且已使
  • 不明确的 XML 模式

    我正在尝试为 XML 生成一个非常简单的 XML 架构 类似于以下内容