Требование атрибута должно быть определено, если и только если дочерний элемент отсутствует для элемента в DTD - PullRequest
0 голосов
/ 02 ноября 2010

Рассмотрим следующее определение из DTD:

<!ELEMENT application (calculator)?>
<!ATTLIST application
        uri CDATA #REQUIRED
>

Моя проблема в том, что я хочу, чтобы атрибут uri был определен тогда и только тогда, когда нет элемента calculator.

Есть ли способ требовать этого?

1 Ответ

2 голосов
/ 03 ноября 2010

@ Алехандро прав. Это невозможно с DTD и невозможно с XML Schema . Вы можете сделать это, используя ограничение совместного вхождения со схемой RelaxNG , или вы можете использовать Schematron в сочетании с любым из этих языков схемы.

Ранее я решал подобные проблемы, используя встроенные правила схематерона со схемами (хорошее обсуждение этого вопроса с XSD на XFront и с RelaxNG на XML.com ). Недавно я делал нечто подобное в чистом RelaxNG, но тогда у вас есть схема, которая может быть выражена только в этой единственной форме.

...