我正在尝试转换bank of canada的Feed,以便在我的应用中使用它。
这是我的xml和我的xsl:http://xsltransform.net/bFDb2D4/4
我无法更改xml,这是一个rss feed。唯一阻止我的是这一行:
xmlns="http://purl.org/rss/1.0/"
如果我删除了这个,我的选择器很好,我得到了结果。我是xslt的初学者。有人可以解释一下我做错了什么吗?
答案 0 :(得分:1)
xmlns="http://purl.org/rss/1.0/"
表示XML中的所有非限定元素名称(如RDF,item,title)都具有给定的名称空间。为了匹配这些元素,您需要在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>