2017-05-28 2 views
0

私は、次のXMLファイルにatlist宣言ラインでマークアップ宣言エラーを取得しています:内部DTDサブセットを持つXMLファイルで何が問題になっていますか?

<?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:ケンホワイトはあなたが本当に実際に問題を提起するべきであることを右です。今回はあなたの質問を修正し、[回答](https://stackoverflow.com/a/44223748/290085)も提供しました。うまくいけば私はあなたの意図を適切に解釈しました。そうでない場合は、あなたの質問を編集して調整してください。 – kjhughes

答えて

0

あなたのXMLドキュメントには、整形されてからXMLドキュメントを防止することの両方well-formedness and validity problems ...

問題があります。

  • あり内部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

すっごくありがとう!! – Vijay

0

このエラーは、DTDファイルが有効でないことが原因です。それらがあなたのXMLファイル内のDTDを持つときに使用するだけなので、

<!DOCTYPE catalog [ 
… 
]> 

は、単にDTDデータをdelcaring最初と最後の行を削除します。あなたは含む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> 

`

関連する問題