Xml 为什么我在这个模板中得到片段节点而不是节点集?

Xml 为什么我在这个模板中得到片段节点而不是节点集?,xml,xslt,xsd,variable-assignment,Xml,Xslt,Xsd,Variable Assignment,大家好 我正在尝试使用XSL 1.0转换XSD,但初始化变量时遇到问题 上下文 这是我初始化变量的代码: 现在,模板get\u global\ncode: 变量$ns_base,$ns_conceptuels,$ns_dom_a5和$ns_dom_vega被定义为全局变量。它们都是用文档节点初始化的。下一行是ns\u base的初始化: 问题 当我调用其他命名模板时,尝试使用gNS变量来选择节点时,我遇到了问题。它是一个节点片段,而不是一个节点 这里是问题点: 问题就在于这个选择

大家好

我正在尝试使用XSL 1.0转换XSD,但初始化变量时遇到问题

上下文

这是我初始化变量的代码:


现在,模板
get\u global\n
code:


变量
$ns_base
$ns_conceptuels
$ns_dom_a5
$ns_dom_vega
被定义为全局变量。它们都是用文档节点初始化的。下一行是
ns\u base
的初始化:


问题

当我调用其他命名模板时,尝试使用
gNS
变量来选择节点时,我遇到了问题。它是一个节点片段,而不是一个节点

这里是问题点:


问题就在于这个选择:
select=“$gNS/*[@name=substring after($main_type,:”)]”
<代码>$gNS只是一个节点片段:(


提前感谢!如果有人需要更多信息,请向我索取!

在XSLT 1.0中,您可以随时使用
select
属性以外的其他变量填充变量,您将获得一个结果树片段。如果要在结果树片段中的节点上执行XPath选择,则首先需要使用扩展函数转换结果树片段到节点集。大多数XSLT 1.0处理器支持
exslt:node set
()或类似功能。
因此,对于您的代码,这意味着您将
xmlns:exsl=”http://exslt.org/common“
在您的
xsl:stylesheet
元素上,然后当您想要对带有结果树片段的变量执行XPath选择时,您可以使用
exsl:node set($var)/foo/bar
select=“exsl:node set($gNS)/*[@name=substring after($main_type,:”)”

谢谢!非常好:)我是XSl新手,不知道这个扩展。。。