1. 样式声明:
<xsl:stylesheet>或<xsl:transform>
2. XSLT常用元素:
2.1 <xsl:template>:创建模板
Match属性的作用是使模板和XML元素相关联
e.g.:<xsl:template match="\">......</xsl:template>
2.2 <xsl:value-of>:选取XML元素,并添加到已被转换的输出流中
e.g.:<xsl:value-of select = "xpath"/>
2.3 <xsl:for-each>:循环
2.4 <xsl:sort>:对结果进行排序
e.g.:<xsl:for-each select ="catalog/cd["article='Bob']">
<xsl:sort select="article"/>
.....
</xsl:for-each>
在我实际练习时,发现如果select属性中若要带参数,需要按照如下语法:<xsl:sort select="*[name()=$param1Name]" order="{$para2Name}"/>
2.5 <xsl:if>:相当于if-then
<xsl:if test="price>10">
......
</xsl:if>
2.6 <xsl:choose>:相当于if-then-else
<xsl:choose>
<xsl:when test="expression">
......
</xsl:when>
<xsl:otherwise>
......
</xsl:otherwise>
</xsl:choose>
3. XSLT常用函数
3.1 current():返回当前节点
e.g.:<xsl:value-of select="current()"/>
等效于:<xsl:value-of select="."/>
3.2 document():访问一个外部的XML文档的节点
e.g.:<xsl:value-of select="document('other.xml')/root/xpath"/>
实际应用中,貌似document后面的接的Xpath中不能带参数变量,例如这样会出现解析错误:"document('other.xml')/root/$paramName/ChildNode"
3.3 element-available():测试指定的元素是否能被XSLT处理器支持
e.g.:<xsl:when test="element-available('xsl:comment')">
判断是否支持注释
</xsl:when>
3.4 format-number():数字转换为字符串
e.g.:<value-of select="format-number(500,'#.00')"/>
3.5 function-available():测试是否支持该函数
e.g.:<xsl:if test="function-availabel('current')">
......
</xsl:if>
3.6 generate-id():返回自增独立唯一标识,类似于SQL中的identity(1,1)
3.7 key():使用由<xsl:key>指定的索引[index],从当前文档中返回一个节点组;
e.g.: <xsl:for-each select="key('string','object')">
......
</xsl:for-each>
3.8 system-property():返回通过name属性指定的系统属性值
e.g.:<xsl:value-of select="system-property('xsl:version')"/>
3.9 unprased-entity-uri():返回未解析实体的URI.
4. JS传参数给XSLT:
JS中:
xml.load("filename.xml");
var xsl = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
xsl.load("filename.xsl");
var xslTemplate = new ActiveXObject("MSXML2.XSLTemplate");
xslTemplate.stylesheet = xsl;
var xslProcessor = xslTemplate.createProcessor();
xslProcessor.input = xml;
xslProcessor.addParameter("ParamName", paramValue);
xslProcessor.transform();
XSLT中:
<param name="ParamName"></param>
用$ParamName取得参数的值