如果我不知道子元素,如何添加DTD元素

时间:2011-06-27 06:37:30

标签: xml validation dtd

我需要针对DTD验证xml文件。

有时儿童元素会更多,我不知道下次会出现什么子元素,我尝试了以下内容:

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

但这不起作用,如何使用DTD验证任何子元素?

1 个答案:

答案 0 :(得分:1)

您不能将“ANY”与内容模型中的任何内容混合使用。 (你会像使用“EMPTY”一样使用它。)

您当前的元素声明所说的是:至少出现一次:一个或多个“StoryPara”元素后跟一个或多个“ANY”元素

将元素声明更改为:

<!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>