substring替换xml元素值

时间:2010-12-08 15:53:50

标签: xml xslt

我有一个看起来像这样的节点:

<EmailBody> &lt;p&gt;Ticket {$Tckt_Cd$}&lt;/p&gt </EmailBody>

使用XSLT,它可以用参数替换值{$ Tckt_Cd $}吗?

我对XSLT并不是那么好,所以任何帮助都会很棒。

2 个答案:

答案 0 :(得分:1)

你也可以按照

的方式做点什么
<xsl:variable name="VarA">
<xsl:value-of select="substring-before(substring-after(EmailBody,'{'),'}')"/>
</xsl:variable>

<xsl:choose>
<xsl:when test="$varA='$Tckt_Cd$'">
your replacement here
</xsl:when>
</xsl:choose>

然后,如果你有不同的变量名,你可以很容易地改变这个值

答案 1 :(得分:0)

如果你有XSLT 2.0或EXSLT可用,你应该使用正则表达式。

以下代码是纯XSLT 1.0解决方案。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:param name="some-param" select=" 'ololo' "/>

<xsl:template match="@* | node()">
    <xsl:copy>
        <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="EmailBody">
    <xsl:copy>
        <xsl:value-of select="substring-before(., '{$Tckt_Cd$}')"/>
        <xsl:value-of select="$some-param"/>
        <xsl:value-of select="substring-after(., '{$Tckt_Cd$}')"/>
    </xsl:copy>
</xsl:template>
</xsl:stylesheet>

有效 XML输入一起使用:

<root>
    <EmailBody> &lt;lt;p&lt;gt;Ticket {$Tckt_Cd$}&lt;lt;/p&lt;gt </EmailBody>
</root>

产生这个结果:

<root>
    <EmailBody> &lt;lt;p&lt;gt;Ticket ololo&lt;lt;/p&lt;gt </EmailBody>
</root>