`

XSL自定义template实现replace功能

阅读更多
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)

    这篇博文主要讨论如何在Xalan中实现XSLT自定义函数并与Java代码进行关联。 首先,我们需要理解XSLT自定义函数的概念。XSLT标准库并不包含所有可能需要的功能,因此开发者有时需要创建自己的函数来满足特定需求。...

    Xsl参考(pdf)

    每个 `&lt;xsl:template&gt;` 都有一个 `match` 属性,用于指定模板应应用于哪种节点。 **语法:** ```xml &lt;xsl:template match="pattern" mode="name"&gt; template content &lt;/xsl:template&gt; ``` `pattern` 指定模板应匹配...

    docbook自定义xsl

    《docbook自定义xsl》 在IT领域,DocBook是一种广泛应用的XML文档格式,用于编写技术手册、书籍、教程等技术文档。它提供了一种结构化的语言来描述内容,而XSL(eXtensible Stylesheet Language)则用于转换这些...

    利用XSL和ASP实现XML文档在线编辑

    在本文中,我们探讨的是如何使用XSL和ASP(Active Server Pages)技术实现XML文档的在线编辑功能。ASP是一种由微软开发的服务器端脚本环境,可以生成动态网页内容。当Netscape浏览器对XML的支持不足时,服务器端处理...

    xsl使用示例代码

    在本示例中,我们将深入探讨如何使用XSL来处理XML文档,以实现数据的合并和格式化。 XSL的核心概念包括模板(Templates)、选择器(Selectors)和模式(Patterns)。模板定义了输出的新结构,选择器则决定了哪些XML...

    xml+xsl中分割字符

    本文将深入探讨如何利用XSLT中的`substring-before()`和`substring-after()`函数来实现这一功能,并通过具体的示例代码加以说明。 ### XSLT中的`substring-before()`与`substring-after()` 在XSLT中,`substring-...

    xml xsl网页生成

    &lt;xsl:template match="book"&gt; &lt;b&gt;Title:&lt;/b&gt; &lt;xsl:value-of select="title"/&gt; &lt;b&gt;Author:&lt;/b&gt; &lt;xsl:value-of select="author"/&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; ``` 5. 应用场景: - 数据...

    一个利用xml和xsl解释生成无限级的树形菜单的源程序

    在这个名为"treemenu"的项目中,作者通过结合XML和XSL,实现了动态生成无限级树形菜单的功能,这对于构建复杂的网站导航系统尤其有用。下面我们将深入探讨这些技术以及它们如何协同工作。 XML是一种标记语言,其...

    XSL开发基础参考资料

    常见的XSL元素包括模板(`&lt;xsl:template&gt;`),用于定义如何处理XML节点;选择器(`&lt;xsl:apply-templates&gt;`),用于应用模板到XML文档的特定部分;变量(`&lt;xsl:variable&gt;`)和参数(`&lt;xsl:param&gt;`),用于存储和传递...

    xsl解析xml生成表格,表格行动态隐藏与显示

    本主题主要关注如何使用XSL解析XML以生成表格,并通过JavaScript实现表格行的动态隐藏与显示。 首先,我们要理解XSL的工作原理。XSL由三部分组成:XSLT(XSL Transformations),XPath(XML Path Language)和XSL-...

    XSL中进行字符串替换

    &lt;xsl:template name="StringReplace"&gt; &lt;xsl:param name="SrcString"/&gt; &lt;xsl:param name="FromString"/&gt; &lt;xsl:param name="ToString"/&gt; &lt;xsl:choose&gt; &lt;xsl:when test="contains($SrcString, $FromString)"&gt; ...

    使用JavaScript+XML+XSL创建树形目录

    在HTML页面中,我们可以使用JavaScript来加载XML和XSL文件,然后应用XSL转换得到HTML,最后使用DOM操作来实现树形目录的交互功能。以下是一个简单的JavaScript示例: ```javascript function loadTree() { var xhr...

    Xslt语法参考手册.pdf

    &lt;xsl:template match="message"&gt; &lt;xsl:apply-imports/&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; ``` 2. **`&lt;xsl:apply-templates&gt;` 元素** - **定义与用法**:此元素用于选择并应用一组匹配的模板到当前节点...

    在xml中使用CSS和XSL

    在XML中结合CSS和XSL,可以实现数据的可视化呈现和逻辑变换。 首先,我们来看CSS如何应用于XML。CSS通常用于HTML,但同样可以与XML一起工作,以控制XML文档的显示样式。要将CSS应用到XML,你需要创建一个CSS样式表...

    xml +js+xsl 实现无限极菜单

    在网页开发中,XML通常与XSL(eXtensible Stylesheet Language)和JavaScript结合使用,来实现动态内容展示,比如构建无限极菜单。 XSL是一种样式表语言,用于转换XML文档的结构和格式。它包括XSLT(XSL ...

    XSL简明教程(5)

    ### XSL简明教程(5): 使用Order-by属性进行排序 ...总之,`order-by`属性为XSL提供了强大的数据排序功能,使得开发者能够更加灵活地控制XML数据的展示方式。这对于构建高效、响应式的Web应用至关重要。

    利用xml和xsl自动生成菜单

    在提供的压缩包文件中,可能包含了实现这一功能的源代码或示例文件。通过分析这些文件,我们可以更深入地了解XML和XSL的实际应用,学习如何结合这两者来创建动态、自适应的菜单系统。这是一项实用的技能,对于开发...

    跟我学xsl.doc

    此外,熟悉XPath的语法和功能对于有效使用XSL至关重要,因为XPath是XSLT中定位和操作XML数据的主要工具。 五、实际应用 XSL在许多领域都有广泛应用,如网页动态生成、数据交换、报告生成等。通过XSL,开发者可以...

    xsl递归解晰xml

    &lt;xsl:template match="node()"&gt; &lt;xsl:text&gt;&#xa;&lt;/xsl:text&gt; &lt;!-- 换行 --&gt; &lt;xsl:value-of select="name()" /&gt; &lt;!-- 输出元素名 --&gt; &lt;xsl:apply-templates select="child::*" /&gt; &lt;!-- 递归处理子元素 --&gt; &lt;/xsl...

    xsl学习笔记,入门知识

    在实际应用中,你可能还会遇到条件判断(`&lt;xsl:if&gt;`和`&lt;xsl:choose&gt;`)、循环(`&lt;xsl:for-each&gt;`)、变量(`&lt;xsl:variable&gt;`和`&lt;xsl:param&gt;`)以及导入和包含其他样式表(`&lt;xsl:import&gt;`和`&lt;xsl:include&gt;`)等功能。...

Global site tag (gtag.js) - Google Analytics