我正在尝试为
XML文档创建DTD.该文件有两个孩子 – 一个包含结构化数据,另一个包含非结构化数据;
- <doc>
- <structured>
- <foo x="9"/>
- <foo x="4"/>
- </structured>
- <unstructured>
- <hello/>
- <world x="2">
- <hi msg="something"/>
- <anything/>
- </world>
- </unstructured>
- </doc>
我想为上面的XML创建一个DTD,允许< unstructured>元素包含任何有效的XML.我试过这个DTD;
- <!ELEMENT doc (structured,unstructured)
- <!ELEMENT structured (foo*)
- <!ELEMENT foo EMPTY>
- <!ATTLIST foo x CDATA #required>
- <!ELEMENT unstructured ANY>
但错误是这样产生的;
- No declaration for element hello
- No declaration for element world
..等等
我想允许< unstructured>包含任何有效的XML.在DTD中是否有一种方法允许指定的元素包含任何可解析的XML?
我正在使用PHP 5.3 DOMDocument :: validate.
不,那里没有.
通过使用ANY关键字,您可以接近DTD.但是ANY匹配#PCDATA和DTD中声明的每个元素的混合.它不接受未申报的要素; DTD没有太多部分有效性的概念.
这是在XSD中引入通配符的激励用例之一,可以选择要求对匹配元素进行严格,宽松或跳过处理.