如何仅在xslt中选择第一个节点

Ric*_*ler 8 xslt apply-templates

我的XML为我提供了分配给不同mmids的多个图像:

<Mediendaten>
    <Mediendaten mmid="22404">
        <url size="original">A 22404 FILE</url>
        <url size="thumb">ANOTHER 22404 FILE</url>
    </Mediendaten>
    <Mediendaten mmid="22405">
        <url size="original">A 22405 FILE</url>
        <url size="thumb">ANOTHER 22405 FILE</url>
    </Mediendaten>
<Mediendaten>
Run Code Online (Sandbox Code Playgroud)

我的XSLT只选择size = thumb的网址:

<xsl:template match="/Mediendaten">
<xsl:apply-templates select="Mediendaten/url">
</xsl:apply-templates>
</xsl:template>

<xsl:template match="Mediendaten/url">
<xsl:if test="@size = 'thumb'">
<img width="280" border="0" align="left">
<xsl:attribute name="src"><xsl:value-of select="."/></xsl:attribute>
</img>
</xsl:if>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

但是,我只需要第一个mmid的缩略图(在本例中为22404).我无法控制mmid值.

如何停止我的模板,以便它只输出第一个mmid的拇指文件?

非常感谢您的帮助!

C. *_*een 12

最简单的方法是更改​​模板/Mediendaten:

<xsl:template match="/Mediendaten">
  <xsl:apply-templates select="Mediendaten[@mmid][1]/url"/>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

[@mmid]将选择约束到带有mmid属性的子Mediendaten元素,[1]将选择约束到第一个.

PS谁设计你正在使用的XML会讨厌你.(对于现在标记的两种元素使用相同的名称Mediendaten是一个肮脏的烂技巧;它使你用数据做的所有事情变得更难.试着找出你做了什么来如此糟糕地惹恼他们,并对他们进行弥补.对明智的话.)