我是XML架构定义的新手。请查看我的XSD:
Author.xsd:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified"
targetNamespace="http://NamespaceTest.com/AuthorType"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element id="author" name="author" type="AuthorType"/>
<xs:complexType name="AuthorType">
<xs:complexContent>
<xs:extension base="PersonType">
<xs:sequence>
</xs:sequence>
<xs:attribute name="id" type="xs:int" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
Book.xsd:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified"
targetNamespace="http://NamespaceTest.com/BookType"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="http://NamespaceTest.com/AuthorType"/>
<xs:include schemaLocation="http://NamespaceTest.com/ReaderType"/>
<xs:complexType name="BookType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="date" type="xs:string"/>
<xs:element name="author" type="AuthorType" />
<xs:element name="reader" type="ReaderType"/>
</xs:sequence>
<xs:attribute name="id" type="xs:int"/>
</xs:complexType>
</xs:schema>
在BookType
中,我想要作者id
和读者id
。在这种状态下,当我仅需要它们的ID时,我会提供完整的author
和reader
详细信息。
答案 0 :(得分:0)
它有助于查看XML级别。
当前,您通过在book
元素中包含一个author
元素来将author
与book
进行关联:
<book>
<name>John</name>
<date>2018-07-12</date>
<author id="a1">
<!-- author elements -->
</author>
</book>
相反,您只想通过其ID引用author
:
<book>
<name>John</name>
<date>2018-07-12</date>
<author idref="a1"/>
</book>
这是基本XML标识符和标识符引用(在XSD中:xs:ID
和xs:IDREF
)支持的方案。将您的id
属性更改为xs:ID
类型,并将您的引荐属性更改为xs:IDREF
类型。
注释:
xs:type
或xs:token
作为ID并强制执行
通过xs:unique
来实现唯一性。xs:key
/ xs:keyref
作为身份参考的一种更灵活的选择,
传统的XML / DTD id
/ idref
机制。