您好,登錄后才能下訂單哦!
小編給大家分享一下XSLT模板如何轉換XML文檔,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
XML文檔只能表現數據的內容,而實際的數據則是要呈現在網頁中的。使用CSS可以格式化XML文檔,使它顯示出來,這個內容在上一篇中已經做了詳細的說明。除了CSS外,還有一種語言也可以在網頁中表現出XML數據內容,那就是XSL。XSL語言包括XSLT(XSL Transformation)和FO(Format Object)。XSLT文檔可以將XML文檔轉化為其它文檔形式,如HTML、Text等。FO用于格式化輸出,由于W3C對FO還形成統一標準,這里將只說明XSLT的用法。
使用XSLT時最重要的部分是選擇XML節點值和創建模板。創建模板使用的標簽是<xsl:template></xsl:template>,通常這個標簽需要一個match屬性,用來確定它所匹配的XML節點。選擇XML節點值使用的標簽是<xsl:value-of />,這個標簽需要select屬性來確定它匹配的XML節點。下面將用一個簡單的例子說明,看下面的XML文檔:
1 <?xml version="1.0" encoding="utf-8"?> 2 <?xml-stylesheet type="text/xsl" href="stylesheet.xslt"?> 3 <xml> 4 <book> 5 <name>Xml應用系列</name> 6 <author>學路的小孩</author> 7 <date>2009-03-23</date> 8 </book> 9 </xml>
代碼說明:第一行是XML文件的聲明部分;第二行聲明引入XSLT文件,type屬性說明文件的類型是text/xsl,href屬性指向一個XSLT文件,文件名為stylesheet.xslt。第三行以后為XML文檔部分。下面是stylesheet.xslt的內容:
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 3 <xsl:template match="/"> 4 <html> 5 <head> 6 <title>第一個XSLT文件</title> 7 </head> 8 <body> 9 <xsl:apply-templates select="xml"></xsl:apply-templates> 10 </body> 11 </html> 12 </xsl:template> 13 <xsl:template match="xml"> 14 <table style="background-color:orange"> 15 <tr> 16 <th>書名</th> 17 <th>作者</th> 18 <th>日期</th> 19 </tr> 20 <xsl:apply-templates select="book"></xsl:apply-templates> 21 </table> 22 </xsl:template> 23 <xsl:template match="book"> 24 <tr> 25 <td> 26 <xsl:value-of select="name"/> 27 </td> 28 <td> 29 <xsl:value-of select="author"/> 30 </td> 31 <td> 32 <xsl:value-of select="date"/> 33 </td> 34 </tr> 35 </xsl:template> 36 </xsl:stylesheet>
代碼說明:由于XSLT文檔的格式依然是XML格式,所以第一行為XML的頭部聲明;第二行則是XSLT的版本和命名空間聲明,并且該標簽是XSLT文檔的跟節點。第三行使用<xsl:template></xsl:template>創建一個模板,select="/"表示匹配的是文檔的根節點。第四行到第十一行是這個節點要生成的HTML節點信息,其中第九行<xsl:apply-templates />標簽表示應用模板,其中select="xml"表示要調用的模板為匹配XML節點的模板,這個模板在第十三行出現。后面的所有行(除了第26行等)無非是這些內容的重復,不做太多介紹。第二十六行是選擇name標簽的內容。使用IE打開XML文件,顯示內容如下:
另外,XSLT還具有流程控制、條件選擇、循環處理、元素排序等功能。下面通過一個實例來說明,其中XML文檔內容如下:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <?xml-stylesheet type="text/xsl" href="bookListStyle.xslt"?> 3 <bookList> 4 <category type="計算機"> 5 <book id="1"> 6 <title>網頁與Web程序設計</title> 7 <author>吳利兵</author> 8 <pubInfo> 9 <publisher>機械工業出版社</publisher> 10 <pubDate>2009-04-01</pubDate> 11 <price>16.50</price> 12 </pubInfo> 13 </book> 14 <book id="2"> 15 <title>軟件工程</title> 16 <author>鄧良松</author> 17 <pubInfo> 18 <publisher>西安電子科技出版社</publisher> 19 <pubDate>2005-06-10</pubDate> 20 <price>33.20</price> 21 </pubInfo> 22 </book> 23 </category> 24 <category type="小說"> 25 <book id="3"> 26 <title>茶花女</title> 27 <author>小仲馬</author> 28 <pubInfo> 29 <publisher>外語出版社</publisher> 30 <pubDate>2005-06-30</pubDate> 31 <price>22.00</price> 32 </pubInfo> 33 </book> 34 <book id="4"> 35 <title>紅樓夢</title> 36 <author>曹雪芹</author> 37 <pubInfo> 38 <publisher>中國教育出版社</publisher> 39 <pubDate>2005-09-06</pubDate> 40 <price>55.00</price> 41 </pubInfo> 42 </book> 43 </category> 44 </bookList>
bookListStyle.xslt文件的內容如下:
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>圖書列表</title> <style> <![CDATA[ body,td,th{ font-size:10pt; font-family:宋體; } body{ background-color:#c0c0c0; } table{ border:solid red 1px; margin-left:30px; margin-right:30px; background-color:#ffffc0; cellPadding:4; } ]]> </style> </head> <body> <table> <caption align="top" style="font-weight:bold; text-align:left">圖書列表</caption> <tr style="color:#8b0000" align="left"> <th width="5%">編號</th> <th width="10%">類別</th> <th width="25%">書名</th> <th width="20%">作者</th> <th width="25%">出版社</th> <th width="10%">出版日期</th> <th width="5%">定價</th> </tr> <xsl:for-each select="bookList/category/book"> <xsl:sort select="pubInfo/price" order="descending"/> <tr> <xsl:attribute name="style"> color: <xsl:if test="../@type[.='計算機']">blue</xsl:if> </xsl:attribute> <xsl:attribute name="title"> <xsl:value-of select="title"/> <xsl:choose> <xsl:when test="../@type[.='計算機']"> 類別:計算機類圖書 </xsl:when> <xsl:otherwise> 類別:小說類圖書 </xsl:otherwise> </xsl:choose> 作者:<xsl:value-of select="author"></xsl:value-of> <br/> 出版社:<xsl:value-of select="pubInfo/publisher"/> <br/> 出版日期:<xsl:value-of select="pubInfo/pubDate"/> <br/> 定價:<xsl:value-of select="pubInfo/price"/>元 </xsl:attribute> <td> <xsl:value-of select="@id"/> </td> <td> <xsl:value-of select="../@type"/> </td> <td> <xsl:value-of select="title"/> </td> <td> <xsl:value-of select="author"/> </td> <td> <xsl:value-of select="pubInfo/publisher"/> </td> <td> <xsl:value-of select="pubInfo/pubDate"/> </td> <td> <xsl:value-of select="pubInfo/price"/> </td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
這里不再對代碼進行分析,請讀者自己理解這段代碼,并動手寫一下自己的XSLT模板。這段代碼的運行效果如下圖:
以上是“XSLT模板如何轉換XML文檔”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。