2013-12-01 4 views
5

У меня есть несколько элементов, которые я хочу, чтобы дать эти атрибуты:Как объявить атрибуты, общие для нескольких элементов?

<!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 атрибуты таким образом. Кто-нибудь знает лучше?)

ответ

7

Каждый элемент должен имеют свои собственные 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;    >