我有类型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