共用方式為


ENTITY (XML)

ENTITY 陳述式可用於定義 DTD 中的實體,以供與 DTD 關聯的 XML 文件與 DTD 本身使用。 ENTITY 可提供縮寫的項目以存放在您的 XML 文件中。 縮寫名稱可讓您提供給名稱參數使用。 ENTITY 對於可儲存在個別檔案中的重複資訊或大型文字區塊,都有非常大的用處。 在 XML 文件中,縮寫名稱後面會接著一個 ; (abbName;)。

在 DTD 與 XML 檔案中使用的 ENTITY 範例如下所示。

longtext.txt

下面是 longtext.txt 的內容:

<definition>ATTLIST(attribute list) Declares a list of XML attributes. These attributes are qualified by name, data type, implied default values, and the name of any elements that permit their use.

</definition>

dtd_chunk.dtd

<!ELEMENT list >
<!ATTLIST list list_type (ul | ol)>

sample.dtd

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE dtd_sample[
<!ELEMENT file_info>
<!ATTLIST file_info name #REQUIRED>

<!ENTITY xml "eXtensible Markup Language">
<!ENTITY attlist_def SYSTEM "longtext.txt">
<!ENTITY % lists "(ol | ul)">
<!ENTITY % dtd_chunk SYSTEM "chunk.dtd">
<!ENTITY file_pic SYSTEM "file.jpg" NDATA jpg>
<!NOTATION jpg SYSTEM "image/jpeg">
%dtd_chunk;
<!ELEMENT icon EMPTY>
<!ATTLIST icon source ENTITY #REQUIRED>
<!ATTLIST icon list_type &lists;>
]>

當您剖析 DTD 文件時,就會取得下列結果。 請注意,這項取代作業只會在記憶體中執行。 剖析器實際上並未變更檔案。

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE dtd_sample[
<!ELEMENT file_info>
<!ATTLIST file_info name #REQUIRED>
<!ENTITY xml "eXtensible Markup Language">
<!ENTITY attlist_def SYSTEM "longtext.txt">

<!ENTITY % dtd_chunk SYSTEM "chunk.dtd">
<!ENTITY file_pic SYSTEM "file.jpg" NDATA jpg>
<!NOTATION jpg SYSTEM "image/jpeg">
<!ELEMENT list >
<!ATTLIST list list_type (ul | ol)>
<!ELEMENT icon EMPTY>
<!ATTLIST icon source ENTITY #REQUIRED>
<!ATTLIST icon list_type (ol | ul)>
]>

sample.xml

<?xml version="1.0" standalone="no" ?>
<heading>Definition list for &xml; attributes used in DTD files.</heading>
    <file_info name="topfile">
        <icon source="file_pic"/>
        <list list_type="ul"/>
        %attlist_def
    </file_info>
<footer>Conclusion of definition list for &xml; attributes.</footer>

已剖析的 XML 文件的結果

當您剖析 XML 文件時,就會取得下列結果:

Definition list for eXtensible Markup Language attributes used in DTD files.

top file

ATTLIST(attribute list) Declares a list of XML attributes. These attributes are qualified by name, data type, implied default values, and the name of any elements that permit their use.

Conclusion of definition list for eXtensible Markup Language attributes.

語法

<!ENTITY [%] name [SYSTEM|PUBLIC publicID] resource [NDATA notation] >

參數

  • name
    實體的名稱。 所有實體定義都必須具備。

  • publicID
    實體的公開識別項。 只有宣告使用 PUBLIC 關鍵字時,才需使用。

  • 資源
    實體的值。 所有實體定義都必須具備。 在內部實體的案例中,這是會進行剖析與展開的文字字串。 在外部實體的案例中,可用於識別檔案名稱或檔案型別等外部實體的則是統一資源識別元 (URI)。

  • 標記法
    使用 NOTATION 陳述式在 DTD 的其他位置上宣告的標記法名稱。 只有在使用非 XML 資料 (NDATA) 關鍵字來宣告未剖析的實體時,才需要使用。

範例

ms256483.collapse_all(zh-tw,VS.120).gif一般實體 (內部剖析)

下列項目宣告的內部一般實體可當做使用 DTD 之 XML 文件中的 &oumlaut; 與 &xml; 來參考。

<!ENTITY oumlaut "&#38;#246;">

或簡單文字替代範例為

<!ENTITY xml "eXtensible Markup Language">

XML 剖析器會展開原始實體值 (#38;#246;),以使其成為內部 XML 文件的一部分。 在最終的剖析文件輸出中,"#38;" 值會用於建立 "&" 字元,而且在 XML 文件中會顯示為 "#246;"。

ms256483.collapse_all(zh-tw,VS.120).gif參數實體 (內部剖析)

下列項目宣告的內部參數實體可當做 DTD 其他位置中的 %lists; 來參考。 如此可讓 XHTML 清單項目、<ul> 與 <ol> 被重複參考。

<!ENTITY % lists "ul | ol">

ms256483.collapse_all(zh-tw,VS.120).gif未剖析的外部實體

以下宣告的未剖析外部實體,可讓您編碼非 XML 資料的連結 (在此案例中,為 GIF 格式的影像檔案),以納入您的 XML 文件中。

<!ENTITY file_pic SYSTEM "file.jpg" NDATA jpg>

在這個情況下,若要使用 NDATA 關鍵字,則 "jpg" 標記法的 NOTATION 宣告也必須與此宣告一起使用。 如需詳細資訊,請參閱標記法

ms256483.collapse_all(zh-tw,VS.120).gif備註

ENTITY 可透過多種方式使用。 若您不確定如何定義實體以供使用,下列問題或許可協助您進一步了解,在各種不同的狀況下,應如何使用您在 DTD 中所宣告的實體:

  • 實體的值是否只是用於縮小在文件使用時限中可能變更的大型文字字串? 若是,請使用一般實體。

  • 是否將它做為 DTD 或 XML 文件外部某些項目的資料指標 (亦即 外部實體),像是檔案名稱或 MIME 類型? 若是,請使用未剖析的外部實體。

  • 是否應剖析實體的 URI 值 (亦即 展開成為部分 DTD 或使用該實體的 XML 文件),或保持不剖析 (亦即 XML 剖析器會在最後剖析的文件中省略其內容)?

  • 若剖析,展開的實體內容是否會成為使用該 DTD 的部分 XML 文件 (亦即 一般實體),或者會成為 DTD 本身的一部分 (亦即 參數實體)?

請參閱

概念

ATTLIST (屬性清單)

ELEMENT

NOTATION