XSLT 1.0 contains()函数和空标记存在问题。XSLT包含()和空标记
我有这样的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>
问题是,我希望功能如果<tester>
标签为空则返回false。然而它对于最后一行是正确的。我怎样才能避免这种情况,除了首先检查空值的标签值并将变量设置为某个值,我知道该值不在值列表中?
谢谢!
但'FN:contains'正常工作,因为你的字符串实际上包含一个空字符串。你应该通过f.i来改变逻辑。使用'contains'处理仅包含具有内容或其他内容的标签。 – 2011-03-10 07:38:23
@Alex我会理解,如果空字符串包含空字符串,但不是'11,22,33'包含空字符串。但那只是我:) – Jari 2011-03-10 07:55:59
好问题,+1。请参阅我的回答以获得解释和完整,简短和简单的解决方案。 :) – 2011-03-10 14:03:38