使用XSL获取XML文档中的属性值

时间:2012-06-01 16:02:56

标签: xslt xpath docbook-5

我尝试获取iWantToGetThis.jpg的值并在我的XSL转换期间将其放入<img>。这就是我的xml结构:

<article>
    <info>
        <mediaobject>
            <imageobject>
                <imagedata fileref='iWantToGetThis.jpg'>

以下是我为XSL提出的建议:

<xsl:template name="user.header.content">
    <xsl:stylesheet xmlns:d='http://docbook.org/ns/docbook'>
        <img><xsl:attribute name="src">../icons/<xsl:value-of select='ancestor-or-self::d:article/info/mediaobject/imageobject/imagedata/@fileref' /></xsl:attribute></img>
    </xsl:stylesheet>
</xsl:template>

图像正在添加到输出中,但src属性设置为&#34; ../ icons /&#34;,所以我假设它没有找到{{ 1}} XML中的属性。这看起来对我来说非常有效,所以我不确定我错过了什么。

1 个答案:

答案 0 :(得分:0)

我不知道你怎么能得到任何东西,因为它看起来不像一个有效的XSLT文档(我希望错误“Keyword xsl:stylesheet可能不包含img。”)。

但是,您可能只是显示代码片段。如果是这种情况,那么您的问题可能是您只为文章元素指定了命名空间,而实际需要为xpath中的所有元素指定它。试试这个

<xsl:value-of 
   select="ancestor-or-self::d:article/d:info/d:mediaobject/d:imageobject/d:imagedata/@fileref"/>

另一个可能的问题可能是因为您使用'祖先或自我'xpath轴来查找属性。只有当前上下文已经在文章元素或其后代之一上时,这才有效。

作为旁注,您可以通过在此处使用属性值模板来简化代码

<img src="../icons/{ancestor-or-self::d:article/d:info/d:mediaobject/d:imageobject/d:imagedata/@fileref}" />