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

XSLT模板匹配带命名空间的ContractSummary实现Offerings按Type排序

问题根因

你的XML中ContractSummary声明了默认命名空间ContractSummary,其下所有子节点(Offerings、Type、Name)都自动继承该命名空间。你当前的模板仅匹配了ContractSummary节点,但查询子节点时未指定命名空间,导致无法找到对应Offerings节点,最终输出为空。

修正后的XSLT代码
<!-- 通用身份转换模板,保证所有节点、属性、文本原样复制 -->
<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

<!-- 匹配带命名空间的ContractSummary节点 -->
<xsl:template match="//*[local-name()='ContractSummary' and namespace-uri()='ContractSummary' ]"> 
  <xsl:copy>
    <!-- 复制当前节点的所有属性,保留xsi等命名空间声明 -->
    <xsl:copy-of select="@*"/>
    <!-- 明确选择同命名空间下的Offerings节点,按Type排序 -->
    <xsl:apply-templates select="*[local-name()='Offerings' and namespace-uri()='ContractSummary']">
      <xsl:sort select="*[local-name()='Type' and namespace-uri()='ContractSummary']"  />  
    </xsl:apply-templates>
  </xsl:copy>   
</xsl:template>
修改说明
  • 新增了通用身份转换模板,确保匹配到的子节点、属性、文本内容可以正常复制输出
  • 调整xsl:apply-templates的选择规则,明确指定匹配与ContractSummary同命名空间的Offerings节点
  • 调整排序规则的取值路径,明确指定匹配同命名空间下的Type节点作为排序依据
  • 新增xsl:copy-of select="@*"保留ContractSummary节点原有的所有属性,包括xsi命名空间声明和schemaLocation属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:09:03