【发布时间】:2011-06-27 06:37:29
【问题描述】:
我需要根据 DTD 验证 xml 文件。
有时候子元素会比较多,不知道下次会出现什么子元素,我尝试了以下方法:
<!ELEMENT Story (StoryPara+ , ANY+)+>
但这不起作用,如何使用 DTD 验证任何子元素?
【问题讨论】:
标签: xml validation dtd
我需要根据 DTD 验证 xml 文件。
有时候子元素会比较多,不知道下次会出现什么子元素,我尝试了以下方法:
<!ELEMENT Story (StoryPara+ , ANY+)+>
但这不起作用,如何使用 DTD 验证任何子元素?
【问题讨论】:
标签: xml validation dtd
您不能在内容模型中将“ANY”与其他任何内容混合使用。 (你可以像使用“EMPTY”一样使用它。)
您当前的元素声明是:至少出现一次:一个或多个“StoryPara”元素后跟一个或多个“ANY”元素
将您的元素声明更改为:
<!ELEMENT Story ANY>
请注意,还必须定义“Story”的任何子级。
例如,这是有效的:
<?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>
【讨论】: