Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSLT包含()和空标记_Xslt_Contains - Fatal编程技术网

XSLT包含()和空标记

XSLT包含()和空标记,xslt,contains,Xslt,Contains,我对XSLT1.0包含函数和空标记有一个问题 我有以下xslt样式表: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/"> <xsl:for-each select="test/teste

我对XSLT1.0包含函数和空标记有一个问题

我有以下xslt样式表:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/">
        <xsl:for-each select="test/tester">
            <test>
                <xsl:value-of select="."/>
                <xsl:text>: </xsl:text>
                <xsl:value-of select="contains('11,22,33', .)"/>
            </test>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
输入是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<test>
    <tester>11</tester>
    <tester>22</tester>
    <tester>33</tester>
    <tester>xx</tester>
    <tester/>
</test>
<?xml version="1.0" encoding="UTF-8"?>
<test>11: true</test>
<test>22: true</test>
<test>33: true</test>
<test>xx: false</test>
<test>: true</test>
结果是:

<?xml version="1.0" encoding="UTF-8"?>
<test>
    <tester>11</tester>
    <tester>22</tester>
    <tester>33</tester>
    <tester>xx</tester>
    <tester/>
</test>
<?xml version="1.0" encoding="UTF-8"?>
<test>11: true</test>
<test>22: true</test>
<test>33: true</test>
<test>xx: false</test>
<test>: true</test>
这里的问题是,如果标记为空,我希望contains函数返回false。但是,最后一行返回true。除了首先检查标记值是否为空并将变量设置为某个我知道不在值列表中的值之外,我如何避免这种情况


谢谢

XPath 1.0规范在这方面相当模糊,但XQuery 1.0和XPath 2.0函数规范:


我不认为这是什么新东西,只是对旧功能的澄清。

XPath 1.0规范在这方面相当模糊,但XQuery 1.0和XPath 2.0函数规范:

我不认为这是什么新东西,只是对旧功能的澄清。

根据行为,这是标准

要避免这种情况,请使用:

根据行为,这是标准

要避免这种情况,请使用:


但是fn:contains工作正常,因为您的字符串实际上包含一个空字符串。您应该通过f.i.处理来更改逻辑,其中只包含包含内容或其他内容的标记。@Alex我可以理解空字符串是否包含空字符串,但不能理解“11,22,33”包含空字符串。但那只是我:好问题,+1。请参阅我的答案以了解解释和完整、简短、简单的解决方案:但是fn:contains工作正常,因为您的字符串实际上包含一个空字符串。您应该通过f.i.处理来更改逻辑,其中只包含包含内容或其他内容的标记。@Alex我可以理解空字符串是否包含空字符串,但不能理解“11,22,33”包含空字符串。但那只是我:好问题,+1。请参阅我的答案以了解解释和完整、简短、简单的解决方案:+1.正确的解释。在逻辑术语中,任何集合都包含空集合。+1正确解释。从逻辑上讲,任何集合都包含空集。