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
每个计数器的XSLT-如何访问数据_Xslt_Foreach - Fatal编程技术网

每个计数器的XSLT-如何访问数据

每个计数器的XSLT-如何访问数据,xslt,foreach,Xslt,Foreach,出于性能测试的目的,我想使用XSLT获取一个小XML文件并从中创建一个更大的文件。在这里,我计划将每个实体(下面示例中的活动节点)都保存在原始XML中,并将其复制n次,只需更改其ID即可。 我能想到的实现这一点的唯一方法是xsl:for-each选择“1到n”。但当我这样做时,我似乎无法再访问实体节点(xsl:for-each select=“活动/活动”在我的情况下不起作用)。我得到一个处理器错误:“不能在这里使用:上下文项是一个原子值”。 似乎通过使用“1到n”循环,我失去了对实际实体的访问

出于性能测试的目的,我想使用XSLT获取一个小XML文件并从中创建一个更大的文件。在这里,我计划将每个实体(下面示例中的活动节点)都保存在原始XML中,并将其复制n次,只需更改其ID即可。 我能想到的实现这一点的唯一方法是xsl:for-each选择“1到n”。但当我这样做时,我似乎无法再访问实体节点(xsl:for-each select=“活动/活动”在我的情况下不起作用)。我得到一个处理器错误:“不能在这里使用:上下文项是一个原子值”。 似乎通过使用“1到n”循环,我失去了对实际实体的访问。是否有任何XPath表达式可以让我恢复访问权限,或者是否有人对如何实现这一点有完全不同的想法

以下是我的工作:

原始XML

<campaigns>    
<campaign id="1" name="test">
<campaign id="2" name="another name">
</cmpaigns>

我尝试使用的XSLT

<xsl:template match="/">
 <xsl:element name="campaigns">
 <xsl:for-each select="1 to 10">
  <xsl:for-each select="campaigns/campaign">
   <xsl:element name="campaign">
   <xsl:copy-of select="@*[local-name() != 'id']" />
   <xsl:attribute name="id"><xsl:value-of select="@id" /></xsl:attribute>
   </xsl:element>
  </xsl:for-each>
 </xsl:for-each>
 </xsl:element>
</xsl:template>

将变量定义为匹配中的第一项,如下所示:

<xsl:variable name="foo" select="."/>

谢谢!如果我的投票可以不止一次,我会为这个答案投很多票。我已经为此挣扎了五个小时了!非常感谢。
<xsl:for-each select="$foo/campaigns/campaign">
...
</xsl:for-each>