Ссылка на несколько идентификаторов в схеме XML (XSD) - PullRequest
3 голосов
/ 31 августа 2011

Мне было интересно, можно ли различать поля идентификатора в схеме XML.У меня следующая схема:

<element name="define_apple">
    <complexType>
        <attribute name="colour" type="ID"/>
    </complexType>
</element>

<element name="define_orange">
    <complexType>
        <attribute name="colour" type="ID"/>
    </complexType>
</element>

<element name="reference_apple">
    <complexType>
        <attribute name="colour" type="IDREF"/>
    </complexType>
</element>

<element name="reference_orange">
    <complexType>
        <attribute name="colour" type="IDREF"/>
    </complexType>
</element>

Однако ссылки не связаны однозначно с соответствующими определениями.Я все еще могу написать следующую бессмыслицу, но действительный XML:

<define_apple colour="green"/>
<define_orange colour="orange"/>

<reference_apple colour="orange"/>
<reference_orange colour="green"/>

Есть ли способ правильно связать поля, используя ID и IDREF, например, используя пространства имен?Я знаю, что мог бы просто использовать key и keyref, но идентификация мне немного более интересна.

1 Ответ

1 голос
/ 31 августа 2011

Нет, я не думаю, что это возможно.http://www.w3.org/TR/xmlschema-2/#ID и http://www.w3.org/TR/xmlschema-2/#IDREF говорят, что типы атрибутов ID и IDREF происходят из стандарта XML, а http://www.w3.org/TR/2000/WD-xml-2e-20000814#NT-TokenizedType говорит, что ограничения допустимости для IDREF соответствуют только некоторым идентификаторам в документе,Я думаю, ID и IDREF в основном в XML-схеме для обратной совместимости с DTD.

...