xml - XSLT 根据另一个值添加属性值

标签 xml xslt xpath xslt-2.0

如何根据另一个值添加值?

<?xml version="1.0" encoding="UTF-8"?>
<items>
   <item id="A1" quantity="5">
      <info type="ram x1" import="CA" />
   </item>
   <item id="A2" quantity="3">
      <info type="ram x1" import="SA" />
   </item>
   <item id="A3" quantity="10">
      <info type="ram x2" import="AU" />
   </item>
</items>

我需要根据类型添加所有数量,例如我需要一个输出,

内存 x1 数量=8 内存x2数量=10

<?xml version="1.0" encoding="UTF-8"?>
<items>
        <details type="ram x1" quantity="8"/>
        <details type="ram x2" quantity="10"/>
</items>

首先尝试 for-each-group 获取数量,看看是否有效,

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
   <xsl:output method="html" indent="yes" />
   <xsl:template match="items">
      <xsl:for-each-group select="item" group-by="info/@type">
         <xsl:value-of select="sum(@quantity)" />
      </xsl:for-each-group>
   </xsl:template>
</xsl:stylesheet>

最佳答案

使用current-group()函数,即:

<xsl:value-of select="sum(current-group()/@quantity)" />

关于xml - XSLT 根据另一个值添加属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20986550/

相关文章:

php - 解析 3D XML 平铺信息

java - XSLT 或 JAXB 使用哪一个

xml - 如何将一个 FLWOR 通过管道传输到另一个 FLWOR 中?

xpath - 使用 Commons JXPath 解析 XML 的问题

java - 使用 SAX 解析器,如何解析具有相同名称标签但包含不同元素的 xml 文件?

javascript - 从 ajax 结果中提取 XML 数据

java - 如何从 soap web 服务检索未知的 XML 并使用 java 插入数据库

java - 如何直接在java中从服务器读取XML标签值?

xml - 如何使用 n 分隔符连接节点=值对

xpath - 与TR元素的bgcolor属性匹配的XPath表达式