2
XML:XSLT等しいか等しくない演算子は、不在ノードで同じ結果を返します。どのように可能ですか?
<root></root>
XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" encoding="UTF-8"/>
<xsl:template match="/root">
absent_node EQUALS zero-length string [<xsl:value-of select="absent_node=''"/>];
absent_node NOT EQUALS zero-length string via != [<xsl:value-of select="absent_node!=''"/>]
</xsl:template>
</xsl:stylesheet>
結果:
absent_node EQUALS zero-length string [false];
absent_node NOT EQUALS zero-length string [false]
私はsimilar issue with pythonを見ましたが、ここでの説明を必要としています。
text()またはstring()による明示的な値型のキャストなしに正反対の結果を得たい場合はnot()を使用していますか?
引用は、XPath 1.0仕様からのものであるが、2.0ルールは、しかし、本質的に同じです任意の配列に一般化される。 Xが空シーケンスである場合、(X = 'a')は「Xにa 'と等しい項目がある」ことを意味し、(X!=' a ')は「Xに項目がある'a'と等しくない。 Xが空のシーケンスである場合、両方の条件は偽です。 –
また、存在しない要素/属性をSQLでnullのように扱う場合、セマンティクスはSQLセマンティクスに非常によく似ていることに注意してください。X = 'a'およびX!= 'a'選択することはできません。違いは、SQLでは述語が事実上nullと評価されますが、XPathではfalseと評価される点です。 –