XSLT扩展样式表转换语言

1.简介

 

XSLT(XML StyleSheet Language Transformations)扩展样式表转换语言,用于将XML文档转换为其它类型的文本文档,如HTML。

 

它起始于XSL(XML StyleSheet Language),结束于XSLT、XPath以及XSL-FO。

 

XSL对于XML就相当于CSS对于HTML。XSL包含三个部分:XPath、XSLT、XSL-FO。

XPath:一种用于在 XML 文档中导航的语言。

XSL-FO:一种用于格式化 XML 文档的语言。

 

2.工作原理

 

XSLT使用XPath在XML文档中查找信息,通过添加,删除或者重新排列元素的方式把源XML转化为目标文档。

 

3.使用 

--先看一个例子,将下述两个文件放在同一目录下,用浏览器打开。

cdcatalog.xsl

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <h2>My CD Collection</h2>
    <table border="1">
    <tr bgcolor="#9acd32">
      <th align="left">Title</th>
      <th align="left">Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title"/></td>
      <td><xsl:value-of select="artist"/></td>
    </tr>
    </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

 cdcatalog.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
</catalog>

 

--分析

XSL文件一般以xsl作为后缀,实质为一XML文件。

根元素

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 或者

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 

XML使用对应的XSLT需要进行引用,方法如下。

<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>

 

--几个重要的XSL元素

----<xsl:template>

用于构建模板,XSL由一个或多个模板规则组成。

match属性用于关联XML元素和模板,值为XPath表达式,如"/"代表整个文档。

即通过match属性确定对XML中的某个元素应用某套模板规则。

 

----<xsl:value-of>

用于提取某个选定节点的值,并把对应的值输出都结果文档中。

select属性用于定位节点,为一XPath表达式,以"/"开头时表示绝对位置,否则表示相对位置。

 

----<xsl:for-each>

用于在XSLT中进行循环。

select属性用于定位要循环的目标节点,为一XPath表达式,可以使用XPath进行过滤。

 

----<xsl:sort>

位于<xsl:for-each>内部,用于对列表进行排序。

select属性指示需要排序的XML元素,为一XPath表达式。

 

----<xsl:if>

用于条件判断

test属性为条件表达式,如price &gt; 10表示price元素的值大于10

 

----<xsl:choose><xsl:when><xsl:otherwise>

相当于if...else if...else...,用于多重条件判断。

xls:when中的test元素为条件表达式。

 

----<xsl:apply-templates>

用于把一个模板应用于当前的元素或者当前元素的子节点

select用于指定要处理的节点。

通常用于结构化XSL文件。

 

----<xsl:variable>

用于声明局部或全局的变量

如果被声明为顶层元素,则该变量是全局的,而如果在模板内声明,则变量是局部的

name属性为变量名

select属性为变量值,也可通过<xsl:value-of/>等方式的文本节点来对其赋值。

--<xsl:variable name="id" select="'test'"/>

--<xsl:variable name="id">
     <xsl:value-of select="Product/Id"/>
   </xsl:variable>

获取值时在变量名前加一个$即可

<xsl:value-of select="substring($id,3)"/>

 

----<xsl:copy-of>

创建当前节点的一个副本,当前节点的 Namespace 节点、子节点以及属性都会被自动复制 

select属性,必须,指定要COPY的节点。

 

----使用时可使用XSLT内置函数和XPath函数。

 

4.参考资料

 

http://www.w3school.com.cn/xsl/

 

你可能感兴趣的:(XSL)