我有一个看起来像这样的节点:
<EmailBody> <p>Ticket {$Tckt_Cd$}</p> </EmailBody>
使用XSLT,它可以用参数替换值{$ Tckt_Cd $}吗?
我对XSLT并不是那么好,所以任何帮助都会很棒。
答案 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;p<gt;Ticket {$Tckt_Cd$}<lt;/p<gt </EmailBody>
</root>
产生这个结果:
<root>
<EmailBody> <lt;p<gt;Ticket ololo<lt;/p<gt </EmailBody>
</root>