2010-12-08 2 views
0

У меня есть узел, который выглядит примерно так:подстрока заменить на значение элемента XML

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

С XSLT, она может заменить значение {$ Tckt_Cd $} с параметром?

Я не так хорошо разбираюсь в XSLT, поэтому любая помощь будет отличной.

+0

Простой ответ: да. Но ответы могут стать сложными, если параметр содержит значения для более чем одной контрольной метки, и если эталонные метки могут быть более одного раза в текстовом узле. – 2010-12-08 16:01:48

ответ

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> 

, то если у вас есть разные имена переменных, вы можете легко изменить значение

+0

Я взял это и добавил шаблон тела электронной почты к XSLT. Затем была заменена XPath. – Arnej65 2010-12-08 20:51:34

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> 
Смежные вопросы