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 如何在XSLT中保留变量值并进行更新_Xml_Xslt - Fatal编程技术网

Xml 如何在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

我有一个名为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 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>