1

Atomフィードを解析し、各エントリのAtom準拠のキャッシュを作成したいと思います。

問題は、一部のフィード(たとえばこれ)には、Atom以外の多くの名前空間があることです。

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

このようなもの:

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?
4

1 に答える 1

2

XSLTでは、次の変換を使用できます。

<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名前空間で
  • テキストノードまたはコメント

多分あなたはそれを使うことができます。

于 2009-08-27T16:26:08.110 に答える