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

如何使用XSL转换和XML通过属性值访问元素?,xml,xslt,xhtml,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:ex

我试图使用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.small.jpg
http:example.medium.jpg
http:example.largw.jpg
我只想从image标记中访问值“http:example.medium.jpg”,其中size=“medium”

非常感谢您的帮助


Ally

此XPath表达式将获得所需的结果:

//image[@size='medium']
这是一个非常基本的XPath问题。我建议您阅读W3C学校的一些示例,因为XPath是一个非常有表现力和有用的工具

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

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

同样,这是非常基本的XSL,所以如果你想了解更多,我建议你看看W3C学校的。当我需要查找我可能忘记的事情的详细信息时,我会去那里。


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

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

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

只需选择值,erm:

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


这两种情况下的关键是“where”,即方括号中的位。为了给出更好的答案,我希望看到更多的XML和XSLT,以澄清这三个答案中的XPath表达式

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

(@Welbog)将找到文档中size=“medium”的每个图像元素



(@Murph和@carillonator)仅当图像元素是当前元素的直接子元素时才会返回该元素。因为您没有指定XML的结构,所以在计算此表达式时应该小心。

只想指出,W3学校与官方标准机构W3C没有关联。有关XSLT和相关主题的最新、维护良好的信息,我建议任何人都应该访问Microsoft的网站:
<xsl:value-of select="image[@size = 'medium']" />