XML Schema - 类型的元素" list"作为IDREFS

时间:2016-11-04 17:41:43

标签: xml list schema idref keyref

我想使用key和keyref创建一个引用列表(比如IDREFS类型的元素),这样我列表中的每个项目(下面的例子中的链接)都引用了链接的属性@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 个答案:

答案 0 :(得分:0)

不,使用key和keyref是不可能的。您需要使用XSD 1.1断言。