簡體   English   中英

在XML中定義全局屬性

[英]Defining global attributes in XML

我認為這是一個簡單的問題,但是搜索后找不到任何解決方案。 有什么方法可以在XML DTD中定義全局屬性以供所有元素訪問?

如果您要詢問,是否可以將一個ATTLIST應用於多個元素,答案是否定的。 屬性列表聲明只能有一個名稱。 沒有一種方法可以使每個具有屬性的元素都有一個ATTLIST

但是,可以使用參數實體在多個屬性列表聲明中重用屬性定義。 這將使維護公共屬性更加容易。

這是一個例子。 在示例中,元素elem1elem2共有兩個屬性attr1attr2 這些元素還分別具有unique-attr1屬性,即unique-attr1unique-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設計模式:通用屬性

http://www.xmlpatterns.com/CommonAttributesMain.shtml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM