Arrays 如何在XSLT1.0中创建全局数组变量,并在循环时动态设置值
嗨,我需要创建一个全局数组变量,并在循环时动态设置值 我试着像下面一样Arrays 如何在XSLT1.0中创建全局数组变量,并在循环时动态设置值,arrays,xslt,Arrays,Xslt,嗨,我需要创建一个全局数组变量,并在循环时动态设置值 我试着像下面一样 <xsl:key name="kItemValue" match="/*/*/*/accountId/text()" use="."/> <xsl:variable name="AccountIds"/> <xsl:template match="/"> <xsl:for-each select="/*/*/*/accountId/text()[generate-id
<xsl:key name="kItemValue" match="/*/*/*/accountId/text()" use="."/>
<xsl:variable name="AccountIds"/>
<xsl:template match="/">
<xsl:for-each select="/*/*/*/accountId/text()[generate-id()=generate-id(key('kItemValue', .)[1])]">
<xsl:variable name="AccountIds"><xsl:value-of select="." /></xsl:variable>
</xsl:for-each>
后者我需要迭代该数组值,这样在每个循环上它都会用当前循环项检查一个值,并打印一些文本。提前感谢您的问题并不完全清楚,因为(正如评论中已经提到的)XML中没有数组。但是,如果需要,可以使用一组选定节点填充变量,例如:
<xsl:variable name="unique-accounts" select="/*/*/*/accountId[generate-id()=generate-id(key('account-by-id', .)[1])]"/>
并且,在稍后的某个点,处理这些节点,例如:
<xsl:for-each select="$unique-accounts">
<!-- do something -->
</xsl:for-each>
请注意,要使其正常工作,变量必须存储一个节点集,而不是一堆文本值-因此本例中的键必须修改为:
<xsl:key name="account-by-id" match="accountId" use="." />
XSLT中没有“数组”,您无法更改已设置的“全局”变量的值。-也许你描述你的问题时没有问如何实现技术上不可能实现的东西,“Java”在哪里?我已经删除了标记。@laune当我为每一个做标记时,我会得到一些值,这些值需要存储在一个变量中,后者我需要遍历这些值,然后根据这些值检查值,然后打印文本,这是我的问题。例如,在迭代中,我得到了一些值35672..像这样,我需要将这些值存储到一个变量中。之后,我需要迭代这些值,如果值>3,我将打印“just pass”,如果值>5,我将打印“pass”,像这样使用XSLT 1.0实现这一点的任何想法您都没有描述您的问题,您已经描述了用过程语言解决问题的方法。根据这样的描述对您的需求进行逆向工程是非常困难的。请描述您想要执行的转换:输入、输出以及它们之间的关系。