引用另一个for循环

时间:2017-06-01 08:11:21

标签: xml xslt-1.0

我有以下xml

<batch>
    <items>
         <item>...</item>
         <item>...</item>
         <item>...</item>
         <item>
              <place>...</place>
              <stuff>...</stuff>
         </item>
    <items>
    <tasks>
        <task>
             <place>...</place>
             <time>...</time>
        <task>...</task>
        <task>...</task>
        <task>...</task>
    </tasks>
<batch>

如果任务和项目在同一个地方,每次写下来都需要我和任务的时间。我打算用

<xsl:for-each select="//batch/items/item">
      <xsl:value-of select="stuff"/>
      <xsl:for-each select="//batch/tasks/task">
             <xsl:iftest="item/place=task/place">task/time</xsl:if>
      </xsl:for-each>
</xsl:for-each>

然而,项目/地点的引用是错误的。我该如何解决?这甚至可能吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

要获取其位置与当前项目匹配的任务,请首先将 key 定义为:

<xsl:key name="task-by-place" match="task" use="place" />

然后将其用作(例如):

<xsl:template match="/batch">
    <xsl:for-each select="items/item">
        <xsl:copy>
            <xsl:copy-of select="stuff"/>
            <xsl:copy-of select="key('task-by-place', place)/time"/>
        </xsl:copy>
    </xsl:for-each>
</xsl:template>