xlst
XSL :扩展样式表语言(EXtensible Stylesheet Language)。
XSL 包括三部分:
XSLT:一种用于转换 XML 文档的语言。
XPath:一种用于在 XML 文档中导航的语言。
XSL-FO:一种用于格式化 XML 文档的语言。
XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。
把文档声明为 XSL 样式表的根元素是 <xsl:stylesheet> 或 <xsl:transform>。
<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">
<xsl:template match="/">
<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>
</xsl:template>
在html文档中引用<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
 
 
match="/" 定义整个文档
<xsl:template> 元素用于构建模板。
<xsl:stylesheet>,定义此文档是一个 XSLT 样式表文档(连同版本号和 XSLT 命名空间属性)。
<xsl:value-of> 元素用于提取某个选定节点的值。如:
<xsl:value-of select="catalog/cd/title"/>
select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录
<xsl:for-each> 元素允许您在 XSLT 中进行循环。如:<xsl:for-each select="catalog/cd[artist='Bob Dylan']">
= (等于)
!= (不等于)
< (小于)
> (大于)
<xsl:sort> 元素用于对结果进行排序。如:<xsl:sort select="artist"/>
<xsl:if> 元素用于放置针对 XML 文件内容的条件测试。
语法
<xsl:if test="expression">
...
...如果条件成立则输出...
...
</xsl:if>
XSLT <xsl:choose> 元素用于结合 <xsl:when> 和 <xsl:otherwise> 来表达多重条件测试。
<xsl:choose> 元素
语法
<xsl:choose>
<xsl:when test="expression">
... 输出 ...
</xsl:when>
<xsl:otherwise>
... 输出 ....
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates> 元素可把一个模板应用于当前的元素或者当前元素的子节点。
使用样式表必须要求浏览器支持xslt,可以通过使用 JavaScript,我们可以进行浏览器确认测试,根据浏览器和使用者的需求来使用不同的样式表
XSLT 的设计目的之一就是使一种格式到另一种格式的转换成为可能,同时支持不同类型的浏览器以及不同的用户需求。并向所有类型的浏览器返回可读的数据。
<script type="text/javascript">
// Load XML
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load("cdcatalog.xml")
// Load XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("cdcatalog.xsl")
// Transform
document.write(xml.transformNode(xsl))
</script>
标签:
1、<xsl:apply-imports> 元素可应用来自导入样式表中的模版规则。
导入样式表中的模版规则的优先级要比主样式表中的模版规则要低。
如:<xsl:import href="standard.xsl"/>
<xsl:template match="message">
<div style="border:solid blue">
  <xsl:apply-imports/>
</div>
</xsl:template>
2、<xsl:apply-templates> 元素可向当前元素或当前元素的子元素应用模板。
Select:可选。规定要处理的节点。星号选取整个节点集。如果省略该属性,则将选取当前节点的所有子节点。
3、<xsl:attribute> 元素用于向元素添加属性。注释:<xsl:attribute> 元素会替换名称相同的已有属性。
Name:必需。规定属性的名称。
Namespace:可选。为属性定义命名空间的 URI。
<xsl:attribute-set name="font">
<xsl:attribute name="fname">Arial</xsl:attribute>
<xsl:attribute name="size">14px</xsl:attribute>
<xsl:attribute name="color">red</xsl:attribute>
</xsl:attribute-set>
4、xsl:attribute> 元素用于向元素添加属性。
5、<xsl:call-template> 元素可调用一个指定的模板。
Name:必需。规定被调用的模板名称。
6、<xsl:comment> 元素用于在结果树中创建注释节点。
7、<xsl:copy> 元素可创建当前节点的一个副本(拷贝)。
注释:当前节点的 Namespace 节点会被自动复制,但是当前节点的子节点和属性不会被自动复制!
use-attribute-sets: 可选。如果该节点是元素,则该属性是应用到输出节点的属性集列表,由空格分隔
8、<xsl:copy-of> 元素可创建当前节点的一个副本。注释:当前节点的 Namespace 节点、子节点以及属性都会被自动复制!
9、<xsl:decimal-format> 元素定义了当通过 format-number() 函数把数字转换为字符串时,所要使用的字符和符号。
| 
 name  | 
 name  | 
 可选。为此格式规定名称。  | 
| 
 decimal-separator  | 
 char  | 
 可选。规定小数点字符。默认是 "."。  | 
| 
 grouping-separator  | 
 char  | 
 可选。规定千的分隔字符。默认是 ","。  | 
| 
 infinity  | 
 string  | 
 可选。规定用来表示无穷大的字符串。默认是 "Infinity"。  | 
| 
 minus-sign  | 
 char  | 
 可选。规定表示负数的字符。默认是 "-"。  | 
| 
 NaN  | 
 string  | 
 可选。规定当值不是数字时使用的字符串。默认是 "NaN"。  | 
| 
 percent  | 
 char  | 
 可选。规定百分比符号的字符。默认是 "%"。  | 
| 
 per-mille  | 
 char  | 
 可选。规定千分号的字符。默认是 "‰"。  | 
| 
 zero-digit  | 
 char  | 
 可选。规定数字 0 的字符。默认是 "0"。  | 
| 
 digit  | 
 char  | 
 可选。规定字符,该字符用于指示需要使用数字的地方。默认是 #。  | 
| 
 pattern-separator  | 
 char.  | 
 可选。规定字符,该字符用于分隔格式模式中的正负次模式。默认是 ";"。  | 
如:
<xsl:decimal-format name="euro" decimal-separator="," grouping-separator="."/>
<xsl:template match="/">
<xsl:value-of select="format-number(26825.8, '#.###,00', 'euro')"/>
</xsl:template>
10、<xsl:element> 元素用于在输出文档中创建元素节点。
| 
 属性  | 
 值  | 
 描述  | 
| 
 name  | 
 name  | 
 必需。规定要创建的元素的名称(可以使用表达式为 name 属性赋值,这个表达式是在运行时进行计算的,比如:<xsl:element name="{$country}" />)  | 
| 
 namespace  | 
 URI  | 
 可选。规定元素的命名空间 URI。(可以使用表达式为 namespace 属性赋值,这个表达式是在运行时进行计算的,比如:<xsl:element name="{$country}" namespace="{$someuri}"/>)  | 
| 
 use-attribute-sets  | 
 namelist  | 
 可选。空格分隔的属性集,该属性集包含了需要向元素添加的属性。  | 
11、<xsl:fallback> 元素规定了在 XSL 处理程序不支持 XSL 元素时,所执行的替代代码。
12、<xsl:import> 元素是顶层元素,用于把一个样式表中的内容倒入另一个样式表中。
注释:被导入的样式的优先级低于导出的样式表
13、<xsl:include> 元素是顶层元素(top-level element),把一个样式表中的样式表内容包含到另一个样式表中。
注释:被包含的样式表(included style sheet)拥有与包含的样式表(including style sheet)相同的优先级。
注释:该元素必须是 <xsl:stylesheet> 或 <xsl:transform> 的子节点。
| 
 href  | 
 URI  | 
 必需。规定要包含的样式表的 URI。  | 
14、<xsl:key> 元素是顶层元素,它可声明一个命名的键(即为 XML 文档中指定的元素分配的名称和值对)。
此键通过 key() 函数在样式表中使用,帮助您有效地在复杂的 XML 文档中访问分配的元素。。
注释:键不必是唯一的!
| 
 属性  | 
 值  | 
 描述  | 
| 
 name  | 
 name  | 
 必需。规定键的名称。  | 
| 
 match  | 
 pattern  | 
 必需。定义该键被应用到哪个节点。  | 
| 
 use  | 
 expression  | 
 必需。指定要作为该键的值使用的表达式。 键值可以是下列任一值:属性、子元素或匹配元素的内容。  | 
15、<xsl:message> 元素可向输出写一条消息。该元素主要用于报告错误。
该元素能够包含几乎任何其他的 XSL 元素(<xsl:text> 、<xsl:value-of> 等等)。
terminate 属性允许您选择在错误发生时,是否应终止转换。
16、<xsl:namespace-alias> 元素用于在输出中把样式表中的命名空间替换为不同的命名空间,换句话说,使用其他前缀替换与给定命名空间关联的前缀。
注释:<xsl:namespace-alias> 是顶层元素(top-level element),且必须是 <xsl:stylesheet> 或 <xsl:transform> 的子元素。
| 
 属性  | 
 值  | 
 描述  | 
| 
 stylesheet-prefix  | 
 prefix #default  | 
 必需。规定您希望更改的命名空间。  | 
| 
 result-prefix  | 
 prefix #default  | 
 必需。为输出规定期望的命名空间。  | 
17、<xsl:number> 元素用于测定在源中当前节点的整数位置。它也用于将格式化的数字插入结果树。
| 
 属性  | 
 值  | 
 描述  | 
||
| 
 count  | 
 expression  | 
 可选。XPath 表达式,规定要计算的节点。  | 
||
| 
 level  | 
 single multiple any  | 
 可选。控制如何分配序号。 值可以是: single (默认) multiple any (Netscape 6 不支持)  | 
||
| 
 from  | 
 expression  | 
 可选。XPath 表达式,规定从何处开始计数。  | 
||
| 
 value  | 
 expression  | 
 可选。规定用户提供的数字,用于代替产生的序号。  | 
||
| 
 format  | 
 formatstring  | 
 可选。定义数字的输出格式。可以使用的值。  | 
||
| 
 lang  | 
 languagecode  | 
 可选。规定用于编号的语言字母表。  | 
||
| 
 letter-value  | 
 alphabetic traditional  | 
 可选。消除使用字母的编号序列之间的歧义。值 "alphabetic" 指定字母序列;值 "traditional" 指定其他序列。默认值为 "alphabetic"。  | 
||
| 
 grouping-separator  | 
 character  | 
 可选。规定使用什么字符来分隔组或数字。默认是逗号。  | 
||
| 
 grouping-size  | 
 number  | 
 可选。规定分组的大小。默认是 3。  | 
||
| 
 式标记  | 
 生成的序列  | 
|||
| 
 1  | 
 1 2 3 4 5 ... 10 11 12 ...  | 
|||
| 
 01  | 
 01 02 03 ... 19 10 11 ... 99 100 101...  | 
|||
| 
 a  | 
 a b c . .  | 
|||
| 
 A  | 
 A B C ...Z AA AB AC...  | 
|||
| 
 i  | 
 i ii iii iv v vi vii viii ix x...  | 
|||
| 
 I  | 
 I II III IV V VI VII VIII IX X...  | 
|||
18、<xsl:output> 元素定义了输出文档的格式。
注释:<xsl:output> 是顶层元素(top-level element),必须是 <xsl:stylesheet> 或 <xsl:transform> 的子节点。
| 
 method  | 
 xml html text name  | 
 可选。定义输出的格式。默认是 XML。Netscape 6 仅支持 "html" 和 "xml"。  | 
| 
 version  | 
 string  | 
 可选。设置输出格式的 W3C 版本号。(仅在 method="html" or method="xml" 时使用)。  | 
| 
 encoding  | 
 string  | 
 可选。设置输出中编码属性的值。  | 
| 
 omit-xml-declaration  | 
 yes no  | 
 可选。 "yes" 规定在输出中省略 XML 声明 (<?xml...?>)。 "no" 规定应在输出中包含 XML 声明。默认是 "no"。  | 
| 
 standalone  | 
 yes no  | 
 可选。规定 XSLT 处理器是否应输出独立文档声明;该值必须为 yes 或 no。默认是 "no"。Netscape 6 不支持该属性。  | 
| 
 doctype-public  | 
 string  | 
 可选。规定 DTD 中要使用的公共标识符。即输出中 DOCTYPE 声明的 PUBLIC 属性的值。  | 
| 
 doctype-system  | 
 string  | 
 可选。规定 DTD 中要使用的系统标识符。即输出中 DOCTYPE 声明的 SYSTEM 属性的值。  | 
| 
 cdata-section-elements  | 
 namelist  | 
 可选。一个空格分隔的元素列表,这些元素的文本内容应作为 CDATA 部分来输出。  | 
| 
 indent  | 
 yes no  | 
 可选。在输出结果树时是否要增加空白;该值必须为 yes 或 no。Netscape 6 不支持该属性。  | 
| 
 media-type  | 
 string  | 
 可选。定义输出的 MIME 类型(数据的媒体类型)。默认是 "text/xml"。Netscape 6 不支持该属性。  | 
19、<xsl:param> 元素用于声明局部或全局参数。
注释:如果在模板内声明参数,就是局部参数,如果作为顶层元素来声明,就是全局参数
| 
 属性  | 
 值  | 
 描述  | 
| 
 name  | 
 name  | 
 必需。规定参数的名称。  | 
| 
 select  | 
 expression  | 
 可选。规定 XPath 表达式,该表达式是参数的默认值。  | 
20、<xsl:preserve-space> 元素用于定义保留空白的元素。
<xsl:strip-space> 元素用于定义删除空白的元素。
注释:保留空白是默认的设置,所以只有当使用 <xsl:strip-space> 元素使才有必要使用 <xsl:preserve-space> 元素。
注释:<xsl:preserve-space> 元素和 <xsl:strip-space> 元素都是顶层元素(top-level element)。
21、<xsl:processing-instruction> 元素可向输出写一条处理指令,即生成处理指令节点。
| 
 name  | 
 process-name  | 
 必需。规定处理指令的名称。  | 
22、<xsl:sort> 元素用于对结果进行排序。
注释:<xsl:sort> 总是位于 <xsl:for-each> 或 <xsl:apply-templates> 内部。
| 
 select  | 
 XPath-expression  | 
 可选。规定节点的排序关键字,即根据哪个节点或节点集来排序。  | 
| 
 lang  | 
 language-code  | 
 可选。规定排序所用的语言。  | 
| 
 data-type  | 
 text number qname  | 
 可选。规定被排序的数据的数据类型。默认是 "text"。  | 
| 
 order  | 
 ascending descending  | 
 可选。规定排序顺序。默认是 "ascending"。  | 
| 
 case-order  | 
 upper-first lower-first  | 
 可选。规定是否首先按大写字母顺序进行排序。  | 
23、<xsl:stylesheet> 和 <xsl:transform> 元素是完全同义的元素。都被用来定义样式表的根元素。
| 
 version  | 
 version  | 
 必需。规定样式表的 XSLT 版本。  | 
| 
 extension-element-prefixes  | 
 list  | 
 可选。扩展元素的命名空间前缀列表,用空格分隔。 Netscape 6 不支持该属性。  | 
| 
 exclude-result-prefixes  | 
 list  | 
 可选。不应再输出中出现的命名空间前缀列表,用空格分隔。  | 
| 
 id  | 
 name  | 
 可选。样式表的唯一 id。 Netscape 6 不支持该属性。  | 
24、<xsl:template> 元素包含了当匹配指定节点时要应用的规则。
match 属性用于把模板关联到某个 XML 元素。match 属性也能用于为 XML 文档的全部分支定义模板(比如,match="/" 定义了整个文档)。
注释:<xsl:template> 是顶层元素(top-level element)。
| 
 name  | 
 name  | 
 可选。为模板定义名称。 注释:如果省略该属性,则必须设置 match 属性。  | 
| 
 match  | 
 pattern  | 
 可选。模板的匹配模式。 注释:如果省略该属性,则必须设置 name 属性。  | 
| 
 mode  | 
 mode  | 
 可选。为模板规定模式。  | 
| 
 priority  | 
 number  | 
 可选。模板的优先级编号。  | 
25、<xsl:text> 元素用于向输出写文本,即通过样式表生成文本节点。
| 
 disable-output-escaping  | 
 yes no  | 
 可选。 默认值为 "no"。如果值为 "yes",通过实例化 <xsl:text> 元素生成的文本节点在输出时将不进行任何转义。 比如如果设置为 "yes",则 "<" 将不进行转换。如果设置为 "no",则被输出为 "<"。 Netscape 6 不支持该属性。  | 
26、<xsl:stylesheet> 和 <xsl:transform> 元素是完全同义的元素。都被用来定义样式表的根元素。
27、<xsl:value-of> 元素可提取选定节点的值。
<xsl:value-of> 元素可用于选取某个 XML 元素的值,并把它输出。
注释:select 属性(必选)的值是一个 XPath 表达式。
| 
 select  | 
 expression  | 
 必需。XPath 表达式,规定了从哪个节点/属性来提取值。  | 
| 
 disable-output-escaping  | 
 yes no  | 
 默认值为 "no"。如果值为 "yes",通过实例化 <xsl:text> 元素生成的文本节点在输出时将不进行任何转义。 比如如果设置为 "yes",则 "<" 将不进行转换。如果设置为 "no",则被输出为 "<"。  | 
28、<xsl:variable> 元素用于声明局部或全局的变量。
注释:如果被声明为顶层元素,则该变量是全局的,而如果在模板内声明,则变量是本地的。
注释:一旦您设置了变量的值,就无法改变或修改该值!
提示:您可以通过 <xsl:variable> 元素的内容或通过 select 属性,向变量添加值!
| 
 name  | 
 name  | 
 必需。规定变量的名称。  | 
| 
 select  | 
 expression  | 
 可选。定义变量的值。  | 
29、<xsl:with-param> 元素定义了传递给模板的参数的值。
<xsl:with-param> 元素的 name 属性的值必须与 <xsl:param> 元素中的 name 相匹配,否则将忽略 <xsl:with-param> 元素,。<xsl:call-template> 和 <xsl:apply-templates> 中均允许使用 <xsl:with-param> 元素。
| 
 name  | 
 name  | 
 必需。规定参数的名称。  | 
| 
 select  | 
 expression  | 
 可选。定义参数的值的 XPath 表达式。  | 
XQuery 1.0、XPath 2.0 以及 XSLT 2.0 共享相同的函数库。
| 
 名称  | 
 描述  | 
| 
 current()  | 
 返回当前节点作为唯一成员的节点集。  | 
| 
 document()  | 
 用于访问外部 XML 文档中的节点。  | 
| 
 element-available()  | 
 检测 XSLT 处理器是否支持指定的元素。  | 
| 
 format-number()  | 
 把数字转换为字符串。  | 
| 
 function-available()  | 
 检测 XSLT 处理器是否支持指定的函数。  | 
| 
 generate-id()  | 
 返回唯一标识指定节点的字符串值。  | 
| 
 key()  | 
 检索以前使用 <xsl:key> 语句标记的元素。  | 
| 
 node-set  | 
 将树转换为节点集。产生的节点集总是包含单个节点并且是树的根节点。  | 
| 
 system-property()  | 
 返回系统属性的值。  | 
| 
 返回未解析实体的 URI。  | 
                    
                
                
            
        
浙公网安备 33010602011771号