我正在尝试编写用于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。当文本的值等于&#34; c&#34;时,它还将在其中包含一个子节点。
例如,架构将通过以下情况:
<node1>a</node1>
或
<node1>b</node1>
或
<node1>c
<subnode1 attribute1="1">what ever you what</subnode1>
</node1>
然而,它没有通过:
<node1>d</node1>
或
<node1>c</node1>
因为subnode1是值&#34; c&#34;
的必要条件如何使用枚举和子元素编写XML Schema元素?
答案 0 :(得分:1)
不,XSD 1.0不支持此功能。如果元素允许混合内容(即文本和元素子元素),则无法约束文本。
在XSD 1.1中,您可以使用断言定义约束。
XSD有点家长式:它试图支持它认为人们应该设计的那种XML的验证。它需要一个视图(就像XSLT一样),混合内容可用于启用标记的叙述文本,例如某些单词被标记为粗体或斜体的段落。你的结构不适合这种模式:&#34;批准&#34;设计XML结构的方法是将枚举值放在属性中。 (即使这样,您还需要XSD 1.1条件类型赋值,以使元素的内容类型取决于其属性的值)。