Порядок последовательности элементов с разным количеством элементов в типе документа - PullRequest
1 голос
/ 13 января 2011

Я создаю doctype для файлов XML, с которыми я работаю, чтобы упростить их проверку. Тем не менее, я хотел бы выразить что-то, и я не знаю, как.

У меня есть <test> элементов. Эти элементы могут иметь до одного тега <description>, но должны иметь 1+ <node> дочерний элемент и любое количество тегов <argument>. Однако я бы хотел, чтобы можно было указывать их в произвольном порядке. Например, этот фрагмент:

<test>
    <node>foo</node>
    <argument>baz</argument>
    <description>bar</description>
</test>

должно быть действительным <test> представлением.

Первый очевидный ответ, который мне пришёл в голову, был такой:

<!ELEMENT test (description?, node+, argument*)>

но я понимаю, что оператор запятой потребует, чтобы элементы присутствовали в точном порядке, в котором они указаны .

Как я могу создать тип документа, который не будет соответствовать этому требованию?

Ответы [ 2 ]

2 голосов
/ 13 января 2011

Вот почему DTD был отменен в пользу XML-схемы - DTD недостаточно выразителен, даже для простых случаев, подобных этому.

Я настоятельно рекомендую вам забыть DTD и использовать схему.

1 голос
/ 13 января 2011

Используйте RELAX NG вместо DTD.

...