XSLT替换值,而不复制整个xml

时间:2019-05-07 05:43:59

标签: xml xslt

我有一些* .xml元素,例如:

<hl>
    <ho>
        <sh>At Vdara, you have a unique oppor</sh>
        <st>5star</st>
        <vi>15</vi>
        <vn>7500.00</vn>
    </ho>
    <ho>
        <sh>Experience luxury by design.</sh>
        <st>3star</st>
        <vi>20</vi>
        <vn>1000.00</vn>
    </ho>
</hl>

并生成具有相同结构的新.xml文档并进行一些计算。

输出XML

<hl>
    <ho>
        <sh>At Vdara, you have a unique oppor</sh>
        <st>5star</st>
        <vi>15</vi>
        <vn>112500.00</vn>
    </ho>
    <ho>
        <sh>Experience luxury by design.</sh>
        <st>3star</st>
        <vi>20</vi>
        <vn>20000.00</vn>
    </ho>
</hl>

我使用此XSLT进行转换。

XSLT

<?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">

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

    <xsl:template match="ho/vn">
        <xsl:variable name="arvalue" select="../vi"/>

        <xsl:variable name="val" select="number($arvalue) *  number(.) "/>
        <vn>
            <xsl:value-of select="$val"/>
        </vn>
    </xsl:template>

</xsl:stylesheet> 

问题是在增加标签时XSLT转换非常缓慢。有时它会增加5到10秒。

enter image description here

在没有 xsl:copy 的情况下,他们可以执行任何此操作。

0 个答案:

没有答案