Как заменить специальный символ словом / строкой в ​​XSLT? - PullRequest
0 голосов
/ 30 апреля 2018

Я хочу заменить один / словом and. Вот что у меня сейчас:

Код:

<xsl:output omit-xml-declaration="yes" indent="yes"/>

!-- identity transform -->

<xsl:template match="node()|@*">

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

</xsl:template>

!-- exception -->
<xsl:template match="*[local-name()='Category']/@CleanName">
    <xsl:attribute name="CleanName">
           <xsl:value-of select="translate('Cd /dvd inlays', '/ ', 'and')" />
    </xsl:attribute>
</xsl:template>

Ввод:

<Category ID="129" CleanName="Cd /dvd inlays"></Category>

Выход:

"Cdnadvdninlays"

Даёт:

"Cd /dvd inlays"

Требуется:

"cd and dvd inlays"

1 Ответ

0 голосов
/ 30 апреля 2018

translate() заменяет отдельные символы одиночными символами, а не одиночные символы строками. В вашем случае вы заменяете / на a и SPACE на n & ndash; не то, что вы хотите.

Вы хотите replace() вместо этого. К сожалению, replace() требует XSLT 2.0. Для функциональности замены в XSLT 1.0, см. XSLT string replace .

...