2016-12-18 14 views
0

私はXMLXML要素が定義に存在しない場合、XSLT要素をスキップする方法はありますか?

<?xml version="1.0"?> 
<data> 
<element> 
<A>192.168.188.100</A> 
<B>/shelf=1</B> 
<C></C> 
</element> 
<element> 
<A>192.168.188.100</A> 
<B>/slot=1</B> 
</element> 
<element> 
<A>192.168.188.23</A> 
<B>/port=client:1:3:1-2</B> 
</element> 
</data> 

を持って、私は働くXSLTマッピングがあります。

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:max="http://www.ibm.com/maximo"> 

<xsl:output method="xml" encoding="UTF-8" indent="yes"/> 
<xsl:template match="/"> 
    <max:SyncCIDW> 
    <max:CIDWSet> 
    <xsl:apply-templates select="data/element" /> 
    </max:CIDWSet> 
    </max:SyncCIDW> 
</xsl:template> 

    <xsl:template match="element"> 
    <max:CI> 
     <max:CINUM><xsl:value-of select="A"/></max:CINUM> 
    </max:CI> 
    </xsl:template> 

</xsl:stylesheet> 

をしかし、今、私は定義の要素Cを持っている要素だけを処理したいです。だからC要素は値を持つかもしれませんが、Cを持つ要素だけを処理する必要がありますか?

したがって、この例の基本的な出力は結果に1つの要素しか持たないはずです。

おかげ<xsl:apply-templates select="data/element[C]" />

答えて

2

変更<xsl:apply-templates select="data/element" />

+0

こんにちはMartinさん、もう1つの質問がある場合は申し訳ありません。C要素を除いて、そのXMLを処理するにはD要素を持たなければいけないのでしょうか?CとDの両方を満たすためには、 ? – Dejan

+0

このような場合は、data/element [C] [D]か正しい構文ですか? – Dejan

+0

'data/element [C] [D]'は 'C'要素と' D'要素の両方を(少なくとも1つ)持つことをチェックします。必要に応じて 'data/element [C and D]'と書くこともできます。 –

関連する問題