首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在xslt中做替换的最好(更快)方法是什么?

在xslt中做替换的最好(更快)方法是什么?
EN

Stack Overflow用户
提问于 2011-06-17 10:05:15
回答 2查看 542关注 0票数 1

在xslt中最好(更快)的替代方法是什么?

1/带有模板

代码语言:javascript
复制
  <xsl:template name="str-replace">
    <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="str-replace">
          <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>

2/具有扩展对象

代码语言:javascript
复制
public class ToolBox
{
        public string replace(string s, string el, string by)
        {return s.Replace(el, by);}
}

<xsl:value-of select="toolbox:replace($foo,$bar, $fobar)" />
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-17 11:47:14

性能问题取决于您所使用的产品。本机代码几乎肯定会更快,但在某些处理器上,调用扩展函数的开销很高。所以量一下吧。

或者切换到XSLT2.0。

票数 3
EN

Stack Overflow用户

发布于 2011-06-17 10:26:28

为了直接回答您的问题,我期望字符串操作方法优于XML操作,因为它不需要解析XML文档。

但是,您应该考虑是否希望替换文档对文档的XML性质敏感。也就是说,你是否只是想:

  1. 更改文档文本,将一个字符串替换为另一个字符串,而不管这是否发生在元素名称、文本节点、注释和&c中。如果不小心控制,字符串替换也可能导致无效的结果文档,例如,将<hello>替换为<there>的字符串将改变启动的<hello>元素,而不是关闭的</there>元素。
  2. 以上下文敏感的方式更改XML,允许对特定元素、属性或文本进行精确更改,而不破坏文档结构。

G 29

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6384223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档