首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >msxsl:node-set()和position()不能协同工作

msxsl:node-set()和position()不能协同工作
EN

Stack Overflow用户
提问于 2012-04-07 04:14:23
回答 3查看 920关注 0票数 0

我有一个包含预处理集(DoesNotContainChildElement)的xsl:变量。我认为msxsl:node-set()添加了一个根元素,因此位置始终为1,但我需要的是前15个元素。

代码语言:javascript
复制
<xsl:variable name="Summary">
<xsl:for-each select="msxsl:node-set($DoesNotContainChildElement)">
  <xsl:if test="position() &lt; 16">
    <xsl:copy-of select="."></xsl:copy-of>
  </xsl:if>
</xsl:for-each>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-07 18:24:31

不,函数msxsl:node-set不会添加任何根节点,它只是XSLT1.0中的一个示例

代码语言:javascript
复制
<xsl:variable name="rtf1">
  <item>1</item>
  <item>2</item>
  <item>3</item>
</xsl:variable>

创建a result tree fragment并“将结果树片段等同于只包含单个根节点的节点集”。因此,在上面的示例中,我们有一个结果树片段,其中包含一个根节点,其中包含三个item子元素。

然后,应用msxsl:node-set(rtf1)扩展函数会得到一个node-set,而不是结果树片段,此时节点集包含一个带有三个item子元素的根节点。因此,如果您想访问item元素,则需要使用msxsl:node-set($rtf1)/*或更通用的msxsl:node-set($rtf1)/node()来访问所有子节点。

票数 3
EN

Stack Overflow用户

发布于 2012-04-07 09:25:04

你可以试试msxsl:node-set($DoesNotContainChildElement)/*。如果msxsl:node-set()确实添加了一个根节点,那么将/*添加到您的路径中将会遍历子节点,您可以在子节点上测试位置。

或者,您可以简单地使用<xsl:apply-templates select="msxsl:node-set($DoesNotContainChildElement)/*" mode="testposition"/><xsl:template match="*" mode="testposition">…

票数 1
EN

Stack Overflow用户

发布于 2012-04-07 15:37:43

因为只有一个变量$DoesNotContainChildElement,所以for-each只会为position()产生值1。

您可以通过运行以下命令进行检查:

代码语言:javascript
复制
<xsl:for-each select="$x">
    <pos1><xsl:value-of select="position()"/></pos1>
</xsl:for-each>
<xsl:for-each select="$x/*">
    <pos2><xsl:value-of select="position()"/></pos2>
</xsl:for-each>

其中x是(节点集类型)变量。

结果将如下所示

代码语言:javascript
复制
<pos1>1</pos1>
<pos2>1</pos2>
<pos2>2</pos2>
<pos2>3</pos2>
<pos2>...</pos2>

添加<xsl:copy-of select="."/>将导致在上面的第一个for-each的情况下输出整个变量内容,而对于第二个for-each,它将导致逐个输出变量的每个子元素。

如果您希望仅输出选定的子元素,则需要使用第二种形式。当您第一次应用node-set函数将rtf更改为node-set时也是如此。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10048752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档