XML代码混乱。不断收到“'('需要启动 ATTLIST 枚举”不知道如何解决
XML code confusion. Keep getting " '(' required to start ATTLIST enumeration " Not sure how to fix
我是一名大学生,我在使用这个代码文件时遇到了问题。我会问老师或其他同学,但似乎没有人回应我在黑板上的代码问题。所以我希望这里的任何人都可以提供帮助!
指令状态 "For the versionDate
element, an optional surveyDate
attribute containing the date of the survey"。我不完全确定这是什么意思,但我尝试了“<!ATTLIST versionDate surveyDate #IMPLIED>
”,但出现了上面的错误代码。唯一包含“surveyDate
”的文本行是这一行:
<versionDate surveyDate=">1849"<1968/versionDate>
我试图删除该行以查看它是否是我编写的方式,但后来我收到错误代码“ATTLIST: no name for Attribute
”,我相信我的所有代码都有一个名称。有人可以帮忙吗?
如果对整个element和attlist有帮助代码如下:
<!DOCTYPE products
[
<!ELEMENT product (product+)>
<!ELEMENT product (name, versionDate, desc, isbn?, price?)>
<!ELEMENT name (#PCDATA)>
<!ATTLIST name pid ID #REQUIRED>
<!ATTLIST name category (historical |state |parks ) #REQUIRED>
<!ELEMENT versionDate (#PCDATA)>
<!ELEMENT desc (#PCDATA)>
<!ELEMENT isbn (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ATTLIST price format (flat |raised ) "flat" #IMPLIED> <!-- format default is flat. -->
<!ATTLIST price media (paper | electronic)>
]>
我看到 3 个问题:
- 您已声明
product
两次。根据 doctype 声明,第一个元素声明应为 products
(复数)。
- 在
price
元素的 format
属性的属性声明中,您有一个 enumeration 的值 "flat" 和 "raised" 以及一个默认值 "flat"。如果您有默认值,您还有 #IMPLIED
无效。您应该删除 #IMPLIED
.
- 在
price
元素的 media
属性的属性声明中,您有一个枚举但没有默认值,#IMPLIED
,或 #REQUIRED
.执行以下 一个 操作:
- 添加默认值(匹配枚举中的值)
- 添加
#IMPLIED
- 添加
#REQUIRED
此外,您可以组合元素的 ATTLIST
声明。它使它更容易阅读。
最后一件事,如果这是一个外部 DTD,您可能不需要 DTD 文件中的文档类型声明。文档类型应该在引用 DTD 的 XML 实例中。如果 XML 和 DTD 都在一个文件中,请忽略此注释。 (This section of the spec 可能有助于理解文档类型声明和 DTD(序言)。)
示例...
<!DOCTYPE products [
<!ELEMENT products (product+)>
<!ELEMENT product (name, versionDate, desc, isbn?, price?)>
<!ELEMENT name (#PCDATA)>
<!ATTLIST name
pid ID #REQUIRED
category (historical|state|parks) #REQUIRED>
<!ELEMENT versionDate (#PCDATA)>
<!ATTLIST versionDate
surveyDate CDATA #IMPLIED>
<!ELEMENT desc (#PCDATA)>
<!ELEMENT isbn (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ATTLIST price
format (flat|raised) "flat"
media (paper|electronic) #REQUIRED>
]>
编辑: 我还在 versionDate
元素上添加了 surveyDate
属性的属性声明。这缺少属性类型。 (See here 了解更多信息。)
您的 XML 示例中的 versionDate
元素也不正确;这不是 well-formed。它应该看起来像这样:
<versionDate surveyDate="1849">1968</versionDate>
我是一名大学生,我在使用这个代码文件时遇到了问题。我会问老师或其他同学,但似乎没有人回应我在黑板上的代码问题。所以我希望这里的任何人都可以提供帮助!
指令状态 "For the versionDate
element, an optional surveyDate
attribute containing the date of the survey"。我不完全确定这是什么意思,但我尝试了“<!ATTLIST versionDate surveyDate #IMPLIED>
”,但出现了上面的错误代码。唯一包含“surveyDate
”的文本行是这一行:
<versionDate surveyDate=">1849"<1968/versionDate>
我试图删除该行以查看它是否是我编写的方式,但后来我收到错误代码“ATTLIST: no name for Attribute
”,我相信我的所有代码都有一个名称。有人可以帮忙吗?
如果对整个element和attlist有帮助代码如下:
<!DOCTYPE products
[
<!ELEMENT product (product+)>
<!ELEMENT product (name, versionDate, desc, isbn?, price?)>
<!ELEMENT name (#PCDATA)>
<!ATTLIST name pid ID #REQUIRED>
<!ATTLIST name category (historical |state |parks ) #REQUIRED>
<!ELEMENT versionDate (#PCDATA)>
<!ELEMENT desc (#PCDATA)>
<!ELEMENT isbn (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ATTLIST price format (flat |raised ) "flat" #IMPLIED> <!-- format default is flat. -->
<!ATTLIST price media (paper | electronic)>
]>
我看到 3 个问题:
- 您已声明
product
两次。根据 doctype 声明,第一个元素声明应为products
(复数)。 - 在
price
元素的format
属性的属性声明中,您有一个 enumeration 的值 "flat" 和 "raised" 以及一个默认值 "flat"。如果您有默认值,您还有#IMPLIED
无效。您应该删除#IMPLIED
. - 在
price
元素的media
属性的属性声明中,您有一个枚举但没有默认值,#IMPLIED
,或#REQUIRED
.执行以下 一个 操作:- 添加默认值(匹配枚举中的值)
- 添加
#IMPLIED
- 添加
#REQUIRED
此外,您可以组合元素的 ATTLIST
声明。它使它更容易阅读。
最后一件事,如果这是一个外部 DTD,您可能不需要 DTD 文件中的文档类型声明。文档类型应该在引用 DTD 的 XML 实例中。如果 XML 和 DTD 都在一个文件中,请忽略此注释。 (This section of the spec 可能有助于理解文档类型声明和 DTD(序言)。)
示例...
<!DOCTYPE products [
<!ELEMENT products (product+)>
<!ELEMENT product (name, versionDate, desc, isbn?, price?)>
<!ELEMENT name (#PCDATA)>
<!ATTLIST name
pid ID #REQUIRED
category (historical|state|parks) #REQUIRED>
<!ELEMENT versionDate (#PCDATA)>
<!ATTLIST versionDate
surveyDate CDATA #IMPLIED>
<!ELEMENT desc (#PCDATA)>
<!ELEMENT isbn (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ATTLIST price
format (flat|raised) "flat"
media (paper|electronic) #REQUIRED>
]>
编辑: 我还在 versionDate
元素上添加了 surveyDate
属性的属性声明。这缺少属性类型。 (See here 了解更多信息。)
您的 XML 示例中的 versionDate
元素也不正确;这不是 well-formed。它应该看起来像这样:
<versionDate surveyDate="1849">1968</versionDate>