2011-06-27 149 views
1

我需要根據DTD驗證xml文件。如何添加DTD元素如果我不知道子元素

有時子元素可以更加,我不知道下一次會拿出什麼樣的子元素,我試過如下:

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

但這並沒有工作,如何驗證所有子元素使用DTD?

回答

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> 

但這不是因爲沒有定義 「欄中的」:

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