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>
我正在尝试转换 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>