我有多个元素要赋予这些属性:
<!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
属性不是一个好主意。有人知道吗更好的方法?)
最佳答案
每个元素都需要有自己的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; >
关于dtd - 如何声明多个元素共有的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20308365/