私は型xsの定義された要素を持つXMLスキーマを持っています。このようにブール値:XSLTのxs:boolean値を比較していますか?
<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>
それを(@ //使用して、@を削除し、0、1、)(、)(真偽を使用)、このように、その常に「はい」と表示されます。私はここで間違って何をしていますか?
EDIT(マーティンHonnenからのリクエストによって):ここで
が使われているXMLのサンプルです:テンプレートは、私は思うので、私は、XSLを使用しています:
<?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を使用するときに問題を引き起こします:for-eachは各関数をループし、有用なタグごとに固有のものを出力しようとします。 xsl:templateは、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。私の答えは完全な解決策を見てください。 –