2011-06-02 56 views
3

比方說,我有以下XML:如何在DTD中定義具有不同父元素的同名元素?

<data> 
    <authors> 
    <author> 
     <name> 
     <first_name>Stephen</first_name> 
     <last_name>Baxter</last_name> 
     </name> 
    </author> 
    <author> 
     <name> 
     <first_name>Joe</first_name> 
     <last_name>Haldeman</last_name> 
     </name> 
    <author> 
    </authors> 
    <books> 
    <book> 
     <name>The Time Ships</name> 
    </book> 
    <book> 
     <name>The Forever War</name> 
    <book> 
    </books> 
</data> 

在我的DTD,我怎麼會考慮的「名稱」元素用於作者和書籍,可以有不同的子元素的事實 - 像這個?

<!ELEMENT name (#PCDATA|first_name,last_name)> 

回答

4

由於您的name元素混合內容(子元素或#PCDATA),你將有你的元素聲明改成這樣:

<!ELEMENT name (#PCDATA|first_name|last_name)*> 

這意味着,你會必須使用除DTD以外的內容來強制執行name包含#PCDATA一個first_name後跟一個last_name

相關問題