【问题标题】:XML Schema (XSD) element with enumeration and child element具有枚举和子元素的 XML Schema (XSD) 元素
【发布时间】:2014-09-08 22:16:29
【问题描述】:

我正在尝试编写用于 XML 检查的 XML Schema (XSD)。有一个包含枚举值和子元素的元素。它的格式很奇怪,但被 xml 接受。

Can a XML element contain text and child elements at the same time?

我的情况:

<tree>
    <node> enumeration Text (Text only allows "a", "b" and "c")
        <subnode1 attribute1="xx"> optional text1 </subnode1>
    </node1>
</tree>

我正在尝试编写 xml 架构 (XSD) 来验证格式。所需元素 node1 具有具有三个受限值的 Text。当 text 的值等于“c”时,它还会在其中包含一个 subnode1。

例如,架构会通过以下情况:

<node1>a</node1>

<node1>b</node1>

<node1>c
    <subnode1 attribute1="1">what ever you what</subnode1>
</node1>

但是,它不会通过:

<node1>d</node1>

<node1>c</node1>

因为 subnode1 是值“c”所必需的

如何编写带有枚举和子元素的 XML Schema 元素?

【问题讨论】:

  • 你的问题是什么,你的 xsd 在哪里?
  • 抱歉描述不清楚。我的问题是如何实现给定 xml 的架构及其要求。

标签: xml xsd schema enumeration


【解决方案1】:

不,XSD 1.0 不支持这一点。如果元素允许混合内容(即文本和元素子元素),则无法限制文本。

在 XSD 1.1 中,您可以使用断言来定义约束。

XSD 有点家长式:它试图支持验证它认为人们应该设计的那种 XML。它认为(与 XSLT 一样)混合内容是为了启用标记的叙述文本,例如,其中一些单词被标记为粗体或斜体的段落。您的结构不适合此模型:设计 XML 结构的“认可”方法是将枚举值放入属性中。 (即便如此,您仍需要 XSD 1.1 条件类型分配以使元素内容的类型取决于其属性的值)。

【讨论】:

  • “UNION”可以工作吗?我的意思是将Node分成两部分并分别限制它们?
  • 不,你不能限制混合内容的文本部分。
猜你喜欢
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多