1
我想使用XSLT复制mrss xml,但使用XSLT筛选label
属性中没有test
值的项目。根据子节点属性值筛选节点的最简单XSLT
这里是我做过什么至今:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:media="http://search.yahoo.com/mrss/">
<xsl:template match="/">
<rss xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
<channel><xsl:apply-templates/></channel>
</rss>
</xsl:template>
<xsl:template match="channel/item[contains(media:category/@label,'test')] | channel/*[not(self::item)]">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="channel/item[not(contains(media:category/@label,'test'))]">
</xsl:template>
</xsl:stylesheet>
三样东西,我不喜欢它:
- 空模板过滤无与伦比的项目,
rss
,并channel
元素已经存在于源XML中,但我仍然需要将它放入XSL文件- 我认为有些事情可以做到单个XPath表达式,但我不知道XPath和XSLT足够多。
有人可以建议更好/更简单的解决方案吗?
谢谢,它的工作原理,唯一的问题是源中的元素有缩进,所以有空行,取代每个项目删除。我如何解决它? – 2013-03-17 12:08:02
增加一个'xsl:strip-space'应该可以解决这个问题。上面修改。 – JLRishe 2013-03-17 12:52:03
如何为两个单词添加一个OR过滤器?只有“sport”或“nature”类别的商品? – aborruso 2017-06-18 11:33:10