ATTLIST名称与ELEMENT名称不同

时间:2014-03-15 17:47:44

标签: xml dtd xml-dtd

我有这段代码:

<!ENTITY % id "id ID #IMPLIED">
<!ENTITY % comment "comment CDATA #REQUIRED">

...

<!ELEMENT methodology (#PCDATA)>
<!ATTLIST methodology %id;>

<!ELEMENT updated (#PCDATA)>
<!ATTLIST info %comment;>

为什么评论ATTLIST的名称与他的ELEMENT名称不同? 而且我不知道在XML中是否有更新元素的代码:

<updated comment="This is a comment">
DATE
</updated>

1 个答案:

答案 0 :(得分:1)

根据您的DTD,您<updated>可能没有comment属性(除非您在省略的部分中声明了该属性。)

info ATTLIST<info>元素的属性列表。 ATTLIST的语法是:

<!ATTLIST element-name attribute-name attribute-type default-declaration>

DTD中<info>元素的声明是:

<!ATTLIST info comment CDATA #REQUIRED>

%comment;是对在文件开头声明的参数实体的引用。如果需要多次重用代码位,参数实体很有用。您的%comment;实体定义了一个字符串,该字符串是ATTLIST声明的一部分。也许%comment;参数实体在您的代码中经常使用,因为所有或多个元素都具有comment属性,因此您可以避免使用该实体多次重新输入它。如果updated具有comment属性,则可将其定义为:

<!ATTLIST updated %comment;>

但是 使用该实体也是完全有效的:

<!ATTLIST updated comment CDATA #REQUIRED>

您的%id;实体具有相同的目的。 <methodology>的属性列表也可以在没有实体的情况下声明:

<!ATTLIST methodology id ID #IMPLIED>

您可以阅读有关参数实体的更多信息。他们不难理解。查看本教程:http://www.ibm.com/developerworks/library/x-tiparam/