xml dtd или xml элементы схемы с другим атрибутом - PullRequest
0 голосов
/ 31 января 2020

Мне нужно создать DTD или XMLSchema. Как связать элементы collection@key= "role" с collection@key= "t ie"? Возможно ли это или их нужно делать в разных элементах?

У меня есть XML

    <!DOCTYPE schema [
<!ELEMENT schema (collection+, part+)>
<!ELEMENT collection[key=role] (name, partref+)>
<!ATTLIST collection[key=role] collection-id ID #REQUIRED
key CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT partref EMPTY>
<!ATTLIST partref refid IDREF #REQUIRED>
<!ELEMENT collection[key=tie] (name)>
<!ATTLIST collection[key=tie] part-id ID #REQUIRED>
]>

<schema>
    <collection collection-id="C28392-33-TT"  key="role">
        <name>Turnip Twaddler</name>
        <partref refid="P81952-26-PK"/>
        <partref refid="P86679-52-SP"/>
        <partref refid="P81472-68-FD"/>
        <partref refid="P88107-39-GT"/>
    </collection>

    <collection collection-id="C28772-63-OB" key="role">
        <name>Olive Bruiser</name>
        <partref refid="P80228-21-PT"/>
        <partref refid="P82387-85-PA"/>
    </collection>
    <part part-id="P80228-21-PT">
        <name>Pitter</name>
    </part>

    <collection part-id="P86994-25-RC" key="tie">
        <name>Ribbon Curler</name>
    </collection>
</schema>

1 Ответ

0 голосов
/ 31 января 2020

В DTD вы можете определить атрибут как ID, а другой как IDREF; Значения идентификатора должны быть уникальными в документе, а значения IDREF должны «указывать» на идентификатор, существующий в документе.

Но у вас не может быть двух разных моделей содержимого для одного и того же имени элемента, поэтому тип атрибута не может зависеть от того, где он появляется.

В XSD вы МОЖЕТЕ иметь две разные модели содержимого для одного и того же имени элемента, определяя объявления локальных элементов; но вы не можете сделать это, если они появляются как братья и сестры (потомки одного и того же родительского элемента).

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