Я хочу добавить комментарий и изменить содержимое узла xml с помощью xslt - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь изменить содержимое узла в xml и добавить комментарий, чтобы сообщить, что я обновляю. Здесь я хочу обновить Version до VersionSWC.

Inupt xml :
<?xml version="1.0" encoding="UTF-8"?>
<file>
    <path1>/SwComponentTypes/Version/RunVersion</path1>
    <path2>/SwComponentTypes/Version/R_CntrBus_Version</path2>
</file>

Out I want :
<?xml version="1.0" encoding="UTF-8"?>
<file>
    <!--Patching name of Version to VersionSWC -->
    <path1>/SwComponentTypes/VersionSWC/RunVersion</path1> 
    <!--Patching name of Version to VersionSWC -->
    <path2>/SwComponentTypes/VersionSWC/R_CntrBus_Version</path2>
</file>

1 Ответ

0 голосов
/ 15 ноября 2018

Используя xslt 2.0, вы можете попробовать что-то вроде:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">

    <!-- identity template, copies everything -->
    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>

    <!-- template override for path1 and path2 nodes -->
    <xsl:template match="path1|path2">
        <xsl:param name="old" select="'/Version/'"/>
        <xsl:param name="new" select="'/VersionSWC/'"/>
        <xsl:comment>
            <xsl:value-of select="concat('Patching name of ', $old, ' to ', $new)"/>
        </xsl:comment>
        <xsl:copy>
            <xsl:value-of select="replace(., $old, $new)"/>
        </xsl:copy>
    </xsl:template>

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