2009-08-27 3 views
1

私はAtomフィードを解析し、各エントリのAtom準拠のキャッシュを作成したいと思います。LibXML-Rubyで不要なネームスペースを消去する

一部のフィード(this one for example)には、Atom以外の多くの名前空間があるという問題があります。

すべてのAtomノードをそのまま維持し、別の名前空間に属する各ノードを削除することはできますか?

このような何か:XSLTで

valid_nodes = entry.find('atom:*', '/atom:feed/atom:entry') 
# now I need to create an xml string with valid_nodes, but how I do that?

答えて

2

あなたは、この変換を使用できます。彼らは、デフォルトで

  • であれば、

    <xsl:stylesheet 
        version="1.0" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
        xmlns="http://www.w3.org/2005/Atom" 
    > 
        <xsl:output method="xml" indent="yes" encoding="utf-8" /> 
    
        <xsl:template match="node() | @*"> 
        <xsl:if test=" 
         namespace-uri() = '' 
         or 
         namespace-uri() = 'http://www.w3.org/2005/Atom' 
        "> 
         <xsl:copy> 
         <xsl:apply-templates select="node() | @*" /> 
         </xsl:copy> 
        </xsl:if> 
        </xsl:template> 
    
        <xsl:template match="text()|comment()"> 
        <xsl:copy-of select="." /> 
        </xsl:template> 
    </xsl:stylesheet> 
    

    このコピー逐語的にすべてのノードを(空)名前空間

  • Atom名前空間
  • テキストノードまたはコメント

たぶん、あなたはそれを使用することができます。

関連する問題