[英]Defining global attributes in XML
我認為這是一個簡單的問題,但是搜索后找不到任何解決方案。 有什么方法可以在XML DTD中定義全局屬性以供所有元素訪問?
如果您要詢問,是否可以將一個ATTLIST
應用於多個元素,答案是否定的。 屬性列表聲明只能有一個名稱。 沒有一種方法可以使每個具有屬性的元素都有一個ATTLIST
。
但是,可以使用參數實體在多個屬性列表聲明中重用屬性定義。 這將使維護公共屬性更加容易。
這是一個例子。 在示例中,元素elem1
和elem2
共有兩個屬性attr1
和attr2
。 這些元素還分別具有unique-attr1
屬性,即unique-attr1
和unique-attr2
。
so.dtd
<!ENTITY % common-attrs
"common1 CDATA #REQUIRED
common2 CDATA #REQUIRED">
<!ELEMENT test (elem1,elem2)>
<!ELEMENT elem1 EMPTY>
<!ATTLIST elem1
%common-attrs;
unique1 CDATA #REQUIRED>
<!ELEMENT elem2 EMPTY>
<!ATTLIST elem2
%common-attrs;
unique2 CDATA #REQUIRED>
這是XML實例的示例:
so.xml
<!DOCTYPE test SYSTEM "so.dtd">
<test>
<elem1 common1="x" common2="x" unique1="x"/>
<elem2 common1="x" common2="x" unique2="x"/>
</test>
注意:就像我在上面所做的那樣,在標記聲明中使用參數實體引用僅允許在外部子集(外部DTD)中使用。 不在內部子集中(內部DTD)。 (內部和外部子集在下面引用的規范的同一部分中進行了討論。)
從規格 :
格式正確性約束:內部子集中的PE
在內部DTD子集中,參數實體引用不能在標記聲明中出現; 它們可能發生在可能出現標記聲明的地方。 (這不適用於在外部參數實體或外部子集中出現的引用。)
您可以使用XML設計模式:通用屬性
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.