学习XSLT(一)
??????先看一段XML文檔 XML
<?xml?version="1.0"?encoding="utf-8"??>
<Authors>
??<Author>
????<AuthorName?id="1">Author1</AuthorName>
????<AuthorAddress>Address1</AuthorAddress>
????<AuthorEmail>EMail1</AuthorEmail>
??</Author>
??<Author>
????<AuthorName?id="2">Author2</AuthorName>
????<AuthorAddress>Address2</AuthorAddress>
????<AuthorEmail>EMail2</AuthorEmail>
??</Author>
??<Author>
????<AuthorName>Author3</AuthorName>
????<AuthorAddress>Address3</AuthorAddress>
????<AuthorEmail>EMail3</AuthorEmail>
??</Author>
</Authors> ??????這段文檔經過下面的XSLT文件 <?xml?version="1.0"?encoding="utf-8"?>
<xsl:stylesheet?version="1.0"
????xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
??<xsl:output?method="xml"/>
??<xsl:template?match="/">
????<html>
??????<body>
????????<table?border="1px">
????????<xsl:apply-templates/>
????????</table>
??????</body>
????</html>
??</xsl:template>
??<xsl:template?match="Author">
????<xsl:value-of?select="."/>
??</xsl:template>
</xsl:stylesheet> 轉換會得到下面的xml文件 Result
<?xml?version="1.0"?encoding="utf-8"?>
<html>
??<body>
????<table?border="1px">
??????Author1
??????Address1
??????EMail1
??????Author2
??????Address2
??????EMail2
??????Author3
??????Address3
??????EMail3
????</table>
??</body>
</html>
對于這個.xsl文件:
<xsl:stylesheet>和<xsl:stylesheet>表示這個文檔是XSLT樣式表,version自然代表使用的版本,xmlns:xsl是標準的XML命名空間聲明。所有的XSLT文檔必須使用這個URI作為命名空間前綴。當然可以定義自己的命名空間,這樣可以避免不同的元素,屬性命名的沖突。當然xsl是習慣性的前綴,比較容易理解。也可以使用自定義的前綴名。
<xsl:output method="xml/>用于控制XSLT轉換的輸出格式(可以指定為xml.html.text),還有其他的可選屬性(如version來指明輸出xml文檔的版本 Encoding指定編碼方式)。
<xsl:template match="/"></xsl:template>定義XSLT模板規則,是XSLT中最主要的部分。XSLT代碼最終的目的是將XML文檔按照模板定義的規則進行輸出。屬性match用來指定匹配的模式,"/"代表選擇根節點,返回的將是根節點后代的集合,具體語法將在下一篇文章中介紹。其它可選屬性如name可以定義模板的名字,priority定義模板的優先級,mode定義模板的模式。???????????????name:作為一個模板的標識,就像一個人的名字。如果我們指定一個模板的name="NameXX"那么我們可以通過<xsl:call-template name="NameXX"/>來調用它。本例中<xsl:apply-templates/>就可以用<xsl:call-template name="NameXX"/>代替。???????????????priority指定模板的優先級。??????????????????mode:相當于選擇的作用,如果一個模板的mode被設定為"Y",那么<xsl:apply-templates mode="X"/>只會選擇與X同名的template,mode值為其它的template將不會得到使用。
<xsl:value-of select="."/>是選擇當前節點的值。因為"."匹配當前節點,返回值為當前節點以及其子節點集,所以所有的子節點值會被選擇出來。
其他的樣式表元素將在第二篇文章中介紹包括xsl:include,xsl:attibute-set,xsl:key,xsl:variable,xsl:param,xsl:if,xsl:when,xsl:otherwise,xsl:choose等!
如果有寫的不好的地方希望大家提出來,誠懇的接受批評指導。大家互相交流,共同提高!
轉載于:https://www.cnblogs.com/jingtao/archive/2007/07/27/833773.html
總結
- 上一篇: 4001234567是什么保险
- 下一篇: Craig离开Webb了