DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML基礎 >> 第17章 命名域
第17章 命名域
編輯:XML基礎     

XML教程

 

XML的用途不是單一的。雖然讀者可能看到編寫只使用一個標記符號集的文檔是相當有用的(第4和第5章的棒球運動就是如此),但將不同的XML應用程序的標記混合,並進行匹配,甚至更為有用。例如,可將BIOGRAPHY元素包括在各個PLAYER元素中。由於傳記基本上是由自由形態的、格式化的文本組成,所以,以結構整潔的HTML格式編寫它就很方便,而無需從零做起重新定義所有的用於段落、分行符、列表項、粗體元素等等的標記。

但是,問題是,當混雜和匹配不同的XML應用程序的標記時,可能會發現同一個標記已用於兩個不同對象。TITLE是指頁標題還是書的標題?ADDRESS是指公司的郵件地址還是Web站點管理人員的電子郵件地址?命名域(namespace)可以解決這些諸如此類的問題,它是將URI與各標記集相關聯,並在每個元素前加上一個前綴,以表示它屬於哪個標記集。於是,就可以有BOOK:TITLE和HTML:TITLE兩個元素或POSTAL:ADDRESS和HTML:ADDRESS元素,而不只一類TITLE或ADDRESS。本章將說明如何使用命名域。

本章的主要內容如下:

* 何為命名域?

* 命名域語法

* DTD中的命名域

18.1 何為命名域

XML能夠使開發者為工程創建自己的標記語言。這些語言可以和工作於世界各地的類似工程的工作者們共享。使用這種方式工作的典型實例之一就是XSL。XSL本身就是用於XML樣式文檔的一個XML應用程序。XSL變換語言必須輸出任意的、結構整潔的XML,或許還包括XSL本身。因此,需要有明確的手段來區分何為XSL轉換指令的XML元素、何為輸出的XML元素,即便它們有相同的名稱也得要區分開!

命名域就是這種解決方案。命名域允許文檔中的每個元素和特性放在不同的命名域中。組成XSL轉換指令的XML元素放在http://www.w3.org/XSL/Transform/1.0命名域中。成為輸出部分的XML元素仍放在某個其他方便的命名域(如http://www.w3. org/TR/REC-html40或http://www.w3.org/XSL/Format/1.0)中。只要命名域不同,那麼命名域的精確性就不顯得很重要。

如果熟悉C++和其他程序語言命名域,那麼在深入閱讀本章之前,需要將以前的概念放置一邊。XML命名域與編程中使用的命名域類似,但不完全相同。特別是,XML命名域沒有必要組成一個集合(沒有重名的集合)。

清單15-2是從源符號集轉換到XSL格式化對象的變換,最早出現在第15章的"XSL格式化對象"中。它顯示了XSL樣式單,可從輸入XML轉換成XSL格式化對象。格式化引擎使用命名域來區分作為XSL指令的元素和用於輸出的文字數據。http://www.w3.org/XSL/Transform/1.0命名域中的任何元素都表示一個轉換指令。http://www.w3.org/XSL/Format/1.0命名域中的任何元素包括輸出部分。

<?xml version="1.0"?>

<xsl:stylesheet

xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"

xmlns:fo="http://www.w3.org/XSL/Format/1.0"

result-ns="fo" indent-result="yes">

<xsl:template match="/">

<fo:root xmlns:fo="http://www.w3.org/XSL/Format/1.0">

<fo:layout-master-set>

<fo:simple-page-master page-master-name="only">

<fo:region-body/>

</fo:simple-page-master>

</fo:layout-master-set>

<fo:page-sequence>

<fo:sequence-specification>

<fo:sequence-specifier-single page-master-name="only"/>

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved