1

私は2つのノードを持っています

<example/><example></example>

どうすればそれらを区別できますか?

私の考えでは、1 つ目は<xsl:when test="example">で、2 つ目は
<xsl:when test="example = ''">です。

私はこれらが正しいとは思いません。私はこれに混乱しています。誰でも明確にできますか?

前もって感謝します

4

4 に答える 4

1

どうすればそれらを区別できますか?

これらはまったく同じ XML ノード ツリーをシリアル化する 2 つの異なる方法であるため、XML ツールでそれらを区別することはできません。アプリケーションで 2 つのケース1を区別する必要がある場合は、排他的または前処理ステップとして、ある種の非 XML ツールを使用する必要があります。

たとえば/>、空の要素タグの一部として以外に、元のファイル内に文字列「の

/>

の中へ

 _wasEmpty="yes"/>

(先頭のスペースを含む) 結果を XML として解析する前に、XSLT は<xsl:when test="example[_wasEmpty = 'yes']">.


1私 (および SO に関する他の多くの人) は、XML ベースであると主張しているが、XML が同等であると述べているものを区別する必要があるアプリケーションは根本的に壊れていると主張します。を使用するなど、XML 互換の方法でケースを区別するように変更するよう依頼してくださいxsi:nil。しかし、私は実用的であり、これが不可能な場合があることを理解しています;-)

于 2013-08-01T16:49:51.823 に答える