【发布时间】:2019-04-05 23:49:42
【问题描述】:
我想设置一个参数实体,以便声明多个元素共有的属性。
我要做的是让“elem”元素具有属性“width CDATA”0”。完成这项工作后,我会在更多元素上使用它。
这是我想出的代码:
<?xml version="1.0"?>
<!DOCTYPE example [
<!ENTITY % attrs 'width CDATA "0"'>
<!ELEMENT example (elem) >
<!ELEMENT elem (#PCDATA) >
<!ATTLIST elem %attrs; > <!-- <This errors with "no name for attribute" -->
]>
<example>
<elem width="20">Hi how are you</elem>
</example>
我使用的代码基于对类似问题 (How do I declare attributes common to multiple elements?) 的公认答案。但是,当我通过 XML 验证器运行我的代码时(SublimeText 上的 Exalt 或 xmlvalidation.com 它会出错。
在上面提到的网站上,错误是:The attribute name must be specified in the attribute-list declaration for element "elem1".
使用 Exalt,错误是:ATTLIST: no name for Attribute at [...]
我的理解是缺少属性的名称。但是我把属性的名字放在了参数实体上,怎么会检测不到呢?
如果我替换 %attrs;使用'width CDATA“0”',它工作正常。
为什么会出现错误?
【问题讨论】:
-
好问题。 +1 此外,如果另一个问题中接受的答案有帮助,则表示赞赏。 ;-)
-
我慢慢意识到要得到好的答案,你需要努力提出好的问题。将相应地展开投票,并再次感谢您的帮助。