Xml 如何在XSLT中保留变量值并进行更新
我有一个名为ID的属性,每次赋值时它都会递增1。我有一种情况,每次输入循环时,值都会递增。外循环有2条记录,内循环有3条记录 外部循环1-内部循环1、2和3,ID属性将递增为1、2和3,但 外回路2-内回路。。。。ID属性同样以1开头。我需要这个是4,5等等 此增量ID没有与输入XML文件相关的数据。所有的处理都必须在XSLT中完成 XSLT文件:Xml 如何在XSLT中保留变量值并进行更新,xml,xslt,Xml,Xslt,我有一个名为ID的属性,每次赋值时它都会递增1。我有一种情况,每次输入循环时,值都会递增。外循环有2条记录,内循环有3条记录 外部循环1-内部循环1、2和3,ID属性将递增为1、2和3,但 外回路2-内回路。。。。ID属性同样以1开头。我需要这个是4,5等等 此增量ID没有与输入XML文件相关的数据。所有的处理都必须在XSLT中完成 XSLT文件: <xsl:variable name="localISYMPid" select="0"/> <xsl:element nam
<xsl:variable name="localISYMPid" select="0"/>
<xsl:element name="Test1">
<xsl:for-each select="Solutions/Solution">
<xsl:if test="Observations/Observation!= '' ">
<xsl:for-each select="Observations/Observation">
<xsl:element name="Roles">
<!-- Generating the ID value -->
<xsl:variable name="ids" select="generate-id(.)"/>
<!-- ***************************-->
<xsl:attribute name="CK"><xsl:value-of select="substring-after($ids,'Solution')"/></xsl:attribute>
<xsl:attribute name="ID"><xsl:value-of select="position() + $localISYMPid "/></xsl:attribute>
</xsl:element>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</xsl:element>
我正在使用XSLT1.0
谢谢,,
Ramm您正在使用
position()
函数来确定其父元素的本地ID(Observation
)。如果您确实想要一个全局节点,那么您可以执行类似于count(previous::Roles)+1
的操作,这将对当前节点之前的所有角色进行计数,然后添加一个节点
您可能需要根据您的需求进一步限制previous::Roles
谓词,例如previous::Roles[parent::Observation]
,要确保只计算角色
元素,这些元素是观察
元素的子元素。显示源文档总是很有用的。但我怀疑你可以通过这样的方式实现你想要的
<xsl:attribute name="ID">
<xsl:number level="any" from="Solution"/>
</xsl:attribute>
<xsl:attribute name="ID">
<xsl:number level="any" from="Solution"/>
</xsl:attribute>