2017-06-02 8 views
3

よく形成しなければならない私は、このXMLドキュメントがあります。マークアップ宣言は

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

を私はこのようなDTDを書いた:

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


<!DOCTYPE catalog SYSTEM "file:/home/p10398/plantdtd.dtd" 
[ 
<!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)> 
]> 

Iamはこれを取得エラー:

致命的なエラー: 公開ID:ヌル システムID:ファイル:マークアップ宣言が含まれているか、ドキュメントタイプによって 宣言がよく形成されている必要があり指さ:4 列番号:3 メッセージ 行番号を/home/p14524/plantdtd.dtd 。

誰かがこのエラーを受け取っていると説明できますか?または正しいDTD?

EDITSと更新: Ah!ダニエルありがとう。 これまでのエラーはなくなりました。 私の新しいDTDは

<!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 ID #REQUIRED> 

Iamは、この新しいエラーを取得している:

行番号:18 カラム数:9 メッセージ:要素タイプ "植物" の内容が「一致している必要があります(名前、気候、高さ、使用法、画像)」。

答えて

1

DOCTYPEをDTDから削除する必要があります。また、宣言の要素名の後ろにスペースを入れる必要があります。

新しいDTD

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

あなたのXMLの検証時に今DTDが有効であることを、あなたはいくつかのエラーが表示されます。

最初に、plant要素のid属性を宣言する必要があります。私は<!ATTLIST plant id ID #REQUIRED>を提案したいと思います。

climateが2番目のplantから欠落しています。 XMLエラーかDTDエラーかどうかはわかりません。 plantの要素宣言は意味を成していません。なぜなら、その5つの要素が1回以上その順序であるからです。あなたがその部分の助けが必要な場合は、plantに含めるべきものを記述し、正しい宣言を書くのを助けることができます。

+0

あなたは私の質問の最新の更新を確認して回答してください。 –

+0

@RaviRishie - そのエラーは私の答えの最後の段落で話していたものです。第2の '植物'は '気候'要素を持たないので '(名前、気候、高さ、使用法、イメージ)'と一致しません。その要素はオプションであるはずですか?私はそれが今2つの 'usage'要素を持っていることも見ています。おそらく '<!ELEMENT plant(name、climate?、height?、usage *、image *)>のようなものを使うのでは? –

+1

ありがとう!ここでの出来事に言及することで、その作業の罰金 –