Xslt 使用XSL获取XML文档中属性的值
我正在尝试获取Xslt 使用XSL获取XML文档中属性的值,xslt,xpath,docbook-5,Xslt,Xpath,Docbook 5,我正在尝试获取iWantToGetThis.jpg的值,并将其放入。/图标中/ 图像被添加到输出中,但是src属性被设置为“./icons/”,因此我假设它在XML中找不到fileref属性。对我来说,这看起来非常有效,所以我不确定我遗漏了什么。我不确定您如何能够获取任何信息,因为这看起来不像是一个有效的XSLT文档(我希望出现错误“关键字xsl:stylesheet可能不包含img”) 然而,您可能只是在显示代码片段。如果是这种情况,您的问题可能是您只为article元素指定了名称空间,而实
iWantToGetThis.jpg的值,并将其放入。/图标中/
图像被添加到输出中,但是src属性被设置为“./icons/”,因此我假设它在XML中找不到fileref
属性。对我来说,这看起来非常有效,所以我不确定我遗漏了什么。我不确定您如何能够获取任何信息,因为这看起来不像是一个有效的XSLT文档(我希望出现错误“关键字xsl:stylesheet可能不包含img”)
然而,您可能只是在显示代码片段。如果是这种情况,您的问题可能是您只为article元素指定了名称空间,而实际上需要为xpath中的所有元素指定名称空间。试试这个
<article>
<info>
<mediaobject>
<imageobject>
<imagedata fileref='iWantToGetThis.jpg'>
另一个可能的问题可能是因为您正在使用“祖先或自我”xpath轴来查找属性。只有当前上下文已经在文章元素或其子元素上时,这才有效
作为旁注,您可以通过在此处使用属性值模板来简化代码
<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>
原因很简单,xpath表达式中的子元素缺少名称空间。如果完整表单只包含一个
元素,则允许使用这种样式表形式。样式表只包含该模板元素的内容。我正在使用的XSL更加充实。在发布这篇文章之后,我意识到这并不是一个好的XSL示例。。。
<xsl:value-of
select="ancestor-or-self::d:article/d:info/d:mediaobject/d:imageobject/d:imagedata/@fileref"/>
<img src="../icons/{ancestor-or-self::d:article/d:info/d:mediaobject/d:imageobject/d:imagedata/@fileref}" />