如何使用XSL转换和XML通过其属性值访问元素?

时间:2009-12-03 17:23:59

标签: xml xslt xhtml

我试图使用XSL转换将XML文档转换为XHTML,并且想知道如何在给定其属性值的情况下选择XML元素。 e.g。

<image size="small">http:example.small.jpg</image>
<image size="medium">http:example.medium.jpg</image>
<image size="large">http:example.largw.jpg</image>

我只想从尺寸=“中等”的图片标签访问“http:example.medium.jpg”这个值。

非常感谢任何帮助。

同盟

4 个答案:

答案 0 :(得分:7)

<xsl:value-of select="image[@size='medium']" />

答案 1 :(得分:5)

这个XPath表达式将为您提供所需的结果:

//image[@size='medium']

这是一个非常基本的XPath问题。我建议您浏览W3C School XPath tutorial的一些示例,因为XPath是一个非常有表现力和有用的工具。

要在XSL样式表中使用它,您可能会从以下内容开始:

<xsl:template match="/">
  <xsl:value-of select="//image[@size='medium']"/>
</xsl:template>

同样,这是非常基本的XSL,所以如果你想了解更多,我建议你看看W3C School的XSLT tutorial。当我需要查看我可能忘记的事情的细节时,我就去了。

答案 2 :(得分:2)

澄清三个答案中的XPath表达式

<xsl:template match="/">
  <xsl:value-of select="//image[@size='medium']"/>
</xsl:template>

(@ Welbog)将在文档中找到size =“medium”

的每个图像元素
<xsl:value-of select="image[@size = 'medium']" />

(@ Murph和@carillonator)只会返回一个图像元素,如果它是当前元素的直接子元素。由于您没有指定XML的结构,因此在评估此表达式时应该小心。

答案 3 :(得分:1)

这是一个expath查询 - 具体取决于xslt的结构,但鉴于上述情况,调用模板将如下所示:

<xsl:apply-templates select="image[@size = 'medium']" />

只需选择值,erm:

<xsl:value-of select="image[@size = 'medium']" />

两种情况下的关键是“where”,即方括号中的位。为了给出更好的答案,我希望看到更多的XML和XSLT