xsl对replace函数的支持不是很好,在1.0不好用,2.0也不好用。
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
<catalog>
<cd>
<title>/s/abc/s/cdcc</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Empire Burlesquebbb</title>
<artist>Bob Dylanbbb</artist>
<country>USAbbb</country>
<company>Columbiabbb</company>
<price>10.90bbb</price>
<year>1985bbb</year>
</cd>
</catalog>
<!--将title中的字符串/s/替换成/cl/,全局替换-->
<?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:variable name="titleInfo" select="title"/>
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="$titleInfo"/>
<xsl:with-param name="replace" select="'/s/'"/>
<xsl:with-param name="by" select="'/cl/'"/>
</xsl:call-template>
</td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
<xsl:template name="string-replace-all">
<xsl:param name="text"/>
<xsl:param name="replace"/>
<xsl:param name="by"/>
<xsl:choose>
<xsl:when test="contains($text,$replace)">
<xsl:value-of select="substring-before($text,$replace)"/>
<xsl:value-of select="$by"/>
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="substring-after($text,$replace)"/>
<xsl:with-param name="replace" select="$replace"/>
<xsl:with-param name="by" select="$by"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
<!--将title中的字符串/s/替换成/cl/,只替换一次-->
<?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:variable name="titleInfo" select="title"/>
<xsl:call-template name="string-replace-once">
<xsl:with-param name="text" select="$titleInfo"/>
<xsl:with-param name="replace" select="'/s/'"/>
<xsl:with-param name="by" select="'/cl/'"/>
</xsl:call-template>
</td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
<xsl:template name="string-replace-once">
<xsl:param name="text"/>
<xsl:param name="replace"/>
<xsl:param name="by"/>
<xsl:choose>
<xsl:when test="contains($text,$replace)">
<xsl:value-of select="substring-before($text,$replace)"/>
<xsl:value-of select="$by"/>
<xsl:value-of select="substring-after($text,$replace)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
引用
http://zh-cn.w3support.net/index.php?db=so&id=1069092
分享到:
相关推荐
这篇博文主要讨论如何在Xalan中实现XSLT自定义函数并与Java代码进行关联。 首先,我们需要理解XSLT自定义函数的概念。XSLT标准库并不包含所有可能需要的功能,因此开发者有时需要创建自己的函数来满足特定需求。...
每个 `<xsl:template>` 都有一个 `match` 属性,用于指定模板应应用于哪种节点。 **语法:** ```xml <xsl:template match="pattern" mode="name"> template content </xsl:template> ``` `pattern` 指定模板应匹配...
《docbook自定义xsl》 在IT领域,DocBook是一种广泛应用的XML文档格式,用于编写技术手册、书籍、教程等技术文档。它提供了一种结构化的语言来描述内容,而XSL(eXtensible Stylesheet Language)则用于转换这些...
在本文中,我们探讨的是如何使用XSL和ASP(Active Server Pages)技术实现XML文档的在线编辑功能。ASP是一种由微软开发的服务器端脚本环境,可以生成动态网页内容。当Netscape浏览器对XML的支持不足时,服务器端处理...
在本示例中,我们将深入探讨如何使用XSL来处理XML文档,以实现数据的合并和格式化。 XSL的核心概念包括模板(Templates)、选择器(Selectors)和模式(Patterns)。模板定义了输出的新结构,选择器则决定了哪些XML...
本文将深入探讨如何利用XSLT中的`substring-before()`和`substring-after()`函数来实现这一功能,并通过具体的示例代码加以说明。 ### XSLT中的`substring-before()`与`substring-after()` 在XSLT中,`substring-...
<xsl:template match="book"> <b>Title:</b> <xsl:value-of select="title"/> <b>Author:</b> <xsl:value-of select="author"/> </xsl:template> </xsl:stylesheet> ``` 5. 应用场景: - 数据...
在这个名为"treemenu"的项目中,作者通过结合XML和XSL,实现了动态生成无限级树形菜单的功能,这对于构建复杂的网站导航系统尤其有用。下面我们将深入探讨这些技术以及它们如何协同工作。 XML是一种标记语言,其...
常见的XSL元素包括模板(`<xsl:template>`),用于定义如何处理XML节点;选择器(`<xsl:apply-templates>`),用于应用模板到XML文档的特定部分;变量(`<xsl:variable>`)和参数(`<xsl:param>`),用于存储和传递...
本主题主要关注如何使用XSL解析XML以生成表格,并通过JavaScript实现表格行的动态隐藏与显示。 首先,我们要理解XSL的工作原理。XSL由三部分组成:XSLT(XSL Transformations),XPath(XML Path Language)和XSL-...
<xsl:template name="StringReplace"> <xsl:param name="SrcString"/> <xsl:param name="FromString"/> <xsl:param name="ToString"/> <xsl:choose> <xsl:when test="contains($SrcString, $FromString)"> ...
在HTML页面中,我们可以使用JavaScript来加载XML和XSL文件,然后应用XSL转换得到HTML,最后使用DOM操作来实现树形目录的交互功能。以下是一个简单的JavaScript示例: ```javascript function loadTree() { var xhr...
<xsl:template match="message"> <xsl:apply-imports/> </xsl:template> </xsl:stylesheet> ``` 2. **`<xsl:apply-templates>` 元素** - **定义与用法**:此元素用于选择并应用一组匹配的模板到当前节点...
在XML中结合CSS和XSL,可以实现数据的可视化呈现和逻辑变换。 首先,我们来看CSS如何应用于XML。CSS通常用于HTML,但同样可以与XML一起工作,以控制XML文档的显示样式。要将CSS应用到XML,你需要创建一个CSS样式表...
在网页开发中,XML通常与XSL(eXtensible Stylesheet Language)和JavaScript结合使用,来实现动态内容展示,比如构建无限极菜单。 XSL是一种样式表语言,用于转换XML文档的结构和格式。它包括XSLT(XSL ...
### XSL简明教程(5): 使用Order-by属性进行排序 ...总之,`order-by`属性为XSL提供了强大的数据排序功能,使得开发者能够更加灵活地控制XML数据的展示方式。这对于构建高效、响应式的Web应用至关重要。
在提供的压缩包文件中,可能包含了实现这一功能的源代码或示例文件。通过分析这些文件,我们可以更深入地了解XML和XSL的实际应用,学习如何结合这两者来创建动态、自适应的菜单系统。这是一项实用的技能,对于开发...
此外,熟悉XPath的语法和功能对于有效使用XSL至关重要,因为XPath是XSLT中定位和操作XML数据的主要工具。 五、实际应用 XSL在许多领域都有广泛应用,如网页动态生成、数据交换、报告生成等。通过XSL,开发者可以...
<xsl:template match="node()"> <xsl:text>
</xsl:text> <!-- 换行 --> <xsl:value-of select="name()" /> <!-- 输出元素名 --> <xsl:apply-templates select="child::*" /> <!-- 递归处理子元素 --> </xsl...
在实际应用中,你可能还会遇到条件判断(`<xsl:if>`和`<xsl:choose>`)、循环(`<xsl:for-each>`)、变量(`<xsl:variable>`和`<xsl:param>`)以及导入和包含其他样式表(`<xsl:import>`和`<xsl:include>`)等功能。...