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_Xslt 1.0 - Fatal编程技术网

将变量赋给xslt循环中选择的值

将变量赋给xslt循环中选择的值,xslt,xslt-1.0,Xslt,Xslt 1.0,我在这里做的是工作——我只是想知道是否有更好或更有效的方法来完成同样的事情 下面是XML结构 <tags> <tag> <val1>abc</val1> <val2>123</val2> </tag> <tag> <val1>def</val1> <val2

我在这里做的是工作——我只是想知道是否有更好或更有效的方法来完成同样的事情

下面是XML结构

<tags>
     <tag>
          <val1>abc</val1>
          <val2>123</val2>
     </tag>
        <tag>
          <val1>def</val1>
          <val2>456</val2>
     </tag>
     <tag>
          <val1>ghi</val1>
          <val2>789</val2>
     </tag>
</tags>

abc
123
def
456
ghi
789
我需要为val2的值分配一个变量,但前提是val1='def' 最后我想要一个等于456的变量

保证这些值是唯一的,因此“def”只存在一次

我解决这个问题的方法是在循环中为变量赋值,检查我要查找的值

<xsl:variable name="id">
     <xsl:for-each select="tags/tag">
          <xsl:variable name="role"><xsl:value-of select="val1"/ </xsl:variable>
          <xsl:if test="$role = 'def'">
               <xsl:value-of select="val2"/>
          </xsl:if>
      </xsl:for-each>
 </xsl:variable>


您只需使用
选择元素,或者定义一个键
,然后选择

我尝试了第一种方法,它缩短了几分钟的处理时间。谢谢你的帮助