xml - XSD:使用互斥标签
问题描述
我正在编写一个 .xsd 文件并在 .xml 中有一个类似于以下内容的部分
<time start="2006-10-02T09:15:26.43Z" />
-或者-
<time end="2006-10-02T09:15:26.43Z" />
我最初的研究使我在 XSD 中使用标签,就像这样
<xs:element name="time">
<xs:complexType>
<xs:choice>
<xs:element name="start">
<xs:simpleType>
<xs:restriction base="xs:dateTime">
<xs:pattern value=".*Z" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="end">
<xs:simpleType>
<xs:restriction base="xs:dateTime">
<xs:pattern value=".*Z" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
当我根据已知物品检查我的 XSD 时,我收到错误消息“属性 'start' 不允许出现在元素 'time' 中。
知道我哪里出错了吗?
编辑:显然我使用 1.0 很重要,因为这意味着我无法访问断言。
解决方案
在您的实例文档中,start
和end
是属性,但您已在架构中将它们声明为元素。它们需要使用xs:attribute
.
在 XSD 1.0 中,您可以声明两个可选属性,但不能声明它们是互斥的。为此,您需要 XSD 1.1 和xs:assert
.
推荐阅读
- javascript - Javascript XMLHttpRequest PHP 返回“未定义”
- angular - 检测 Angular 应用程序中缺失的增强导入
- c# - 如何从 Windows 窗体中的另一个类修改 PictureBox?C#
- javascript - 我已经从 javascript 将表格附加到 html 中,但现在我想通过传递它们的 id 从字体真棒图标调用 onclick 函数
- oauth-2.0 - oauth 2.0 - Resource owner password flow, can use windows login user credentials
- r - 在 Tidyverse 管道中使用汇总值进行归一化
- c# - wpf 列表框绑定 XElement 未更新
- android - TouchableOpacity onPress 在 Android 上不起作用
- max - 最大运费 prestashop 1.7
- phpstorm - Why is yarn not found as a package manager in PhpStorm?