XSLT - обновить оригинальный файл XML - PullRequest
0 голосов
/ 21 сентября 2019

Я использую XSLT для преобразования входного XML (payload.xml), используя значение из другого XML-файла (upc.xml).После преобразования payload.xml мне нужно обновить upc.xml с последним значением.

XSLT будет извлекать последний UPC из upc.xml с шагом 1, использовать новое значение для преобразования payload.xml, затем обновлять upc.xml новым значением

Этоoriginal payload.xml

<?xml version="1.0" encoding="UTF-8" ?>
<SSC>
    <Payload>
        <Item>
            <Characteristics>
                <CharacteristicCode>UPC</CharacteristicCode>
                <AlphaValues>
                    <CharacteristicCode>UPC</CharacteristicCode>
                    <DiscreteValueAlphanumeric></DiscreteValueAlphanumeric>
                </AlphaValues>
            </Characteristics>
        </Item>
    </Payload>
</SSC>

Вот так выглядит upc.xml.Я сам создал этот файл, чтобы при необходимости изменить формат.

<UPC>
<LatestUPC>88912700985</LatestUPC>
<MinUPC>88912700980</MinUPC>
<MaxUPC>88912700987</MaxUPC>
</UPC>

Мой XSLT пока что.С помощью этого XSLT я могу получить и использовать последнюю версию UPC, но не могу обновить upc.xml

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:my="http://schema.infor.com/InforOAGIS/2" 
xmlns:java="http://xml.apache.org/xslt/java" 
exclude-result-prefixes="java my ">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
    <xsl:strip-space elements="*"/>
    <xsl:variable name="latestupc" select="document('upc.xml')/UPC/LatestUPC"/>
    <xsl:variable name="upc11" select="format-number($latestupc + 1,'#')"/>
    <xsl:template match="*">
        <xsl:copy>
            <xsl:copy-of select="@*[.!='']"/>
            <xsl:apply-templates/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="*[.=''][not(@*[.!=''])]"/>
    <xsl:template match="/SSC/Payload/Item/Characteristics[CharacteristicCode='UPC']/AlphaValues">
                <AlphaValues>
                    <CharacteristicCode>UPC</CharacteristicCode>
                    <DiscreteValueAlphanumeric>
                        <xsl:value-of select="$upc11"/>
                    </DiscreteValueAlphanumeric>
                </AlphaValues>
    </xsl:template>
</xsl:stylesheet>

. С текущим результатом payload.xml выглядит хорошо, но upc.xml не обновляется.Последняя версия UPC должна быть обновлена ​​до 88912700986

<?xml version="1.0" encoding="UTF-8"?>
<SSC>
   <Payload>
      <Item>
         <Characteristics>
            <CharacteristicCode>UPC</CharacteristicCode>
            <AlphaValues>
               <CharacteristicCode>UPC</CharacteristicCode>
               <DiscreteValueAlphanumeric>88912700986</DiscreteValueAlphanumeric>
            </AlphaValues>
         </Characteristics>
      </Item>
   </Payload>
</SSC>

Любое предложение?

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