我有以下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>
然而,项目/地点的引用是错误的。我该如何解决?这甚至可能吗?提前谢谢!
答案 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>