XML—— XSL 转换
【0】README
0.1) 本文文字描述轉自 core java volume 2 , 旨在理解 XML—— XSL 轉換 的基礎知識 ;
0.2)XSL 轉換: XSL 轉換(eXtensible StyleSheet Language==擴展樣式表語言)
(for detailed XSLT, please visit http://blog.csdn.net/pacosonswjtu/article/details/50571734)
【1】XML—— XSL 轉換基礎相關
1)XSL轉換(XSLT)機制定義:可以將XML 文檔轉換為其他格式的規則。(干貨——XSLT的轉換和作用)
- 1.1)XSLT的作用: XSLT 通常用來將某種機器可讀的XML 格式轉移為另一種機器可讀的格式,或者將 XML 轉譯為適合人類閱讀的表示格式;
2)你需要提供 XSLT 樣式表, 它描述了 XML 文檔向某種格式轉換的規則。 XSLT 處理器將讀入XML 文檔和這個樣式表, 并產生所要的輸出。(見下圖);
3)看個荔枝(吧 XML 文件轉換為 HTML文件)
- 3.1)輸入文件:
- 3.2)我們希望輸出的html 文件為:
4)具有轉換模板的樣式表形式如下:
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transformation="1.0"> <xsl: output method="html">template1template2...... </xsl:stylesheet>- 4.1)在我們的例子中, xsl:output 元素: 將方法設定為 HTML。 而其他有效的方法設置為 xml 和 text;
- 4.2)下面是一個典型的template: (干貨——樣式表轉換模板定義)
4.3) match 屬性值是一個 XPaht 表達式。該模板說明,每當看到 XPath 集 /staff/employee 中的一個節點時, 將做以下操作(Operation):
O1) 產生字符串< tr>;
- O2)對于要處理子元素繼續應用模板;
- O3)當處理完所有子元素后, 產生字符串 ;
- 換句話說, 該模板圍繞每個雇員記錄生成 HTML 表格的行標記;
5)XSLT 處理器由檢查根元素開始其處理過程。
- 5.1) 每當一個節點匹配某個模板時,就應該應用該模板, 如果沒有匹配的模板, 處理器會執行默認操作,如下:
- Default1) 對于文本節點, 默認操作是吧它 的內容囊括到輸出中去;
- Default2)對于元素, 默認操作不會產生任何輸出, 但會繼續處理其子節點;
6)看個荔枝: 下面是一個用來轉換雇員記錄文件中的name 節點的模板;
<xsl: template match="/staff/employee/name"><td><xsl: apply-templates></td> </xsl: template>- 6.1)這樣, 模板產生定界符< td>。。。< /td>,, 并且請求處理器遞歸訪問 name 元素 的 子節點;
7)如果想把 屬性值復制到輸出中去, 就必須做一些復雜操作,如下:
<xsl: template match="/staff/employee/hiredate"><td><xsl: value-of select="@year">-<xsl: value-of select="@month">-<xsl: value-of select="@day"></td> <xsl: template />- 7.1)當處理 hiredate節點時, 該模板會產生:
- 7.2) xsl:value-of 語句:用于計算節點集的 字符串值, 其中,節點集 由 select 屬性 的 XPath 值指定;
- 7.3)節點集通過連接各個節點的字符的字符串值被轉換成一個字符串。 屬性節點的字符串值就是它的值, 文本節點的字符串值是它 的內容, 元素節點的字符串值是它子節點(而不是屬性)的字符串值的連接;
8)在java 平臺下產生 XML 的轉換及其簡單,只需為每個樣式表設置一個轉換器工廠, 然后得到一個轉換器對象, 并告訴它把一個源轉換成結果;
File stylesheet = new File(filename); StreamSource styleSource= new StreamSource(stylesheet);Transformer t = TransformerFactory.newInstance().newTransformer(styleSource); t.transform(source, result);- 8.1)Transform方法的參數是 Source 和 Result 接口的實現類的對象。 Source 接口有4個實現類:
- 8.2)可以從 一個文件, 流, 閱讀器或 URL , 以及來自 DOM 樹節點的 DOMSource 來構建一個 StreamSource;
- 8.3)用于轉換器的SAXSource 是從 XML 閱讀器構建的:
- 8.4)這是一個非 XML 的遺留數據轉換成 XML 的一個小技巧。當然, 大多數 XSLT 應用程序都已經有了XML 格式的輸入數據, 只需要在 一個 StreamSource 對象上調用transform 方法即可, 如: t.transform(new StreamSource(file), result);
- 8.5)其轉換結果是 Result 接口實現的一個對象, java 庫提供了3個類:
- 8.6)如果要把結果存儲到 DOM 樹中,請使用 DocumentBuilder產生一個新的文檔節點, 并將其包裝到 DOMResult中:
- 8.7)如果要將輸出保存到文件中, 請使用 StreamResult:
總結
以上是生活随笔為你收集整理的XML—— XSL 转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XML——流机制解析器
- 下一篇: asp.net ajax控件工具集 Au