8

次の変数を定義しました。

<xsl:variable name="pica036E"
                        select="recordData/record/datafield[@tag='036E']" />
<xsl:variable name="pica036F"
                        select="recordData/record/datafield[@tag='036F']" />

ここで、変数 pica036E が空ではなく、pica036F が空である場合に条件を実行する必要があります。次のメッセージを表示し、それ以外の場合は別のメッセージを表示します。それは私のコードですが、出力はありません。「nullまたは空」は正しく定義されていますか?

<xsl:choose>
                        <xsl:when test="$pica036E != '' and $pica036F = ''">
                        <xsl:message>
                         036F no 036E yes      
                            </xsl:message>
                        </xsl:when>

                         <xsl:otherwise>
                        <xsl:message>
                                036E no 036F yes
                            </xsl:message>  
                        </xsl:otherwise> 
                    </xsl:choose>  
4

3 に答える 3

9

XPath では、X=Y は (X 内の x、Y 内の y のペアが x = y を満たす場合) を意味し、X != Y は (X 内の x、Y 内の y のペアが x != y を満たす場合) を意味します。

これは、X または Y のいずれかが空のシーケンスである場合、X=Y と X!=Y の両方が false であることを意味します。

たとえば、に長さゼロの文字列ではない$pica036E != ''値があるかどうかをテストします。$pica036Eに値が$pica036Eない場合、この条件を満たす値はありません。

その結果、XPath で != を使用すると、常にコードの匂いがします。通常、 ではなく、X != Yと書く必要がありますnot(X = Y)

于 2017-03-16T11:58:38.963 に答える