- 浏览: 30766 次
-
文章分类
最新评论
a) 1.xml
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="1.xsl"?>
<forum>
<board id="1" name="Java Programming">
<message id="1"/>
</board>
<board id="2" name="C++ Programming">
<message id="2"/>
</board>
<board id="3" name="XML Programming">
<message id="3"/>
</board>
转自http://blog.csdn.net/nickcen/article/details/167171
</forum>
b) 1.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<title>Discussion Forum</title>
</head>
<body>
<ul>
<xsl:apply-templates select="forum/board"/>
</ul>
</body>
</html>
</xsl:template>
<xsl:template match="board">
<li>
<xsl:value-of select="@name"/>
<ul>
<xsl:apply-templates select="message"/>
</ul>
</li>
</xsl:template>
<xsl:template match="message">
<li>
Message <xsl:value-of select="@id"/>
</li>
</xsl:template>
</xsl:stylesheet>
2. <xsl:apply-templates>,<xsl:template>,<xsl:call-template>
a) <xsl:apply-templates>
i. 使用:
<xsl:apply-templates select="…" mode="…"/>
ii. 说明:<xsl:apply-templates>的作用就是从当前的路径开始,根据select的内容生成一个候选的节点列表,再对列表中的每一节点,根据mode属性的设定,查找某个匹配的<xsl:template>标记,并进行替换。
b) <xsl:template>
i. 使用:
<xsl:template match="…" name="…" priority="…" mode="…">
</xsl:template>
ii. 说明:<xsl-template>包含name属性时,则该模板将只能被<xsl:call-template>标记调用,而不会与候选的节点列表进行匹配。当有多个<xsl:template>与指定的节点匹配成功时,则最后遇上(或处于文件中更后位置)的<xsl:template>将被使用。若使用priority属性,则可以改变这种缺省的顺序,priority的值越大,则该<xsl:template>标记更会被优先使用。Mode参数与<xsl:apply-templates>中的mode值对应。
c) <xsl:call-template>
i. 使用:<xsl:call-template name="…"/>
ii. 说明:name属性与<xsl-template>中的name属性相对应,用于指明将调用哪个<xsl:template>
3. 流控制
a) <xsl:if>
i. 使用:
<xsl:if test="…">
…
</xsl:if>
ii. 说明:当test内的表达式为真时,则执行标记内的内容。在XSLT中只定义了<xsl:if>标记,而没有else和else if标记,因此,若需要表示多种选择时,可采用多个<xsl:if>标记,或使用<xsl:choose>标记。
b) <xsl:choose>
i. 使用:
<xsl:choose>
<xsl:when test="…">…</xsl:when>
<xsl:when test="…">…</xsl:when>
<xsl:otherwise>…</xsl:otherwise>
</xsl:choose>
ii. 说明:<xsl:choose>标记的作用类试于switch操作,但比switch具有更多的判断类型。
c) <xsl:for-each>
i. 使用:
<xsl:for-each select="…">
…
</xsl:for-each>
ii. 说明:该标记的作用与for循环操作类试。也可以使用配对的<xsl:apply-templates>和<xsl:template>来等效替换该<xsl:for-each>操作。例以1.xml为例
1. <xsl:apply-templates>和<xsl:template>
<xsl:apply-tmeplates select="message"/>
<xsl:template metch="message">
Message <xsl:value-of select="@id"/>
</xsl:template>
2. <xsl:for-each>
<xsl:for-each select="message">
Message <xsl:value-of select="@id"/>
</xsl:for-each>
4. 参数和变量
a) <xsl:variable>
i. 使用:
<xsl:variable name="var1">index.html</xsl:variable>
<xsl:variable name="var2" select="index.html"/>
ii. 说明:<xsl:variable>应该放于<xsl:template>内。若要调用该变量时,则有两种情况:若是在以xsl为前缀的标记内使用则使用“$变量名”的格式;而在其他情况则需要使用
“{$变量名}”的格式。
b) <xsl:param>
i. 使用:
<xsl:param name="par1" select="…"/>
ii. 说明:在<xsl:template>中嵌入<xsl:param>标记可获取由<xsl:apply-templates>或<xsl:call-template>中传递过来的参数值,select属性用于为该参数提供一个缺省值。
c) <xsl:with-param>
i. 使用:
<xsl:with-param name="par1" select="…"/>
ii. 说明:在<xsl:apply-templates>和<xsl:call-template>可嵌入<xsl:with-param>标记向目标的<xsl:template>传入一个参数。该参数值由select属性指定。
5. 输出
a) <xsl:output>
i. 使用:
<xsl:output method="…" indent="…"/>
ii. 说明:该标记一般位于文档的开头部分用于指明目标文档的属性。method的值一般为“html”,“xml”或“text”。其他的属性定义可参考《Java & XSLT》和XSLT的规范。
b) <xsl:value-of>
i. 使用:
<xsl:value-of select="…" disalbe-output-esacping="…"/>
ii. 说明:用于输出select所指定的值。disable-output-escaping用于指定某些符号是否可以不用转换,例如当<xsl:value-of>的输出值中包含“>”,则当该符号输出时将被转换为“>”,而若disable-output-escaping被指为true的话,则“>”将输出为“>”。特别的,当<xsl:output>的method属性指定为text时,该属性值将被忽略,“>”符号将输出为“>”。
c) <xsl:text>
i. 使用:
<xsl:text disable-output-escaping="…">…<xsl:text>
ii. 说明:输出标记之间的内容,disable-output-escaping属性的含义与<xsl:value-of>同。
d) <xsl:strip-space>和<xsl:preserve-space>
i. 使用:
<xsl:strip-space elements="…"/>
<xsl:preserve-space element="…"/>
ii. 说明:该两个标记都是<xsl:stylesheet>的直接子标记,用于指明是否保留elements属性指定的元素中的空格。
e) <xsl:processing-instruction>
i. 使用:
<xsl:processing-instruction name="…">…<xsl:processing-instruction>
ii. 说明:用于在目标文档中生成一个由name属性指定的processing-instruction。
f) <xsl:message>
i. 使用:
<xsl:message terminate="…">…<xsl:message>
ii. 说明:向目标文档输出标记间的内容,terminate属性用于指明XSLT处理器在输出该内容后,是否需要中止,缺省的属性值为“no”。
g) <xsl:copy>和<xsl:copy-of>
i. 使用:
<xsl:copy />
<xsl:copy-of select="…"/>
ii. 说明:<xsl:copy>用于复制当前节点到目标文件,但不包括当前节点的属性和子节点。<xsl:copy-of>用于递归的复制由select属性所指定的节点,包括属性,子节点等。
6. 节点生成
a) <xsl:attribute>
i. 使用:
<xsl:attribute name="…" namespace="…">…<xsl:attribute>
ii. 说明:定义一个由name指定的属性值。
b) <xsl:attribute-set>
i. 使用:
<xsl:attribute-set name="…" use-attribute-set="…">
<xsl:attribute name="…">…<xsl:attribute>
…
</xsl:attribute-set>
ii. 说明:定义一个由name命名的属性集合。通过use-attribute-set可以引入另一个属性集。
c) <xsl:element>
i. 使用:
<xsl:element name="…" namespace="…" use-attribute-set="…">…<xsl:element>
ii. 说明:产生一个由name指定的元素,通过use-attribute-set可以指定一个属性集。
7. 文档导入
a) <xsl:include>
i. 使用:<xsl:include href="…"/>
ii. 说明:导入由href指定的外来xsl文件,被导入文档中的template的优先级与当前文档一致,且<xsl:include>标记能出现于当前文档中的任何位置。
b) <xsl:import>
i. 使用:<xsl:import href="…"/>
ii. 说明:导入由href指定的外来xsl文件,被导入文档中的template的优先级低于当前文档中的同名template,另<xsl:import>标记应置于文档开始部分。
8. 其他
a) <xsl:sort>
i. 使用:
<xsl:sort select="…" order="…" case-order="…" data-type="…"/>
ii. 说明:对select属性指定的节点列表进行排列。order的候选值为“ascending”和“descending”。case-order的候选值为“uppper-first”和“lower-first”。data-type的候选值为“text”和“number”。text表明按字符顺序排列,number表明按数值大小进行排列。<xsl:sort>标记一般处于<xsl:apply-templates>或<xsl:for-each>中。
9. XSLT的缺省规则
a) 递归处理各个节点
<xsl:template match="*|/">
<xsl:apply-templates />
</xsl:template>
b) 递归输出所有文本内容和属性值
<xsl:template match="text()|@*">
<xsl:value-of select="."/>
</xsl:template>
c) 忽略所有processing-instruction和comment
<xsl:template match="processing-instruction()|comment()"/>
发表评论
-
冒泡方法
2014-04-20 11:49 664JavaSciprt事件中有两个很重要的特性:事件冒泡 以及目 ... -
offsetparent
2014-04-20 10:30 589offsetParent属性返回一个对象的引用,这个对象是距离 ... -
js函数
2014-03-08 17:38 01.js函数的实参对象argume ... -
js对象
2014-02-25 21:09 01.在js中所有实例对象都从同一个原型对象上继承属性。 2.构 ... -
js笔记
2014-02-23 18:48 01.函数在定义它的作用域中执行,而不是在调用它的作用域中执行 ... -
HTTP请求状态码
2014-02-12 15:54 5722012-04-01 10:54:07| 分类: Java ... -
JS获取元素的一些属性和设置元素的宽度等属性
2013-12-28 13:53 2085转】JS获取元素的一些属性和设置元素的宽度等属性 client ... -
xslt 去掉空格
2013-12-18 18:22 0XSLT中用normalize-space函数来清除元素的前后 ... -
全选反选和不选
2013-12-07 15:48 584在IE和火狐中用Js的childNodes返回的结果是不同的, ... -
高性能web开发 - 如何加载JS,JS应该放在什么位置?
2013-11-10 18:39 783外部JS的阻塞下载 所有浏览器在下载JS的时候,会阻止 ... -
spring mvc
2013-10-11 22:44 525一、前言: 大家好,Spring3 MVC是非常优秀的MVC ... -
cookie 和session 的区别详解
2013-09-25 17:14 390这些都是基础知识,不 ...
相关推荐
1. **创建 XSL 文件**:编写 XSL 规则,指定如何转换 XML 数据。 2. **链接 XSL 文件到 XML 文档**:通过 `<?xml-stylesheet type="text/xsl" href="yourstylesheet.xsl"?>` 这样的声明将 XSL 文件与 XML 文档关联...
1. XML概述 XML是一种自描述的元标记语言,意味着它可以被用来创建新的标记语言。XML文档主要由标记和文本组成,类似于HTML,但XML的标记没有预定义的含义,而是由用户根据需要定义。XML文档的数据内容和显示方式...
通过XSL,开发者可以控制XML数据的显示样式,实现数据与表现的分离。 ###### 1.3.4 DOM技术 DOM (Document Object Model) 是一种处理XML和HTML文档的标准接口,它允许程序以树形结构访问文档的各个部分。DOM将文档...
1. **XSL(XSLT)**:XSLT用于转换XML文档,可以将XML数据转换成HTML、PDF等多种格式,实现丰富的可视化效果。 2. **CSS样式**:CSS可以应用于XML文档,改变其在浏览器中的显示样式。 3. **DSO(Data Source ...
- **客户端转换模式**:XML和XSL文件均传输至客户端,由支持XML+XSL的浏览器实时转换。 ### 参数实体与一般实体的区别 - **一般实体**:定义在XML文件中,用于替换文本内容,引用时使用`&实体名;`。 - **参数实体*...
在XML中,所有标记都必须配对使用,且严格区分大小写。例如,如果开始标记是`<myElement>`,那么结束标记必须是`</myElement>`。此外,标记名称的命名规则规定,名称可以包含字母、数字和一些特殊字符,但不能以数字...
18. XSL用于转换XML数据,展示目的不同。 19. 数据岛技术用于在XML数据中嵌入HTML,跨浏览器兼容。 20. XML文档应有且只有一个根元素,标签需配对。 【编程题】 1. `<b>`标签用于加粗文本,`<p>`用于创建段落,`...
XHTML文件要求严格的语法,确保所有标签配对,属性使用小写,值需用引号包围,并且弃用了HTML的一些非标准特性。CSS则用于定义页面布局和元素样式。 2. **DOM(Document Object Model)**:DOM是HTML和XML文档的...