1

如果我有一个如下的 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<CATALOG>
  <CD ID="1">
    <TITLE>Empire Burlesque</TITLE>
    <ARTIST>Bob Dylan</ARTIST>
    <COUNTRY>USA</COUNTRY>
    <COMPANY>Columbia</COMPANY>
    <PRICE>10</PRICE>
    <YEAR>1985</YEAR>
  </CD>
  <CD ID="2">
    <TITLE>Hide your heart</TITLE>
    <ARTIST>Bonnie Tyler</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>CBS Records</COMPANY>
    <PRICE>31</PRICE>
    <YEAR>1988</YEAR>
  </CD>
</CATALOG>

如何使用 xslt-3 将 1000 的值添加到每个价格元素,所以有一个类似于当前值 + 1000 的总和?输出:

<?xml version="1.0" encoding="UTF-8"?>
<CATALOG>
  <CD ID="1001">
    <TITLE>Empire Burlesque</TITLE>
    <ARTIST>Bob Dylan</ARTIST>
    <COUNTRY>USA</COUNTRY>
    <COMPANY>Columbia</COMPANY>
    <PRICE>1010</PRICE>
    <YEAR>1985</YEAR>
  </CD>
  <CD ID="1002">
    <TITLE>Hide your heart</TITLE>
    <ARTIST>Bonnie Tyler</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>CBS Records</COMPANY>
    <PRICE>1031</PRICE>
    <YEAR>1988</YEAR>
  </CD>
</CATALOG>
4

1 回答 1

1

如果您为元素编写模板并通过(https://www.w3.org/TR/xslt-30/#built-in-templates-shallow-copyPRICE处理其余部分,您会得到xsl:mode on-no-match="shallow-copy"

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="3.0">

  <xsl:param name="to-be-added" as="xs:decimal" select="1000"/>

  <xsl:mode on-no-match="shallow-copy"/>

  <xsl:template match="PRICE">
      <xsl:copy>
          <xsl:value-of select=". + $to-be-added"/>
      </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

https://xsltfiddle.liberty-development.net/6qM2e2j

于 2018-03-05T14:51:34.813 回答