2011-10-03 50 views
0

我试图对这种类型的RSS使用XSLT转换(下面),但没有结果。这是为什么 ?无法正确使用XSLT进行转换

<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?> 

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUACQXg6fyp7ImA9WhdUFUo.&quot;"> 

和它的结构是

<feed> 
tags tags tags like <title></title> 
<entry><published></published><title></title><content></content>....</entry> 
</feed> 

XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:include href="identity.xsl"/> 

<xsl:template match="node() | @*"> 
    <xsl:copy> 
    <xsl:apply-templates select="node() | @*" /> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="entry"/> 

</xsl:stylesheet> 
+0

这是一个常见问题解答。重复http://stackoverflow.com/questions/6111202/select-default-namespace-in-xpath-with-htmlunit。另外,“无结果”令人困惑......它听起来像是“没有输出”,但应该有一个结果文档等同于输入文档,对吗? – LarsH

回答

1

你的样式表被构造为默认的XML命名空间(的xmlns = “”)。一个RSS提要定义了Atom(xmlns =“http://www.w3.org/2005/Atom”)命名空间,如果你有嵌套的XML内容,可能还有其他的。

要'匹配'该名称空间中的任何内容,您还需要在样式表中定义它。您可能想要使用以下前缀定义Atom:xmlns:a =“http://www.w3.org/2005/Atom”。然后你的比赛将变成

<xsl:template match="a:entry"/> 

此外,上述匹配条目,但你没有做任何事情。当你得到一个条目时,你可能希望它打印出一个转换后的值,但上面只是将它从结果中排除。

+0

我现在明白了。我还看到一些标签,例如''。我如何匹配他们?我尝试过':app:编辑过的',但是我得到错误 – EnexoOnoma

+0

@Giorkouros命名空间是平坦的。你可以简单地匹配“app:edited”。 –