DTD-是否可以同时为多个元素声明属性



如何为多个元素声明属性?

类似:

<!ATTLIST foo,bar createdAt CDATA #IMPLIED>

通常的方法是定义一个参数实体,它本质上只是一个宏。这个例子定义了两个参数实体,其中一个引用另一个:

<!ENTITY % role.att
'role                   NMTOKEN         #IMPLIED'>
<!ENTITY % common.att
'id                     ID              #IMPLIED
%role.att;'>
<!ATTLIST notice %common.att;>

当专家这样做时,产生的DTD会变得极其复杂,普通人几乎无法阅读,但该功能非常强大。

对于XML DTD,这只能使用Michael解释的参数实体(参见XML规范(。OTOH、SGML DTD允许以一种非常接近您所想的形式为多个元素声明属性列表:

<!-- only valid in SGML rather than XML DTDs: -->
<!ATTLIST (elem1|elem2|elem3) myatt CDATA #IMPLIED>

SGML还允许名称组代替其他标记声明中的单个名称。

此外,WebSGML(ISO 8879:1986/Cor 2:1999(还允许#ALL#IMPLICIT代替元素名称,分别将声明应用于所有声明或隐含的元素。这些被包含在WebSGML中以表示通用的XML属性,如xml:basexml:langxmlns(而不是xmlns:xyz(。然而,就像名称组语法一样,它们并没有成为SGML的XML子集的一部分。

相关内容

  • 没有找到相关文章

最新更新