2017-05-28 62 views
0

我得到標記聲明的錯誤在atlist報關行下面的XML文件中:我的XML文件和內部DTD子集有什麼問題?

<?xml encoding="UTF-8"?> 
<!ELEMENT catalog (title,(plant)+)> 
<!ELEMENT title (#PCDATA)> 
<!ELEMENT plant ((name)+,(climate)+,(height)+,(usage)+,(image)+)> 
<!ELEMENT name (#PCDATA)> 
<!ELEMENT climate (#PCDATA)> 
<!ELEMENT height (#PCDATA)> 
<!ELEMENT usage (#PCDATA)> 
<!ELEMENT image (#PCDATA)> 
<!ATLIST plant id CDATA #REQUIRED> 

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE catalog SYSTEM "plantdtd.dtd"> 

<catalog> 

<title>Flowers of the week</title> 

<plant id="A1"> 

    <name>Aloe vera</name> 

    <climate>tropical</climate> 

    <height>60-100cm</height> 

    <usage>medicinal</usage> 

    <image>aloevera.jpg</image> 

</plant> 

<plant id="A2"> 

    <name>Orchidaceae</name> 

    <height>8-12in</height> 

    <usage>medicinal</usage> 

    <usage>decoration</usage> 

    <image>Orchidaceae.jpg</image> 

</plant> 

</catalog> 

什麼是錯我的XML文檔?

+0

@Vijay:肯白是正確的,你真的應該實際上提出一個問題。我這次爲你解決了這個問題,並提供了[answer](https://stackoverflow.com/a/44223748/290085)。希望我已經正確地解釋你的意圖;如果沒有,請[編輯]你的問題並調整。 – kjhughes

回答

0

你的XML文檔都well-formedness and validity problems ...

問題防止您的XML文檔被合式,包括:

  • 有內部DTD子集的語法不正確構造。
  • 有多個XML聲明。
  • ATLIST應該ATTLIST

問題防止您的XML文檔被有效

  • A2plant必須有至少一個climate子元素。

下面的XML被校正爲良好和有效

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE catalog [ 
<!ELEMENT catalog (title,(plant)+)> 
<!ELEMENT title (#PCDATA)> 
<!ELEMENT plant ((name)+,(climate)+,(height)+,(usage)+,(image)+)> 
<!ELEMENT name (#PCDATA)> 
<!ELEMENT climate (#PCDATA)> 
<!ELEMENT height (#PCDATA)> 
<!ELEMENT usage (#PCDATA)> 
<!ELEMENT image (#PCDATA)> 
<!ATTLIST plant id CDATA #REQUIRED> 
]> 

<catalog> 
    <title>Flowers of the week</title> 
    <plant id="A1"> 
    <name>Aloe vera</name> 
    <climate>tropical</climate> 
    <height>60-100cm</height> 
    <usage>medicinal</usage> 
    <image>aloevera.jpg</image> 
    </plant> 
    <plant id="A2"> 
    <name>Orchidaceae</name> 
    <climate/> 
    <height>8-12in</height> 
    <usage>medicinal</usage> 
    <usage>decoration</usage> 
    <image>Orchidaceae.jpg</image> 
    </plant> 
</catalog> 
+0

謝謝soo !! – Vijay

0

此錯誤是由不被有效的DTD文件引起的。您已經創建包含DTD文件:

<!DOCTYPE catalog [ 
… 
]> 

只需刪除第一個和最後一行delcaring DTD的數據,因爲這些都只是你的XML文件中具有DTD時使用。應該有?在氣候上,因爲在工廠A2它不存在。

`

<?xml version="1.0" encoding="UTF-8"?> 

<!ELEMENT catalog (title,plant+)> 
<!ELEMENT title (#PCDATA)> 
<!ELEMENT plant (name,climate?,height,usage+,image)> 
<!ELEMENT name (#PCDATA)> 
<!ELEMENT climate (#PCDATA)> 
<!ELEMENT height (#PCDATA)> 
<!ELEMENT usage (#PCDATA)> 
<!ELEMENT image (#PCDATA)> 
<!ATTLIST plant id CDATA #REQUIRED> 

`