繁体   English   中英

带有枚举和子元素的XML Schema(XSD)元素

[英]XML Schema (XSD) element with enumeration and child element

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

XML元素可以同时包含文本和子元素吗?

我的情况:

<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>

因为值“ c”必须是subnode1

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

不,XSD 1.0不支持此功能。 如果元素允许混合的内容(即文本和元素子元素),则没有办法约束文本。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM