私は2つのノードを持っています
<example/>
と<example></example>
。
どうすればそれらを区別できますか?
私の考えでは、1 つ目は<xsl:when test="example">
で、2 つ目は
<xsl:when test="example = ''">
です。
私はこれらが正しいとは思いません。私はこれに混乱しています。誰でも明確にできますか?
前もって感謝します
どうすればそれらを区別できますか?
これらはまったく同じ XML ノード ツリーをシリアル化する 2 つの異なる方法であるため、XML ツールでそれらを区別することはできません。アプリケーションで 2 つのケース1を区別する必要がある場合は、排他的または前処理ステップとして、ある種の非 XML ツールを使用する必要があります。
たとえば/>
、空の要素タグの一部として以外に、元のファイル内に文字列「の
/>
の中へ
_wasEmpty="yes"/>
(先頭のスペースを含む) 結果を XML として解析する前に、XSLT は<xsl:when test="example[_wasEmpty = 'yes']">
.
1私 (および SO に関する他の多くの人) は、XML ベースであると主張しているが、XML が同等であると述べているものを区別する必要があるアプリケーションは根本的に壊れていると主張します。を使用するなど、XML 互換の方法でケースを区別するように変更するよう依頼してくださいxsi:nil
。しかし、私は実用的であり、これが不可能な場合があることを理解しています;-)