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

标签 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>

我的 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>

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

如何停止我的模板,使其仅输出第一个 mmid 的缩略图文件?

非常感谢您的帮助!

最佳答案

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

<xsl:template match="/Mediendaten">
  <xsl:apply-templates select="Mediendaten[@mmid][1]/url"/>
</xsl:template>

[@mmid] 将选择限制为带有 mmid 属性的子Mediendaten 元素,[1] 将选择限制为其中第一个元素。

附注无论是谁设计了您所使用的 XML,都会讨厌您。 (对现在标记为 Mediendaten 的两种元素使用相同的名称是一种肮脏的恶作剧;它使您对数据所做的一切变得更加困难。尝试找出您做了什么让他们如此生气,并弥补他们。只是对智者说一句话。)

关于xslt - 如何仅在xslt中选择第一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16928121/

相关文章:

xslt - XPath - 选择仅包含空格的节点

xslt - 为孙子中的每个标记复制 node() 并用 XSLT 1.0 中的标记替换孙子的元素文本?

xslt - 如何对 xsl :copy? 中的所有非选定属性执行 apply-templates

xml - 如何使用 XSLT 将 XML 转换为文本文件

java - XSLT 的替代品?

java - 如何使用 XPath/XSLT fn :json-to-xml

xml - 与以下XPATH方式匹配的模板

xslt - 来自其他语言的 XSLT 的两个概念 : apply-templates and xpath

xslt - XSL套用范本无法运作...可能是XPath错误