我正在尝试学习XML和DTD,我刚刚学习了w3c教程中的DTD,并试图使用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行中给出了一个错误,即打开“在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")>发布于 2013-09-22 03:37:00
您有一个用于RECIPE的实体声明,但它看起来应该是一个元素声明(基于模型和用于配方的ATTLIST ):
<!ELEMENT RECIPE (NAME,INGREDIENTS,INSTRUCTIONS) >NAME实体声明看起来确实应该是一个实体,但是您需要删除括号:
<!ENTITY NAME "Baking Powder Biscuits">另外,指向.dtd文件的两个实体声明应该是参数实体,如果它们实际上包含其他声明:
<!ENTITY % INGREDIENTS SYSTEM "Ingredients.dtd" >
<!ENTITY % INSTRUCTIONS SYSTEM "Instructions.dtd" >您可以使用%INGREDIENTS;和%INSTRUCTIONS;引用它们。
食谱的ATTLIST也是不正确的。对于固定值,请尝试如下:
<!ATTLIST RECIPE UNITS CDATA #FIXED "16 BISCUITS">发布于 2013-09-26 19:29:13
文档类型定义文件不是XML文档实例;它们不应该以XML声明开始。一旦从XML声明中删除了XML声明,就会遇到Daniel所指出的问题。
https://stackoverflow.com/questions/18937178
复制相似问题