长篇小说:我想知道如何使用XSD的key / keyref来让元素相互引用。它必须有一个例子,使用一个简单的xsd和一个XML的形式。
长篇故事:我熟悉ID / IDREF的使用。我使用那些连接JAXB的元素。我已经被告知,XSD中的key / keyref构造提高了元素间引用的灵活性。我已经咨询了OReilly XML Schema book,这似乎教会了关于key / keyref的正确定义的一切,以及它与ID / IDREF(但是更好)类似,并没有给出一个简单的使用示例。它似乎并不相似,因为您将ID定义为一个元素中的属性,另一个元素中的IDREF定义为瞧。但是key / keyref必须在引用和引用元素(AFAIK)的共同祖先中定义…
我已经搜索了how-tos,教程和例子,但是google给我留下了遗憾。对于SO搜索(也与谷歌和包容性搜索与”)相同。
为了让每个人的生活变得更轻松,我已经准备好了一个已经定义好的key / keyref对的XSD,我已经明白了。
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root"> <xs:complexType> <xs:sequence> <xs:element name="referenced"> <xs:complexType> <xs:attribute name="id" type="xs:string" /> </xs:complexType> </xs:element> <xs:element name="owner"> <xs:complexType> <xs:attribute name="id" type="xs:string" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:key name="aKey"> <xs:selector xpath="owner" /> <xs:field xpath="@id" /> </xs:key> <xs:keyref name="aKeyRef" refer="aKey"> <xs:selector xpath="referenced" /> <xs:field xpath="@id" /> </xs:keyref> </xs:element>
一个XML的样子如何,引用“引用”元素的“所有者”元素?
编辑:应用由Tom W提出的更改,将关键元素的xpath属性更改为“owner”。 JAXB(XJC)仍然不在乎。
谢谢