当前位置: 首页 > 知识库问答 >
问题:

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

怀浩大
2023-03-14

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

XML元素能否同时包含文本和子元素?

我的案例:

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

我正在尝试编写xml模式(XSD)来验证格式。所需元素node1的文本有三个限制值。当文本的值等于“c”时,它还将包含一个子节点1。

例如,模式将通过以下情况:

<node1>a</node1>

<node1>b</node1>

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

但无论如何,它不会通过:

<node1>d</node1>

<node1>c</node1>

因为子节点1对于值“c”是必需的

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

共有1个答案

年业
2023-03-14

不,XSD1.0不支持这个。如果元素允许混合内容(即文本和元素子元素),则无法约束文本。

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

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

 类似资料:
  • 我必须用以下xml为系统编写XSD 属性元素可以有多个枚举,每个不同的枚举可以有不同的数据类型 是否可以设置XSD限制/方面,以便 Name="Date"属性强制执行日期/时间格式 Name="Name"的属性强制执行字符串 非常感谢。

  • 问题内容: 我正在使用Java,我创建了一个枚举,如下所示: 上面的示例在以元素名称(即北美)使用空格时给出了错误。有什么建议可以解决上述问题吗? 问题答案: 您不能在标识符中间放置空格。 这样做结束了标识符,并且解析器假定接下来要执行的操作是该语句上下文中的有效令牌。很少(如果有)合法的地方。 常规的Java值名称为: 一个可以具有相关属性,如人类可读的名称,例如, 我对用于提供表示层表示形式有

  • 我在python上有一个元素列表,我可以在index.html页面上以下拉列表的形式获得它,并将一个选定的值发送到另一个页面进行处理。问题是如何选择列表中的多个元素。我的意思是只有几个没有或库的元素?

  • 我对XML非常陌生,我面临验证问题,如果我的XML和XSD文件结构良好,我也希望得到一些反馈。 在根据XSD验证XML时,我经常遇到错误- 我正在windows上使用程序XML复制编辑器。我还针对XSD尝试了一个在线验证器XML,但出现了这个错误。https://www.freeformatter.com/xml-validator-xsd.html I get error Src resolve

  • 问题内容: 我试图生成以下格式的xml: 我的查询如下: 我的查询没有完全产生记录标签,目前是 应该是 我尝试了所有可能性,但没有获得标签。谁能帮我解决这个问题。 问题答案: 我无法从xml显式获得预期的输出,相反,我使用了xml路径并获得了输出。这是我更新的查询 欢迎您发布明确使用xml的修复程序。

  • 我需要检测枚举中的错误。 这是我用枚举验证XML和XSD的代码,但我得到了很多错误。有人能给我一些关于错误消息(由java程序打印)的反馈吗? 这是我正在验证的文件 这是我的模式 Java程序 这些是我犯的错误 线程“main”组织中出现异常。xml。萨克斯。SAXParseException:cvc elt。1: 找不到元素“person”的声明。在com。太阳组织。阿帕奇。xerces。内部的