XSD Применение глобальных правил - PullRequest
0 голосов
/ 25 ноября 2011

Можем ли мы иметь какое-то правило в XSD, которое гласит: Все эти элементы, имеющие ID в качестве своего атрибута, должны рассматривать его как уникальный ID, чтобы другие элементы не использовали этот ID. Как применить это как getElementById ("id") работает только после этого.

Спасибо

1 Ответ

1 голос
/ 25 ноября 2011

Если у вас есть только цифры для вашего идентификатора, вы не можете использовать 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] для ограничения идентичности "attritemIdentifier" элемента "root"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...