1

私は RSS マネージャーを開発しており、さまざまな RSS フィードにさまざまな要素が含まれていますが、これらの要素が含まれていないものもあります。フィードに存在しない要素を表示しないように xsl:if ステートメントを実装したいと考えています。

例えば:

<xsl:template match="item"> <!--an item in a feed-->
<xsl:value-of select="title" /> <!--display feed items title-->

<xsl:value-of select="author" />    <!--to display item's author BUT not all feed items have an author-->

その要素が存在しない限り、著者情報を表示しないようにするにはどうすればよいですか?

4

3 に答える 3

3

XSLT コーディングの標準的な再帰降下スタイルを使用する場合、

<xsl:apply-templates select="author"/>

必要な効果が得られます。作成者がいない場合、何も出力されません。

于 2012-10-05T09:10:58.063 に答える
2

XSL はノードの存在について不平を言うことはありません。簡単な言葉で言えば、ノードが存在する場合にのみ実行することがデフォルトで処理されます。

上記のコードでは、ノードを見つけようとします<author>。見つかった場合はコピーし、そうでない場合は無視します。

不要な空白が心配な場合は、これを使用してください: (現在のノードが作成者の親であると仮定)

<xsl:if test='author'>
    <xsl:value-of select="author" />
</xsl:if>
于 2012-10-05T07:53:40.023 に答える
0

<xsl:apply-templates select="item[title]"> は、「title」要素を含む場合にのみ「item」テンプレートを使用します。
@Peter: item/author は item を author の子と一致させませんが、author は item の親と
一致させます

于 2012-10-05T07:05:49.153 に答える