When a variable is declared like this:
<xsl:variable name="raum" select="raum"></xsl:variable>
and there is no child::raum element, the value of $raum is an empty
node-set.
$raum != ""
tests whether any of the nodes in $raum is not equal to "". There aren't any
such nodes, so the result is false.
You want
not($raum = "")
Alternatively, make your variable a string by writing it as
<xsl:variable name="raum" select="string(raum)"/>
An empty node-set will then be converted to an empty string.
Michael Kay
-----Original Message-----
From: Christian Barth [mailto:christian(_at_)buerobarth(_dot_)de]
Sent: 23 January 2006 14:49
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Problem with XPath in my XSL
Hi!
I use the XPath-Operator "and" to test some variables in a
xsl:choose. See
the code:
<xsl:template match="ergebnis">
<xsl:for-each select="objekt">
<xsl:variable name="bau" select="bauvorhaben"></xsl:variable>
<xsl:variable name="geb" select="gebaeude"></xsl:variable>
<xsl:variable name="stock" select="stockwerk"></xsl:variable>
<xsl:variable name="NZ" select="nutzungszone"></xsl:variable>
<xsl:variable name="raum" select="raum"></xsl:variable>
<tr>
<td align="center"><b><xsl:value-of select='@id'/></b></td>
<xsl:choose>
<!-- A-SUCHE -->
<xsl:when test="$typ = 'A'">
<xsl:choose>
<!-- Für Elemente, die auf Gebaeude-Ebene liegen -->
<xsl:when test="$geb != '' and $stock = '' and $NZ = '' and
$raum = ''">
<td>Gebaeude "<xsl:value-of select="$geb" />" in Bauvorhaben
"<xsl:value-of select="$bau" />"<p></p>
Elemente könnten für Sie von Interesse sein:<br></br>
<xsl:for-each select="*">
<xsl:choose>
<xsl:when test="local-name() = 'gebTrennwaende'">
<xsl:call-template name="Datenanzeige">
<xsl:with-param name="element"
select="gebTrennwand"
/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</td>
</xsl:when>
<!-- Für Elemente, die auf Stockwerk-Ebene liegen -->
-------------------------------------------------------------------
<!-- THIS TEST SHOULD BE TRUE --><xsl:when test="$stock != ''
and $NZ = ''
and $raum = ''">
-------------------------------------------------------------------
<td>Stockwerk "<xsl:value-of select="$stock" />" von Gebaeude
"<xsl:value-of select="gebaeude" />" in Bauvorhaben "<xsl:value-of
select="bauvorhaben" />"<p></p>
Elemente könnten für Sie von Interesse sein:<br></br>
<xsl:for-each select="*">
<xsl:choose>
<xsl:when test="local-name() = 'rettungswege'">
<xsl:call-template name="Datenanzeige">
<xsl:with-param name="element" select="rw" />
</xsl:call-template>
</xsl:when>
<xsl:when test="local-name() = 'trennwaende'">
<xsl:call-template name="Datenanzeige">
<xsl:with-param name="element"
select="trennwand" />
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</td>
</xsl:when>
<xsl:otherwise>
<td>Gebaeude "<xsl:value-of select="$geb" />" in Bauvorhaben
"<xsl:value-of select="$bau" />"</td>
</xsl:otherwise>
</xsl:choose>
<td align="center"><b><xsl:value-of select="gesamtSim" /></b></td>
</xsl:when>
<!-- B-SUCHE -->
<xsl:when test="$typ = 'B'">
<td><xsl:value-of select="@typ" /> "<xsl:value-of
select="bezeichnung"
/>" aus Bauvorhaben "<xsl:value-of select="bauvorhaben" />"
in Gebaeude
"<xsl:value-of select="gebaeude" />"</td>
<td align="center"><b><xsl:value-of select="gesamtSim" /></b></td>
</xsl:when>
<!-- C-SUCHE -->
<xsl:when test="$typ = 'C'">
noch
</xsl:when>
<xsl:otherwise>
noch
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for-each>
</xsl:template>
In the XML-doc used for testing this stuff, there are only the Tags
<gebaeude> and <stockwerk>. So the other variables are empty. The
xsl-processor should than enter the bold "when-clause". But
it always goes
to the otherwise-Tag.
I just don't see why? Can anybody help me please?
Thanks,
Barthi
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--