- 浏览: 73501 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
jinbo0120:
受教了,我还一直存在疑问呢,原来是1.5开始使用的...看来我 ...
5.0for循环 -
persistC:
1、到底在哪用cascade=&q ...
hibernate.hbm.xml总结 -
duanyong:
看到xml就烦。不知道为什么。嘿嘿。
hibernate.hbm.xml总结
<xsl:analyze-string>是XSLT2.0新增的指令,语法:
<xsl:analyze-string select="xpathExpression" regex="regExpression" flags="flag">
该指令的主要用途为分析字符串。select属性用于指定要分析的字符串,即inputString。
regex指定分析规则--正则表达式。
<xsl:analyze-string>可能包含如下内容元素(子元素):
1,<xsl:matching-substring>
<!---some instruction-->
</xsl:matching-substing>
用于指定符合正则表达式的子字符串所要执行的动作。
2,<xsl:non-matching-substring>
<!---some instruction-->
</xsl:non-matching-substring>
用于指定不符合正则表达式的子字符串所要执行的动作。
<xsl:analyze-string>的执行过程为:首先将输入字符串按照正则表达式分割成若干子字符串。然后依次对每个子字符串进行操作:如果子字符串符合正则表达式,那么就执行<xsl:matching-substring>指令(如果存在该指令的话);如果不符合正则表达式,那么就执行<xsl:non-matching-substring>指令(如果存在该指令的话)。
举例来说
<xsl:analyze-string select="abcd1234efg7890" regex="[a-z]+">
<xsl:matching-substring>
<!---some instructions-->
</xsl:matching-substring>
<xsl:non-matching-substring>
<!---some instructions-->
</xsl:non-matching-substring>
</xsl:analyze-string>
首先输入字符串按正则表示被分为四个子字符串--abcd,1234,efg,7890。
接着执行的指令为abcd(matching-instruction)-->1234(non-matching-instruction)-->efg(matching-instruction)-->7890(non-matching-instruction)。
下面举个具体的例子。
XML源文件:
<?xml version="1.0"?>
<root>
<branch>2500ppoabcuv12405tyuvirk</branch>
</root>
XSLT文件:
<root>
<branch>2500ppoabcuv12405tyuvirk</branch>
</root>
XSLT文件:
<?xml version='1.0'?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="regex" select="'\d{4}'"/>
<xsl:analyze-string select="root/branch" regex="{$regex}">
<xsl:matching-substring>
<digits><xsl:value-of select="."/></digits>
</xsl:matching-substring>
<xsl:non-matching-substring>
<word><xsl:value-of select="."/></word>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="regex" select="'\d{4}'"/>
<xsl:analyze-string select="root/branch" regex="{$regex}">
<xsl:matching-substring>
<digits><xsl:value-of select="."/></digits>
</xsl:matching-substring>
<xsl:non-matching-substring>
<word><xsl:value-of select="."/></word>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
</xsl:stylesheet>
转换结果:
<digits>2500</digits>
<word>ppoabcuv</word>
<digits>1240</digits>
<word>5tyuvirk</word>
如果将regex的属性直接写成:regex="\d{4}",我们得到的输出结果是:
<word>2500ppoabcuv1</word>
<digits>24</digits>
<word>05tyuvirk</word>
跟正确的结果不符,这是为什么呢?
这是因为在一个非xpath expression中大括号(curly brackets)括起来的内容表示xpath expression。所以,直接写成regex="\d{4}"时,真实的正则表达式变成了\d4。
要想得到\d{4},正则表达式需要写成regex="\d{{4}}"。
在XSLT中一般认为存在两种表示式,一种是xpath表达式,另一种是非xpath表达式。
用select属性指定的表达式一般是xpath表达式。例如:select="root/branch",表示root下的所有branch节点;但href="root/branch"则表示字符串root/branch。
在xpath表达式中不能使用大括号(curly brackets)。
在非xpath表达式中则需要使用大括号(curly brackets)来引用xpath表达式。
大括号在非xpath表达式中的使用一般有如下几种情况:
1,引用节点或属性
{a},{@a}
2,引用变量
{$var}
3,引用字符串
{'#abc'}
4,引用数字
{1}
5,{{expression}}这种形式,表示{expression}字符串。
本文出自 51CTO.COM技术博客
发表评论
-
XSLT2.0---正则表达式
2009-06-06 16:27 969其实,正则表达式是XPATH2.0定义的,暂且放在XSLT里说 ... -
XSLT2.0----<xsl:variable>和<xsl:sequence>
2009-06-06 16:25 2976我们知道,<xsl:variable>可以定义变量 ... -
XSLT2.0----XPATH2.0序列
2009-06-06 16:24 959严格说来XPATH2.0和XSLT2.0并无直接联系,但是XP ... -
XSLT2.0----字符映射
2009-06-06 16:23 685XSLT2.0提供了字符映射功能。 对于特殊字符或特殊字符, ... -
XSLT2.0---临时结果树
2009-06-06 16:23 1039<xsl:variable>可不是新东西了,它 ... -
XSLT2.0---多文件输出
2009-06-06 16:22 968<xsl:result-document>指 ... -
XSLT2.0---分组
2009-06-06 16:20 1228看了些关于XSLT2.0的东西,先来总结一下分组吧。 &l ... -
xsl2.0正则
2009-06-05 11:46 1044<xsl:analyze-string>是XSLT ... -
XSLT 2.0 的新特性
2009-06-05 11:44 1550XSLT 2.0 的新特性 关键 ... -
XSLT Designer快速入门指南
2008-12-15 21:07 904目录 概述 配 ... -
XSLT document()函数在IE与Firefox中的区别
2008-12-15 21:07 950XSLT 中 document() 函数的作用是用来访问扩展X ... -
了解XSLT
2008-12-15 21:06 956什么是XSLT? XSLT的英文标准名称为eXtensibl ... -
XSL中count()的使用
2008-12-15 21:05 1059XSL中用count()来取得xml中某种节点的个数 list ... -
XSL学习心得-制作图像超链接
2008-12-15 21:04 804这是我今天学习的时候遇到的另一个问题,做图像超链接要把链接地址 ... -
xslt的简单使用[xml-->html]
2008-12-15 21:03 1024XSLT命令[xml格式转换] 1.循环 <xsl:f ... -
XSL中利用xsl:for-each时给每一项添加序号
2008-12-15 21:02 1742经常用for-each来循环读取XML中的某个节点集,但常常需 ... -
第四章:XPath的语法
2008-12-15 21:00 9834.XPath的语法 我们在前 ... -
第三章:XSLT的元素语法
2008-12-15 20:59 889通过前面两章的介绍,我们已经对XSLT的基本概念和它的转换过程 ... -
第二章:XSLT的实例
2008-12-15 20:59 10112. XSLT的实例 2.1 XSLT如何转换XML 2.2 ... -
第一章:XSLT的概念
2008-12-15 20:58 7991.XSLT的概念 1.1 什么是XSLT 1.2 为什么要 ...
相关推荐
- **语法**:`<xsl:attribute name="string">string</xsl:attribute>` - **属性**: - `name`:必需,用于指定属性名。 - **示例**: ```xml <xsl:template match="book"> <book id="{isbn}"> <xsl:...
<td><xsl:value-of select="性别"/></td> <td><xsl:value-of select="描述"/></td> </tr> </xsl:for-each> ``` 这里的 `<xsl:for-each>` 选取了所有 `会员` 节点,并对每个节点执行一次模板中的代码。 #### 七...
`<xsl:apply-imports>` 元素在XSLT中用于执行从外部样式表导入的模板。当宿主样式表中有匹配规则时,`<xsl:apply-imports>` 会先调用导入的样式表中的对应模板,然后才执行宿主样式表中的模板。这在XSLT中提供了一种...
<xsl:with-param name="FromString" select="$FromString"/> <xsl:with-param name="ToString" select="$ToString"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <!-- 没有找到子字符串,直接输出原...
这意味着当遇到`<xsl:apply-imports>`时,XSLT处理器会查找并应用任何通过`<xsl:import>`指令引入的模板。 - 这个元素常用于继承机制,使得子样式表能够继承父样式表的功能,同时还能覆盖或扩展父样式表的行为。 - ...
<xsl:when test="contains($str,',')"><xsl:value-of select="substring-before($str,',')"/></xsl:when> <xsl:otherwise><xsl:value-of select="$str"/></xsl:otherwise> </xsl:choose> </xsl:attribute> </...
2. XSLT的流程控制包括`<xsl:if>`进行条件判断,`<xsl:for-each>`进行循环,以及`<xsl:choose>`, `<xsl:when>`, `<xsl:otherwise>`进行多分支选择。例如: ```xml <xsl:for-each select="cd"> <xsl:if test="price ...
`<xsl:apply-imports>`元素在XSLT中被用来执行由`<xsl:import>`语句导入的样式表中的模板。当XSLT处理器遇到`<xsl:apply-imports>`元素时,它将查找是否有任何适用的模板来自已导入的样式表,并执行它们。这在需要...
XSLT提供了丰富的功能,包括条件判断(`<xsl:if>`)、循环(`<xsl:for-each>`)、模板匹配(`<xsl:template>`)以及函数调用等,使得XML数据可以根据需要被灵活地呈现和转换。 在实际应用中,XSLT通常与XML解析器...
例如,如果“原料库.XML”中的数据组织为`<material><name>原料A</name><origin>中国</origin><price>100</price></material>`,我们可以编写模板匹配`<material>`元素,然后提取出`<name>`、`<origin>`和`<price>`...
XSLT还包含了更多其他元素和功能,例如 `<xsl:decimal-format>`、`<xsl:element>`、`<xsl:key>` 等等。每个元素都有其独特的用途,了解它们可以帮助开发人员更高效地进行XML数据的转换和处理。接下来将继续介绍更多...
<xsl:value-of select="position"/><xsl:text>\t</xsl:text> <xsl:value-of select="salary"/><xsl:text>\n</xsl:text> </xsl:template> </xsl:stylesheet> ``` 在这个XSLT样式表中,我们定义了两个模板:一个...
`<xsl:apply-imports>` 元素在 XSLT 中用于应用之前通过 `<xsl:import>` 命令导入的样式表中的模板规则。当 XSLT 处理器遇到 `<xsl:apply-imports>` 元素时,它会查找当前上下文中是否有匹配的模板存在于已导入的...
<b>Author:</b> <xsl:value-of select="author"/> </li> </xsl:template> </xsl:stylesheet> ``` 在这个例子中,我们首先定义了一个匹配根元素(`/`)的模板,它创建一个HTML页面并应用到XML文档的`<books>`元素...
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:math="http://exslt.org/math" xmlns:testng="http://testng.org"> <xsl:output method="html" indent="yes" omit...
8. `<xsl:param>` 和 `<xsl:with-param>` 元素:参数在XSLT中用于传递值。`<xsl:param>`定义参数,通常用于模板内部;而`<xsl:with-param>`用于向模板传递参数值。 ```xml <xsl:param name="paramName" select=...
<xsl:message>Matched root node</xsl:message> <xsl:apply-templates select="*"/> </xsl:template> <xsl:template match="html" xmlns:html="http://www.w3.org/1999/xhtml"> <xsl:message>Matched ...
在XSL中,`<xsl:for-each>`指令用于遍历XML文件中的元素,而`<xsl:merge>`元素(在XSLT 2.0及以上版本中提供)则专门用于合并数据。 以下是一个简单的XSL转换示例,展示了如何合并两个结构相同的XML文件: ```xml ...
在XSLT中,我们使用`<xsl:if>`元素来根据一个布尔表达式的值决定是否输出特定内容。例如,在案例1(element-if.xslt)中,我们筛选出Category属性为"计算机"的Book元素进行输出。具体语法结构如下: ```xml <xsl...