在下面显示的XML中,是否有办法创建一个描述XML的模式,以便在添加每个Book节点时id值将增加1。目标是使用id作为其最小值= 1的主键。此外,id值应以升序方式排序。
<Books>
<Book id="1"></Book>
<Book id="2"></Book>
<Book id="3"></Book>
<Book id="4"></Book>
...
</Books>
答案 0 :(得分:1)
否。你不能在xsd中做到这一点。
xsd定义xml架构而不是xml数据。您将需要在解析xml数据的代码中执行此操作。
答案 1 :(得分:1)
我认为你能得到的最接近的是:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="Books">
<xs:complexType>
<xs:sequence>
<xs:element name="Book">
<xs:complexType>
<xs:attribute name="id" type="id_type" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:key name="PK_BookID">
<xs:selector xpath="Books/Book" />
<xs:field xpath="@id" />
</xs:key>
<xs:unique name="BookIdUnique">
<xs:selector xpath="Books/Book" />
<xs:field xpath="@id" />
</xs:unique>
</xs:element>
<xs:simpleType name="id_type">
<xs:restriction base="xs:integer">
<xs:minInclusive value="1" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
我想不出任何方法来强制排序和没有间隙的id序列但是因为这个.__ curious_geek已经声明XSD不适用于此。