Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 使用xpath获取所有本地名称的节点集_Xml_Xslt_Xpath - Fatal编程技术网

Xml 使用xpath获取所有本地名称的节点集

Xml 使用xpath获取所有本地名称的节点集,xml,xslt,xpath,Xml,Xslt,Xpath,使用XPath 1.0,而不是 <xsl:for-each select="*"> <xsl:variable name="varName" select="local-name()" /> <!-- Do stuff with $varName --> </xsl:for-each> 我真的很想做像这样的事情 <xsl:for-each select="*/local-name()"> <!-- Do stuf

使用XPath 1.0,而不是

<xsl:for-each select="*">
  <xsl:variable name="varName" select="local-name()" />
  <!-- Do stuff with $varName -->
</xsl:for-each>

我真的很想做像这样的事情

<xsl:for-each select="*/local-name()">
  <!-- Do stuff with . ('.' as in the current value) -->
</xsl:for-each>



有什么方法可以做到这一点吗?

节点集包含节点。它不包含名称。因此,你的问题包含了矛盾,证明这是不可能的


XPath2.0数据模型使得将名称集合作为值进行管理成为可能。但是XPath 1.0只允许节点集、单例字符串、布尔值和数字。

谢谢,我不知道名称!=节点,我认为名称只是另一个属性,但我想情况并非如此。那么,可以将字符串转换为节点集吗?(如果这是一个新问题,只需说出这个词)Happy先生,在XSLT2.0中使用
,您将处理一系列字符串(带有元素名),因此
中的
将是每个
的原子字符串值。但这在XSLT1.0中是不可能的。我不知道你在问什么“是否可以将字符串转换为节点集”,这与你当前的问题有什么关系?@Martin Honnen,我想可能有一些
ConvertToNode()
函数可以用来将字符串序列转换为节点序列,这样我仍然可以解决我的问题。。。但现在我想起来了,这意味着将存在一个假设函数
ConvertToNode
wich,它将有一系列字符串作为参数,而在XPath 1.0中首先不存在wich。有点像第二十二条军规,所以不可能。那我得另找一条路了。谢谢你的时间。我想这里面少了一些东西。在所有这些
xsl:for each
中,问题不仅仅是XPath 1.0不允许原子值序列,就像XPath 2.0一样(尽管它在该任务的要求中):另一个问题是它也不允许对原子值进行迭代。请注意,即使允许对原子值序列进行迭代,XSLT2.0也不允许匹配原子值。添加到:模式的内容可以匹配任何类型的项:原子值、函数项以及节点
<xsl:for-each select="local-name(*)">
  <!-- Do stuff with . ('.' as in the current value) -->
</xsl:for-each>