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.

Другие вопросы по тегам