XML Schema - элемент типа "список" в качестве IDREFS
Я хотел бы создать список ссылок (например, элемент типа IDREFS), используя key и keyref, чтобы каждый элемент в моем списке (ссылки в примере ниже) ссылался на атрибут @name ссылки.
Код ниже не работает, но я хотел бы написать что-то вроде этого:
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="Node">
<xs:complexType>
<xs:sequence>
<xs:element name="Links">
<xs:simpleType>
<xs:list itemType="xs:string" />
</xs:simpleType>
<xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Link">
<xs:complexType>
<xs:attribute type="xs:string" name="name" use="required" />
<xs:attribute type="xs:string" name="source" use="required" />
<xs:attribute type="xs:string" name="destination" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:key name="LinkKey">
<xs:selector xpath="Link" />
<xs:field xpath="@name" />
</xs:key>
<xs:keyref name="LinkRef" refer="LinkKey">
<xs:selector xpath="Node" />
<xs:field xpath="Links" />
</xs:keyref>
<xs:element>
вместо:
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="Node">
<xs:complexType>
<xs:sequence>
<xs:element name="Links" type:"xs:IDREFS" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Link">
<xs:complexType>
<xs:attribute type="xs:ID" name="name" use="required" />
<xs:attribute type="xs:string" name="source" use="required" />
<xs:attribute type="xs:string" name="destination" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element>
Является ли это возможным?
1 ответ
Нет, это невозможно с помощью key и keyref. Вам нужно будет использовать утверждения XSD 1.1.