我有这段代码:
<!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>
答案 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/