我需要使用xslt将xml中的所有值增加1

时间:2017-02-28 15:04:35

标签: xslt-1.0

在我的xml中,我希望所有值都增加1。 所以在下面的xml中,我只有2倍的值,我希望值8为9,值5为6。 但这应该适用于所有可能的价值观。

这是我的xml:

<?xml version="1.0" encoding="UTF-8"?><equipmentActualProperties>
<equipmentActualProperty>
    <action>U</action>
    <dataType>Text</dataType>
    <equipmentActualPropertyID>CUST_0002</equipmentActualPropertyID>
    <equipmentActualPropertyValueTexts>
        <equipmentActualPropertyValueText>
            <languageID>EN</languageID>
            <value>8</value>
        </equipmentActualPropertyValueText>
    </equipmentActualPropertyValueTexts>
    <equipmentPropertyID>CUST_0002</equipmentPropertyID>
    <equipmentUse>Other</equipmentUse>
    <hierarchyScope>default</hierarchyScope>
    <requiredByRequestedSegmentResponse>Other</requiredByRequestedSegmentResponse>
</equipmentActualProperty>
<equipmentActualProperty>
    <action>U</action>
    <dataType>Text</dataType>
    <equipmentActualPropertyID>CUST_0001</equipmentActualPropertyID>
    <equipmentActualPropertyValueTexts>
        <equipmentActualPropertyValueText>
            <languageID>EN</languageID>
            <value>5</value>
        </equipmentActualPropertyValueText>
    </equipmentActualPropertyValueTexts>
    <equipmentPropertyID>CUST_0001</equipmentPropertyID>
    <equipmentUse>Other</equipmentUse>
    <hierarchyScope>default</hierarchyScope>
    <requiredByRequestedSegmentResponse>Other</requiredByRequestedSegmentResponse>
</equipmentActualProperty>

1 个答案:

答案 0 :(得分:0)

您可以使用身份模板和推送编程来执行此操作。此外,要使其正常工作,您的代码段必须位于根节点内。

<!-- Identity template. -->
<xsl:template match="node()|@*">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
  </xsl:copy>
</xsl:template>

<xsl:template match="value">
   <xsl:copy>
    <xsl:value-of select=". + 1"/>
   </xsl:copy>
</xsl:template>