Объявление элемента: определение содержимого как #PCDATA и одного вхождения дочернего элемента
В спецификации xml говорится:
[Определение: тип элемента имеет смешанное содержимое, когда элементы этого типа могут содержать символьные данные, необязательно чередующиеся с дочерними элементами.] В этом случае типы дочерних элементов могут быть ограничены, но не их порядок или число вхождений
Есть ли способ обойти это, чтобы сделать этот XML действительным:
<parent>
A text node
<child/>
</parent>
но этот xml недействителен:
<parent>
A text node
<child/>
<child/>
</parent>
Кроме того, знаете ли вы причину, почему это не разрешено?
<!ELEMENT parent (#PCDATA,child)>
2 ответа
Alderath,
Вначале я не знаю, но я так не думаю, не в DTD... и, если можно так сказать, вам действительно следует использовать схемы XML (т.е. XSD) вместо DTD (они просто так 90-х годов;-).
XSD позволяют вам намного более жесткий контроль над содержимым документа, и я вполне уверен, что ограничение числа вхождений определенного дочернего элемента в сложный элемент "смешанного типа" возможно (даже легко) с использованием XSD; хотя мне никогда не приходилось (прикасаться к дереву) делать это самому... так что относитесь к этому как к ереси.
Удачи с этим.
Приветствия. Кит.
DEFINE: (a,b,c) способ выразить упорядоченный список разрешенных элементов ребенка. Вы не должны упорядочивать текстовое содержимое и некоторые элементы.
РЕШЕНИЕ: Если вы хотите, чтобы этот текст находился в любом точном месте среди некоторых дочерних элементов, оберните его в новый определенный дочерний элемент и разместите этот конкретный элемент среди других дочерних элементов.
ПОМНИТЕ: A = ЛЮБОЙ; Разрешение Текстовое содержимое (= PCDATA = строка без тегов с точки зрения DTD) обязательно разрешает ЛЮБОЙ текстовый контент.
Я верю, что я прав., ура