我想要赋予这些属性多个元素:
<!ATTLIST [all these elements]
width CDATA "0"
height CDATA "0"
margin CDATA "0 0 0 0"
padding CDATA "0 0 0 0"
rotation CDATA "0"
halign (left|center|right|full) "center"
valign (top|middle|bottom|full) "middle"
>
这在DTD中是否有可能,或者我必须手动完成吗?
(另外,虽然我在这里,但我认为以这种方式声明margin
和padding
属性并不是一个好主意。有没有人知道更好的方法?)< / p>
答案 0 :(得分:9)
每个元素都需要有自己的attribute declaration(ATTLIST
)。但是,您可以使用parameter entity重复使用它。
示例...
<!ENTITY % attrs
'width CDATA "0"
height CDATA "0"
margin CDATA "0 0 0 0"
padding CDATA "0 0 0 0"
rotation CDATA "0"
halign (left|center|right|full) "center"
valign (top|middle|bottom|full) "middle"'>
<!ELEMENT elem1 (#PCDATA)>
<!ATTLIST elem1 %attrs;>
<!ELEMENT elem2 (#PCDATA)>
<!ATTLIST elem2 %attrs;>
这是另一个示例,它混合了参数实体引用以及仅出现在各个元素上的属性。
<!ELEMENT elem1 (#PCDATA)>
<!ATTLIST elem1
attr1 CDATA #IMPLIED
%attrs; >
<!ELEMENT elem2 (#PCDATA)>
<!ATTLIST elem2
attr2 CDATA #IMPLIED
%attrs; >