跳至內容

SGML實體

維基百科,自由的百科全書

標準通用標記語言 里, 一個 實體 是一個原始數據類型

實體類型

[編輯]

實體被歸類為一般或參數:

  • 一般實體 只能引用文檔裏頭的內容。
  • 參數實體 只能引用文檔類型定義裏頭的。

實體也進一步分類,解析和未解析的:

  • 已解析的實體 包含文本,將被合併到文檔的解析,如果被引用的實體。參數實體只能是已解析的實體。
  • 未解析的實體 包含任意類型的數據,對它的引用將導致應用程式的實體的存在,只是被通知;該實體的內容將不能被解析,即使它是文本。未解析的實體只能是外部的。

內部和外部實體

[編輯]

一個 內部實體有一個值要麼是一文字字符串,或一個解析字符串包括標記和實體定義在同一文檔中(如文件類型描述或子文檔)。相反,一個外部實體有一個聲明調用一個外部文件,因此必須干預一個實體管理器來達到解決外部文件引用的目的。

系統實體

[編輯]

一個 系統實體 調用可選的SYSTEM ,它指示標準通用標記語言解析器處理實體的字符串所指的資源標識符。

文檔實體

[編輯]

當外部實體引用一個完整的標準通用標記語言文檔,它是已知的文檔作為調用 標準通用標記語言文檔實體。一個標準通用標記語言文檔是一個文字文件同標準通用標記語言的標記在標準通用標記語言序章定義。一個完整的標準通用標記語言文檔不僅包括文檔實例本身,序言和可選的標準通用標記語言聲明(其中定義文檔的標記語法和聲明字符編碼)。

語法

[編輯]

一個實體定義通過一個實體聲明 在一個文檔類型聲明的文檔裏頭文件類型描述。 例如:

<!ENTITY 名称 "超级无线保真">
<!ENTITY 栈 SYSTEM "file:///网关接口.入口">
<!ENTITY % 欢迎语 "你好!">
<!ENTITY 欢迎语贰 "%欢迎语; 意为您好!">

此文檔類型定義標記聲明如下:

  • 一個內部一般實體命名為"名稱",和字符串構成的"超級無線保真"。
  • 一個外部一般實體命名為"棧",和由標識的資源裏頭找到的文本"file:///網關接口.入口"。
  • 一個內部參數實體命名為"歡迎語",和由字符串"你好!"。
  • 一個內部一般實體命名為"歡迎語貳",和由字符串"你好!意為您好!"。

實體名稱必須遵循標準通用標記語言名稱 的規則,也有局限性可以參照實體。

從上面的例子中,一般的實體中引用的文件如下:

<内容>
      <信息>'&名称;'是一种常见的测试字符串。</信息>
      <信息>网关接口.入口 的内容是: &栈;</信息>
      <信息>中华人民共和国汉语 &欢迎语贰;</信息>
</内容>

當解析,本文件將被報告的向下的流的應用程式相同的,如果它已被寫為如下假設「網關接口.入口」文件包含文本"稱呼語":

<内容>
      <信息>'&名称;'是一种常见的测试字符串。</信息>
      <信息>网关接口.入口 的内容是:称呼语</信息>
      <信息>中华人民共和国汉语 你好!意为您好!</信息>
</内容>

未聲明的實體的引用是一個錯誤,除非已經定義了一個默認的實體。例如:

<!ENTITY DEFAULT "该实体未定义。">

其他標記結構和處理器選項可能會影響是否和如何處理實體。例如,一個處理器可以選擇忽略外部實體。

參見

[編輯]

引用

[編輯]

外部連結

[編輯]