0

我想使用 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>

可能吗?

4

1 回答 1

0

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

于 2016-11-04T21:39:14.110 回答