XSLT-如何在多个位置计算单个节点

XSLT-如何在多个位置计算单个节点,xslt,Xslt,我正在用XSLT构建一个图像旋转器,它需要以下标记: <div class="wrapper"> <div class="overlay"></div> <div id="slider" class="slider"> [IMAGE FROM NODE A GOES HERE] [IMAGE FROM NODE B GOES HERE] ... </div> <div id="htmlcap

我正在用XSLT构建一个图像旋转器,它需要以下标记:

<div class="wrapper">
  <div class="overlay"></div>
  <div id="slider" class="slider">
    [IMAGE FROM NODE A GOES HERE]
    [IMAGE FROM NODE B GOES HERE]
    ...
  </div>
  <div id="htmlcaption" class="html-caption">
    [CAPTION FOR NODE A GOES HERE]
    [CAPTION FOR NODE B GOES HERE]
    ...
  </div>
</div>

[节点A的图像显示在此处]
[节点B的图像显示在此处]
...
[此处显示节点A的标题]
[此处显示节点B的标题]
...
我需要帮助构建XSLT,以便节点A在#slider中得到评估,然后在#htmloption中得到重新评估,然后是节点B,依此类推

任何帮助都将不胜感激


谢谢

首先,完全可以多次计算源元素。只需使用相同的选择器

例如,考虑以下XML:

<images>
    <node id="a" image="foo.png" caption="foo" />
    <node id="b" image="bar.png" caption="bar" />
</images>

此XSLT将从第一个节点重复输出内容:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="images">
    <div id="images">
        <img><xsl:value-of select="node[@id='a']/@image"/></img>
        <img><xsl:value-of select="node[@id='a']/@caption"/></img>
        <img><xsl:value-of select="node[@id='a']/@image"/></img>
        <img><xsl:value-of select="node[@id='a']/@caption"/></img>
    </div>
</xsl:template>

输出:

<div id="images">
    <img>foo.png</img>
    <img>foo</img>
    <img>foo.png</img>
    <img>foo</img>
</div>

foo.png
福
foo.png
福
然而,看起来您真正想要的是在包含图像和标题的一组节点上循环。 您可以为每个循环使用,以避免按名称选择节点:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="images">
    <div id="images">
        <xsl:for-each select="node">
            <img><xsl:value-of select="@image"/></img>
        </xsl:for-each>
    </div>
    <div id="captions">
        <xsl:for-each select="node">
            <div><xsl:value-of select="@caption"/></div>
        </xsl:for-each>
    </div>
</xsl:template>

</xsl:stylesheet>

这将产生:

<div id="images">
    <img>foo.png</img>
    <img>bar.png</img>
</div>
<div id="captions">
    <div>foo</div>
    <div>bar</div>
</div>

foo.png
bar.png
福
酒吧

没有足够的上下文。节点A和节点B是什么?我假设您显示的代码是所需的输出。输入看起来像什么?你已经有了什么XSLT(所以不是一个“给我代码”的网站)。这正好解决了我的问题。我以为我以前试过这种方法,但显然没有。我不确定如何重新使用同一个节点。谢谢