xslt 命名空间问题 rss

xslt namespace issue rss

我正在尝试转换 bank of canada 的提要以在我的应用程序中使用它。

这是我的 xml 和我的 xsl:http://xsltransform.net/bFDb2D4/4

我无法更改 xml,这是一个 rss 提要。唯一阻碍我的是这一行:

xmlns="http://purl.org/rss/1.0/"

如果我删除这个,我的选择器是好的,我得到了结果。我是 xslt 的初学者。有人可以解释我做错了什么吗?

 xmlns="http://purl.org/rss/1.0/"

表示 XML 中的所有非限定元素名称(如 RDF、项目、标题)都具有给定的命名空间。为了 匹配 这些元素,您需要在 XSLT 中使用相同的命名空间定义,并在 XPath 表达式中包含命名空间前缀:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:rss="http://purl.org/rss/1.0/"
    exclude-result-prefixes = "rss">

<xsl:output method="html"/>
<xsl:template match="/">
    <xsl:apply-templates select="/rss:RDF/rss:item"/>
</xsl:template>

<xsl:template match="rss:item">
    <p>
        <xsl:value-of select="rss:title"/><br/>
        <xsl:value-of disable-output-escaping="yes" select="description"/>
    </p>
</xsl:template>

</xsl:stylesheet>