应用全局规则的XSD

应用全局规则的XSD,xsd,Xsd,我们可以在XSD中有一些规则吗?它说:所有那些以ID作为属性的元素都应该将其视为唯一ID,以便其他元素不应该使用该ID。 如何将其应用为getElementById(“id”)仅在这之后有效 谢谢如果您的标识符只有数字,则不能使用xs:id。 下面是一个示例模式: <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name=

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


谢谢

如果您的标识符只有数字,则不能使用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>

项目0
项目1
项目2
项目3
项目4
项目5
项目6
项目7
一旦必须使用相同的值来属性XYZ,就会出现以下错误:

cvc标识约束。4.2.2:声明了重复的键值[XYZ9] 对于元素“根”的标识约束“attritemIdentifier”


您必须使用xs:key元素。请参阅:当我使用xsd:ID时,获取此错误-->attribucvc数据类型有效。1.2.1:“41537”不是“NCName.te”的有效值。它给了我一些奇怪的错误:关于xsd:id,这个类型必须是一个NCName,因此不能以数字开头。这是一个奇怪的类型。但我的ID是字符串,但我仍然得到这个错误。你能给一个模式样本。我可以帮助您解决这个xs:key问题。它不需要使用xs:idi如果我希望我的任何元素都有ID属性,那么它应该是xsd:ID类型,那么我该怎么做呢?我的ID将始终是字母数字的。您可以使用ID作为属性的名称,但只要以数字开头,就不能使用xs:ID类型。您可以这样替换我的模式中的属性:exaclty…我在XSD中使用上面的“”,因此默认情况下它应该用作唯一ID…但是我不能在XML文档中使用getElementById,它正在返回null..可能是bcoz我有一些ID具有重复的值…但我在代码中没有收到任何验证错误。除非在架构中如上所述指定xs:key机制,否则不会有任何验证错误。该属性的名称不足以说明该值必须是唯一的。能否为其指定适用于xml文档中所有元素且特定于xs:key msdn的上述xs:key