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