XML XSD模式 – 在模式中强制实施唯一的属性值
发布时间:2020-12-16 08:09:29 所属栏目:百科 来源:网络整理
导读:假设我有一个定义以下XML的模式: Values Add Key="Key1"Value 1/Add Add Key="Key2"Value 2/Add Add Key="Key3"Value 3/Add Add Key="Key4"Value 4/Add/Values 我想在模式级别能够强制Key属性的值是唯一的,即上面的例子是有效的,但是下面的例子将是无效的
假设我有一个定义以下XML的模式:
<Values> <Add Key="Key1">Value 1</Add> <Add Key="Key2">Value 2</Add> <Add Key="Key3">Value 3</Add> <Add Key="Key4">Value 4</Add> </Values> 我想在模式级别能够强制Key属性的值是唯一的,即上面的例子是有效的,但是下面的例子将是无效的: <Values> <Add Key="Key1">Value 1</Add> <Add Key="Key2">Value 2</Add> <Add Key="Key2">Value 3</Add> <Add Key="Key3">Value 4</Add> </Values> 请注意,有一个Key为Key2的两个Add元素 这里的参考是简单的模式: <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="Values"> <xs:complexType> <xs:sequence> <xs:element name="Add" maxOccurs="unbounded"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Key" type="xs:token" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 我的印象是,这是不可能在架构级别,但我都是耳朵。
@BatteryBackupUnit有正确的想法,但语法更像:
<xs:element name="Values"> <xs:complexType> <xs:sequence> <xs:element ref="Add" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:unique name="UniqueAddKey"> <xs:selector xpath="Add" /> <xs:field xpath="@Key" /> </xs:unique> </xs:element> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 字符串 – DASM汇编程序中的ASCII到C64屏幕代码
- ruby-on-rails – 如何为wrap_parameters添加额外的虚拟属性
- 如何在ncurses中重新定义颜色对?
- swift闭包的使用 -- 类似于OC中的Block
- ruby-on-rails – 找不到带有’id’= all,Search Form的列表
- dojo小例子(13)给Select指定id及label
- c# – Reactive Extensions SelectMany包含大对象
- Cocos2d-x游戏开发贪吃蛇小游戏(1)环境的搭建
- ios – xcodebuild -exportArchive:key“method”的export
- c# – LINQ外连接有重复