首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态更新XSLT中的文本节点

动态更新XSLT中的文本节点
EN

Stack Overflow用户
提问于 2019-02-07 15:48:21
回答 1查看 110关注 0票数 0

我正在尝试根据检查是否匹配某个模式来更新xml中的文本节点

在xslt 1.0中

代码语言:javascript
复制
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:regexp="http://exslt.org/regular-expressions">
    <xsl:output method="xml" version="1.0"/>
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="text()">
        <xsl:copy>
            <xsl:call-template name="CheckAndReplace">
                <xsl:with-param name="text" select="."/>
                <xsl:with-param name="pattern" select="&#129;"/>
            </xsl:call-template>
        </xsl:copy>
    </xsl:template>
    <xsl:template name="CheckAndReplace">
        <xsl:param name="text"/>
        <xsl:param name="pattern"/>
        <xsl:for-each select="regexp:match( $text, $pattern, 'gi' )">
            <xsl:copy-of select="regexp:replace( $text, $pattern, 'gi','*' )"
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

XML:

代码语言:javascript
复制
<Root>
 <Name> Kabir </Name>
 <Id> &#129; </Id>
</Root>

这里的请求具有与我的模式匹配的ID标记,需要替换

结果要求:

代码语言:javascript
复制
<Root>
 <Name> Kabir </Name>
 <Id> * </Id>
</Root>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-07 21:22:34

XSLT 1.0中没有正则表达式。如果您的目标是用*替换所有出现的&#129;字符,请尝试:

代码语言:javascript
复制
<xsl:template match="text()">
    <xsl:value-of select="translate(., '&#129;', '*')" />
</xsl:template>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54568550

复制
相关文章

相似问题

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