我有類型xs定義的元素的XML架構:布爾是這樣的:比較XSLT中的xs:布爾值嗎?
<xs:element name="useful"
minOccurs="1" maxOccurs="1"
type="xs:boolean"/>
我試圖用一個選擇/時/否則XSL阻止特定輸出一些基於價值是,是這樣的:
<xsl:choose>
<xsl:when test="@useful = 0">No</xsl:when>
<xsl:otherwise>Yes</xsl:otherwise>
</xsl:choose>
我試過爲每相比變化我能想到的(使用真(),假(),1,0,去掉@,使用// @),它總是打印出'是'。我在這裏做錯了什麼?
EDIT(由馬丁Honnen要求):
這裏是一個的使用XML的示例:
<?xml version="1.0"?>
<functions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="functions.xsd">
<function>
<name>func1</name>
<useful>0</useful>
</function>
<function>
<name>func2</name>
<useful>1</useful>
</function>
</functions>
這會導致使用XSL問題:模板我想,所以我使用XSL :for-each循環遍歷每個函數,並嘗試輸出特定於每個有用標記的內容。 xsl:模板只能用於xslt的頂層,對嗎?
完整的XSLT文件
<?xml version='1.0' ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html><body>
<h2>Functions</h2>
<table border="1">
<tr>
<th>Functions</th>
<th>Useful</th>
</tr>
<xsl:for-each select="functions/function">
<tr>
<td>
<xsl:value-of select="name"/>
</td>
<td>
<xsl:choose>
<xsl:when test="@useful = 0">No</xsl:when>
<xsl:otherwise>Yes</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:for-each>
</table>
</body></html>
</xsl:template>
</xsl:stylesheet>
好問題,+1。查看我的答案獲得完整的解決方案。 – 2010-11-20 17:25:55