test
mrss xml のコピーに XSLT を使用したいのですが、XSLT を使用して属性に値を持たないアイテムをフィルター処理label
します。
これが私がこれまでにしたことです:
<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>
その中で私が気に入らない3つのこと:
- 一致しないアイテムをフィルタリングするための空のテンプレート、
rss
、およびchannel
要素はソース XML に既に存在しますが、それを XSL ファイルに入れる必要があります。- 単一の XPath 式でできることもあると思いますが、XPath と XSLT について十分な知識がありません。
誰かがより良い/簡単な解決策を提案できますか?