0

私は XML と DTD を学習しようとしています。DTD の w3c チュートリアルを実行し、DTD を使用して XML でレシピ シナリオを実装しようとしています。これが DTD ファイルに書かれている内容です。

<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY  RECIPE (NAME,INGREDIENTS,INSTRUCTIONS) >
<!ENTITY NAME ("Baking Powder Biscuits") >
<!ENTITY  INGREDIENTS SYSTEM "Ingredients.dtd"  >
<!ENTITY  INSTRUCTIONS SYSTEM "Instructions.dtd" >

<!ATTLIST RECIPE UNITS "16 BISCUITS" #FIXED> 

検証しようとすると、解析により、2 行目で open quot missing in decl というエラーが表示されます。何が問題なのか理解できません。助けてください。

ありがとう

これはxmlファイルの「レシピ」です:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE RECIPE SYSTEM "recipe.dtd">

これはレシピdtdです

<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY  RECIPE NAME INGREDIENTS,INSTRUCTIONS>
<!ENTITY NAME "Baking Powder Biscuits" >
<!ENTITY  % INGREDIENTS SYSTEM "Ingredients.dtd"  >
<!ENTITY  % INSTRUCTIONS SYSTEM "Instructions.dtd" >

<!ATTLIST RECIPE UNITS CDATA #FIXED "16 BISCUITS" >

これは他の dtd 成分です:

<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY  INGREDIENTS  ("2 cups flour","1 tablespoon sugar", "1/2 teaspoon salt", "1/2 cup vegetable shortening", "4 teaspoon baking powder", "2/3 cup milk")>
4

2 に答える 2

1

ドキュメント タイプ定義ファイルは XML ドキュメント インスタンスではありません。XML 宣言で始めるべきではありません。それらから XML 宣言を削除すると、Daniel Haley によって特定された問題が発生します。

于 2013-09-26T19:29:13.467 に答える
1

の ENTITY 宣言がRECIPEありますが、ELEMENT 宣言である必要があるようです (モデルと RECIPE の ATTLIST に基づく):

<!ELEMENT RECIPE (NAME,INGREDIENTS,INSTRUCTIONS) >

ENTITY 宣言は実際にはNAMEENTITY であるように見えますが、括弧を削除する必要があります。

<!ENTITY NAME "Baking Powder Biscuits">

また、.dtd ファイルを指す 2 つの ENTITY 宣言は、実際に追加の宣言が含まれている場合、パラメーター エンティティである必要があります。

<!ENTITY % INGREDIENTS SYSTEM "Ingredients.dtd"  >
<!ENTITY % INSTRUCTIONS SYSTEM "Instructions.dtd" >

%INGREDIENTS;および でそれらを参照します%INSTRUCTIONS;

RECIPE の ATTLIST も正しくありません。固定値については、これを試してください:

<!ATTLIST RECIPE UNITS CDATA #FIXED "16 BISCUITS">
于 2013-09-22T03:37:00.450 に答える