使用LibXML-Ruby清除不需要的名称空间
我想解析一个Atom提要,并为每个条目创建一个与Atom兼容的缓存 问题是,有些提要()有许多名称空间,而不是Atom名称空间 是否可以保持所有Atom节点的完整性并删除属于另一个命名空间的每个节点 大概是这样的:使用LibXML-Ruby清除不需要的名称空间,xml,ruby,xpath,namespaces,libxml-ruby,Xml,Ruby,Xpath,Namespaces,Libxml Ruby,我想解析一个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? 在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?
在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命名空间中
- 文本节点或注释