2010-12-16 54 views
0

了这个酝酿了一段时间...... 我有以下几行XML文件获取价值的XSL,XML名称相同

<image size="small">image_small.jpg</image> 
<image size="medium">image_medium.jpg</image> 
<image size="large">image_large.jpg</image> 

我如何能只得到了媒体的任何想法例如url。

目前我有...但它没有这样做的伎俩

<tr> 
<td><img><xsl:attribute name="src"> 
      <xsl:value-of select="image/@size[@size=medium]" /> 
     </xsl:attribute> 
    </img> 
</td> 
</tr> 

在此先感谢

回答

3

你的问题没有得到很好的界定,因为我们没有你的整个XSLT也不所需输出,但我会试试看:

如果您正在使用for-loop迭代不同的图像,则需要在循环本身上设置约束,而不是循环的内容。

如果你把你的例子代码xsl:for-each内将每幅图像迭代但只填写@src属性时image@size="medium"是当前节点。这会为您提供三个表格行,其中包含三张图片,但只有一张图片具有有效的@src属性。

而是改变你的xsl:for-eachor use xsl:apply-templates)只与@size="medium"遍历您的图像:

<!-- This will only iterate over the medium sized images. --> 
<xsl:for-each select="image[@size='medium']"> 
    <tr> 
    <td> 
     <img src="{.}"/> 
    </td> 
    </tr> 
</xsl:for-each> 

另一个提示:而不是使用xsl:attribute使用attribute value template

+0

就像一个绝对的魅力,谢谢你 – Stevanicus 2010-12-17 00:11:03