XSL заменяет специальный символ на строку - PullRequest
0 голосов
/ 03 апреля 2020

Я новичок в XSL, и у меня есть следующий узел XML, который мне нужно проанализировать для обычного текста:

<GeneralRemark Source="A3" SourceRef="LD8PN5">
    <ElementNumber Source="A3" SourceElement="14">9</ElementNumber>
    <Text>SPECIAL CHARACTER € EURO SIGN</Text>
</GeneralRemark>

Мне нужно прочитать данные в текстовом узле, а в выходной заменить по евро. Мое приложение не поддерживает €, поэтому я не могу его использовать.

Вот как я сейчас читаю узел GeneralRemark:

<xsl:if test="../PNRViewRS/GeneralRemark/Text">
    <xsl:for-each select="../PNRViewRS/GeneralRemark/Text">
        <xsl:text>RM </xsl:text>
        <xsl:value-of select="."/>                  
        <xsl:value-of select="$cr"/>                        
    </xsl:for-each>
</xsl:if>

Любые советы о том, как подойти к этому, будут оценили.

1 Ответ

1 голос
/ 03 апреля 2020

Если текст всегда содержит ровно одно вхождение шаблона, который вы хотите заменить, вы можете использовать:

<xsl:value-of select="substring-before(., '€')"/> 
<xsl:text>EUR</xsl:text>                 
<xsl:value-of select="substring-after(., '€')"/> 

В противном случае вам потребуется вызвать именованный рекурсивный шаблон, чтобы заменить все возможные вхождения шаблона , Смотрите пример здесь: { ссылка }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...