【问题标题】:XSLT stylesheet modification to get some tags that are gone after the transformationXSLT 样式表修改以获取转换后消失的一些标签
【发布时间】:2011-10-03 21:22:15
【问题描述】:

我使用 XSLT 转换了一些 RSS XML 提要。我编辑的基本上有两种类型:

1. <rss><channel>some tags about the RSS<item></item></channel></rss>
2. <feed>some tags about the RSS<entry></entry></feed>

使用这个样式表。 (它从paths.xml 文件中获取一些文件)

<xsl:stylesheet version="1.0" xmlns:f="http://www.w3.org/2005/Atom" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/*">
    <NEWrss>
        <xsl:for-each select="file">
            <xsl:apply-templates 
                select="document(.)/*//channel | document(.)/f:feed/f:entry">
                <xsl:with-param name="file" select="."/>
            </xsl:apply-templates>
        </xsl:for-each>
    </NEWrss>
</xsl:template>

在第一个 RSS 上,我正确地得到了带有 &lt;channel&gt; 和第一个 &lt;item&gt; 之间标签的输出。这些是一些包含博客信息的标签,比如标题。

然而,在第二个地方,那些标签(博客的标题......在&lt;feed&gt; 和第一个&lt;entry&gt; 之间找到)在转换后消失了。中的标签显示正确。

我的问题是如何获得这些标签?

类似于第二个结构的示例 Feed 是 http://feeds.feedburner.com/EFENPRESS-

谢谢。

【问题讨论】:

  • 那么,每个源 XML 文档是什么,想要的确切输出结果是什么?其他一切都只是噪音......

标签: php xml xslt


【解决方案1】:

我认为您的意思是您看不到 f:feed 元素之前的文本。那是因为您的 select 语句不包含它 - 它只选择 f:feed/f:entry 和 channel 元素。也许您应该尝试处理 f:feed 而不是 f:feed/f:entry?或 f:feed/node(),它将同时选择 f:feed/text() 和 f:feed()/f:entry。

【讨论】:

    【解决方案2】:

    看起来像是命名空间问题。您正在使用名称空间前缀“f”来访问提要和条目元素,但这些元素是否真的在该名称空间中并不明显。 (实际上,entry 元素是空的,因此访问它不会呈现任何内容)

    【讨论】:

    • 您提到“第一个条目”,这表明您认为有几个条目元素。只有一个。它的开始标签是 ,它的结束标签是 ,它的内容是介于两者之间的所有内容(即,什么都没有)。
    • 我得到了&lt;entry&gt;&lt;/entry&gt;之间的所有内容我没有得到&lt;feed&gt;和第一个&lt;entry&gt;之间的标签
    猜你喜欢
    • 2013-04-23
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    相关资源
    最近更新 更多