0

我试图在我的 XSL 转换过程中获得价值iWantToGetThis.jpg并将其放入。<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 属性设置为“../icons/”,所以我假设它没有fileref在 XML 中找到该属性。这对我来说看起来完全有效,所以我不确定我错过了什么。

4

1 回答 1

0

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

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

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

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

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

<img src="../icons/{ancestor-or-self::d:article/d:info/d:mediaobject/d:imageobject/d:imagedata/@fileref}" />
于 2012-06-01T16:35:10.550 回答