Как добавить к значению тега XML с помощью XSLT? - PullRequest
0 голосов
/ 03 октября 2018

У меня есть XSLT, который преобразует один xml в другой, где я делаю следующую простую операцию.

    <xsl:template match="MAX/MSISDN">
        <msisdn>
            <xsl:apply-templates select="@*|node()"/>
        </msisdn>
    </xsl:template>

При этом я хочу изменить значение, например, со строки, такой как

<msisdn>0187890567</msisdn>

, до

<msisdn>90187890567</msisdn>

Исходный XML такой же;

<MAX>
    <MSISDN>0187890567</MSISDN>
</MAX>

Могу ли я сделать это в том же определении шаблона?Как это сделать?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Использование concat() функция

<xsl:template match="MAX/MSISDN">
    <msisdn>
        <xsl:value-of select="concat('9', .)"/>
    </msisdn>
</xsl:template>
0 голосов
/ 03 октября 2018

Вы можете просто добавить префикс к шаблону следующим образом:

<xsl:template match="MAX/MSISDN">
    <msisdn>
        <xsl:apply-templates select="@*"/>
        <xsl:text>9</xsl:text>
        <xsl:value-of select="." />
    </msisdn>
</xsl:template>

В качестве альтернативы, вы можете иметь второй шаблон, соответствующий узлу text() и добавить его туда

<xsl:template match="MAX/MSISDN">
    <msisdn>
        <xsl:apply-templates select="@*|node()" />
    </msisdn>
</xsl:template>

<xsl:template match="MSISDN/text()">
    <xsl:text>9</xsl:text>
    <xsl:value-of select="." />
</xsl:template>

Последний вариант предпочтительнее, если вы не хотите выводить 9, если элемент MSISDN был пуст

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