Некоторые руководства в Интернете утверждают, что ANY
означает завершение процесса проверки этого элемента, но это неверная информация. Модель содержимого ANY
в DTD на самом деле не означает «разрешить любой правильно сформированный XML-контент в этом элементе». Вместо этого это означает «разрешить любое содержимое, определенное в этом DTD». Это означает, что вы получите ошибку для каждого элемента, модель контента которого вы не определили (или не можете определить). Концептуально это означает то же самое, что и невозможность разрешить содержимое из другого пространства имен.
К сожалению, на данный момент я не могу вспомнить, как это сделать с помощью DTD. Однако это возможно с XML-схемами:
<xs:complexType>
<xs:sequence>
<xs:any namespace="##any" processContents="skip"/>
</xs:sequence>
</xs:complexType>
Это разрешит любые элементы из любого пространства имен и пропустит проверку для этого элемента. Если вы можете переключиться с DTD на XML-схемы, это решит вашу проблему.
Примечание о простой ошибке при использовании ANY
(Исходный постер не содержал этой ошибки, но я просто упомянул ее здесь, так как уже пишу на эту тему.)
Это это простая опечатка, но эти два не означают одно и то же:
<!ELEMENT X ANY >
<!ELEMENT X (ANY) >
Первый относится к ключевому слову модели контента ANY
, а второй означает элемент с именем «ЛЮБОЙ», и именно круглые скобки вызывают эту разницу.
person
jasso
schedule
29.08.2010