2017-03-08 6 views
0

子ノードの値をチェックし、値が-1でない場合にのみ、変換されたXMLにそのノードを含めようとしています。以下は入力xmlのサンプルです。XSLT - 無効なデータが含まれているノードを除外する

<root> 
    <a>-1</a> 
    <b>valid</b> 
    <c>valid</c> 
    <d>valid</d> 
</root> 

およびXSLTの関連セクション:Cを介してB

<xsl:choose> 
    <xsl:when test="/a != -1"> 
      <xsl:value-of select="*"></xsl:value-of>  
    </xsl:when> 
    <xsl:otherwise> 
      <xsl:value-of select="*[not(a)]"></xsl:value-of> 
    </xsl:otherwise> 
</xsl:choose> 

要素は-1の値を持つことが許さので、私は、具体的には、その値の<a>要素をチェックする必要がある、とだけさ除外すべきである。現在私は選択ブロックで-1チェックを行い、<xsl:value-of select="*[not(a)]"></xsl:value-of>を使って除外しようとしています。どんな助けもありがとうございます。

+0

「年」とは何ですか? –

+0

申し訳ありませんが、(a)ではありませんでした。私は編集をしました。 –

答えて

1

あなたがxsl:apply-templatesを使用して、標準的な再帰下降処理モデルを使用する場合は、あなただけのこれらの要素を除外するために、何も行わないルール

<xsl:template match="a[.=-1]"/> 

を必要としています。

他の処理モデルを使用している場合は、コードを表示する必要があります。

+0

あなたのお返事ありがとうございます@マイケル。質問を編集して、XSLTの自分のセクションを含めました。そのセクションはを子として持つことを許さない別の要素の内部にあります。どのように私はこれを達成することができるかもしれない他のアイデア? –

+0

あなたのXSLTフラグメントが私に間違っているように見えます。私はスタイルシート全体のどこにフィットしているのかわかりませんが、ロジックは私には意味がありません。 XSLTでこれに取り組む適切な方法は、すべてを照合し、それを再帰的にコピーするアイデンティティーテンプレートルールを作成し、別の振る舞いが必要なエレメント(たとえば、自分の答えのテンプレートルールなど)をさらに作成することです。 –

関連する問題