Xml 为什么我在这个模板中得到片段节点而不是节点集?
大家好 我正在尝试使用XSL 1.0转换XSD,但初始化变量时遇到问题 上下文 这是我初始化变量的代码: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变量来选择节点时,我遇到了问题。它是一个节点片段,而不是一个节点 这里是问题点: 问题就在于这个选择
现在,模板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新手,不知道这个扩展。。。