замена подстроки на значение элемента xml - PullRequest
0 голосов
/ 08 декабря 2010

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

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

Может ли XSLT заменить значение {$ Tckt_Cd $} параметром?

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

Ответы [ 2 ]

1 голос
/ 08 декабря 2010

вы также можете сделать что-то вроде

<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 голосов
/ 08 декабря 2010

Вероятно, вам следует использовать регулярные выражения, если у вас есть 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...