You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过XML/XSL根据客户关联的productId输出对应商品价格

XML到XML转换:根据productId匹配商品价格

核心实现思路

用XSL的<xsl:key>给products节点下的item建立索引,通过productId匹配itemid,快速定位对应商品的价格,避免低效的循环查找。

源XML示例

<order>
  <customer>
    <name>张三</name>
    <purchases>
      <product productId="101"/>
      <product productId="102"/>
    </purchases>
  </customer>
  <products>
    <item itemid="101" price="99.9"/>
    <item itemid="102" price="159.9"/>
    <item itemid="103" price="299.9"/>
  </products>
</order>

正确的XSL转换代码

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!-- 为products下的item建立索引,以itemid为匹配键 -->
  <xsl:key name="product-by-id" match="products/item" use="@itemid"/>

  <xsl:template match="/">
    <output>
      <xsl:for-each select="order/customer/purchases/product">
        <purchased-product>
          <product-id><xsl:value-of select="@productId"/></product-id>
          <!-- 通过key匹配对应item节点,提取价格 -->
          <price><xsl:value-of select="key('product-by-id', @productId)/@price"/></price>
        </purchased-product>
      </xsl:for-each>
    </output>
  </xsl:template>
</xsl:stylesheet>

期望输出XML

<output>
  <purchased-product>
    <product-id>101</product-id>
    <price>99.9</price>
  </purchased-product>
  <purchased-product>
    <product-id>102</product-id>
    <price>159.9</price>
  </purchased-product>
</output>

关键代码说明

  • <xsl:key>:定义索引规则,把products/item节点按itemid归类,后续可以通过键值快速查找,比逐个遍历节点高效得多。
  • 遍历订单商品时,用key('product-by-id', @productId)直接匹配到对应item节点,再取出price属性值即可完成关联。

内容的提问来源于stack exchange,提问作者dolphin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:25:47