XSLT заменить значение без копирования всего XML - PullRequest
0 голосов
/ 07 мая 2019

У меня есть * .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 .

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