XSD应用全局规则

时间:2011-11-25 12:05:03

标签: xsd

我们可以在XSD中有一些规则说:所有那些以ID作为属性的元素都应该将其视为唯一ID,以便其他元素不应该使用该ID。 如何应用它作为getElementById(“id”)仅适用于此之后。

由于

1 个答案:

答案 0 :(得分:1)

如果您的标识符只有数字,则不能使用xs:id。 然后是一个示例模式:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="root" type="rootType">
        <xs:key name="attritemIdentifier">
            <xs:selector xpath="item"/>
            <xs:field xpath="@XYZ"/>
        </xs:key>
    </xs:element>
    <xs:complexType name="rootType">
        <xs:sequence>
            <xs:element name="item" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:string">
                            <xs:attribute name="XYZ" type="xs:string"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

这是一个有效的实例:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <item XYZ="12345">item0</item>
    <item XYZ="XYZ1">item1</item>
    <item XYZ="XYZ2">item2</item>
    <item XYZ="XYZ3">item3</item>
    <item XYZ="XYZ4">item4</item>
    <item XYZ="XYZ5">item5</item>
    <item XYZ="XYZ9">item6</item>
    <item XYZ="XYZ7">item7</item>
</root>

只要您必须使用相同的值属性XYZ,您将收到以下错误:

  

cvc-identity-constraint.4.2.2:声明的重复键值[XYZ9]   对于元素“root”的身份约束“attritemIdentifier”