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

使用Saxon XSLT传递多文档参数时无法选择XML标签的问题

解决方案

核心问题是XML命名空间未匹配:你的XML文档里所有元素(<resEvento>、<CNPJ>等)都默认属于命名空间http://www.portalfiscal.inf.br/nfe,但XSLT中的XPath选择器没有指定这个命名空间,导致无法匹配到元素。

修改步骤如下:

  1. 在XSLT的<xsl:stylesheet>标签中声明该命名空间,并绑定一个前缀(比如nfe):
<xsl:stylesheet version="3.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:fn="http://www.w3.org/2005/xpath-functions"
                xmlns:nfe="http://www.portalfiscal.inf.br/nfe"> <!-- 新增命名空间声明 -->
  1. 修改XPath选择器,使用前缀匹配命名空间下的元素:
<xsl:for-each select="$docs">
    <xsl:value-of select="nfe:resEvento/nfe:CNPJ/text()"/> <!-- 加上nfe前缀 -->
</xsl:for-each>

另外验证了你的Java代码:documentBuilder.build()返回的确实是文档节点(符合XSLT参数as="document-node()*"的要求),这部分没有问题,只需修改XSLT即可解决问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:23:21