使用DTD,是否可以声明允许任何XML内容的元素?

Nig*_*ton 6 xml validation dtd

我正在尝试为XML文档创建DTD.该文件有两个孩子 - 一个包含结构化数据,另一个包含非结构化数据;

<doc>
  <structured>
    <foo x="9"/>
    <foo x="4"/>
  </structured>
  <unstructured>
    <hello/>
    <world x="2">
      <hi msg="something"/>
      <anything/>
    </world>
  </unstructured>
</doc>
Run Code Online (Sandbox Code Playgroud)

我想为上面的XML创建一个DTD,允许该<unstructured>元素包含任何有效的XML.我试过这个DTD;

<!ELEMENT doc (structured,unstructured)
<!ELEMENT structured (foo*)
<!ELEMENT foo EMPTY>
<!ATTLIST foo x CDATA #REQUIRED>
<!ELEMENT unstructured ANY>
Run Code Online (Sandbox Code Playgroud)

但错误是这样产生的;

No declaration for element hello
No declaration for element world
Run Code Online (Sandbox Code Playgroud)

..等等

我想允许<unstructured>包含任何有效的XML.在DTD中是否有一种方法允许指定的元素包含任何可解析的XML?

我正在使用PHP 5.3 DOMDocument :: validate.

C. *_*een 5

不,那里没有.

通过使用ANY关键字,您可以接近DTD .但ANY匹配#PCDATA和DTD中声明的每个元素的混合.它不接受未申报的要素; DTD没有太多部分有效性的概念.

这是在XSD中引入通配符的激励用例之一,可以选择要求对匹配元素进行严格,宽松或跳过处理.