как добавить элемент DTD, если я не знаю дочерние элементы - PullRequest
1 голос
/ 27 июня 2011

Мне нужно проверить XML-файлы по DTD.

Иногда дочерних элементов может быть больше, и я не знаю, какие дочерние элементы появятся в следующий раз, я попробовал следующее:

<!ELEMENT Story (StoryPara+ , ANY+)+>

но это не сработало, как проверить какие-либо дочерние элементы с использованием DTD?

1 Ответ

1 голос
/ 27 июня 2011

Вы не можете смешивать «ЛЮБОЕ» с чем-либо еще в вашей модели контента. (Вы бы использовали его так же, как вы использовали бы «ПУСТО».)

То, что говорит ваша текущая декларация элемента: как минимум одно вхождение: один или несколько элементов "StoryPara", за которыми следует один или несколько элементов "ЛЮБОЙ"

Измените объявление элемента следующим образом:

<!ELEMENT Story ANY>

Обратите внимание, что любой дочерний элемент «Истории» также должен быть определен.

Например, это действительно:

<?xml version="1.0"?>
<!DOCTYPE test [
<!ELEMENT test ANY>
<!ELEMENT foo (#PCDATA)>
]>
<test>
  <foo>This element is defined.</foo>
</test>

но это не потому, что "bar" не определен:

<?xml version="1.0"?>
<!DOCTYPE test [
<!ELEMENT test ANY>
<!ELEMENT foo (#PCDATA)>
]>
<test>
  <foo>This element is defined.</foo>
  <bar>This element is not defined.</bar>
</test>
...