RE: [xsl] processor never reaches one line in my template. Why?

Subject: RE: [xsl] processor never reaches one line in my template. Why?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sat, 5 Mar 2005 23:07:56 -0000
Probably

<xsl:value-of select="yes"/>

should be

<xsl:value-of select="'yes'"/>

(or more simply <xsl:text>yes</xsl:text>)

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: katharinakreis@xxxxxx [mailto:katharinakreis@xxxxxx]
> Sent: 05 March 2005 11:34
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] processor never reaches one line in my template. Why?
>
> Hi everybody!
>
> To understand my problem, I have to give you my xml and my xsl files.
> The xml file and the comments in the xsl files are in german, but I
> think that doesn't matter, important is the xsl syntax! The xml is
> really big, so I put it at the end of this mail.
>
> In the Gebauede.xsl file I have a template named "Bauteil" (the last
> one). I create a variable named "partOfStockwerk" and after
> this I have
> a <xsl:if> tag. This tag is never reached. Why? I debugged the whole
> stylesheet and the debugger always exits the template after the
> declaration of this variable. I have no idea why. Hope
> anybody can help
> me.....
>
> Cheers
> Katharina
>
> FILES:
>
> Bauvorhaben.xsl
> ==============================================================
> =================
>
> ==============================================================
> =================
>
>
> <?xml version='1.0'?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>                           xmlns:math="http://exslt.org/math";
>                           extension-element-prefixes="math">
> <xsl:output method="xml" indent="yes" version="1.0"/>
>
> <!-- Globale Variablen: -->
> <xsl:variable name="bauvorhabenId" select="1"/>
> <xsl:variable name="gebaeudeId" select="1074492688"/>
> <xsl:variable name="stockwerkId" select="1076002008"/>
> <xsl:variable name="faktor" select="3"/>
> <xsl:variable name="deltaX" select="0"/>
> <xsl:variable name="deltaY" select="66.187"/>
>
> <xsl:include href="Gebaeude.xsl"/>
>
> <xsl:template name="Root" match="/">
>   <!--
>   Dieses Template ist das Wurzeltemplate. Es wird zuerst
> aufgerufen und
> ruft |ber
>   das Bauvorhaben Template alle anderen Templates nacheinander auf!
>   -->
>   <xsl:apply-templates select="Bauvorhaben"/>
>
> </xsl:template>
>
> <xsl:template name="Bauvorhaben"
> match="Bauvorhaben[@ID=$bauvorhabenId]">
>   <!--
>   Dieses Template leitet den kompletten Zeichenvorgang ein.
>   Der Zeichenbereich wird anhand der Grundst|ckskoordinaten
> festgelegt.
>   Dabei hat das Koordinatensystem seinen Ursprung in der linken oberen
>   Ecke.
>   -->
>   <xsl:variable name="y"
> select="Grundstueck_Liste/Grundstueck/einfuegepunkt/k2"/>
>   <xsl:variable name="x"
> select="Grundstueck_Liste/Grundstueck/einfuegepunkt/k1"/>
>
>   <!-- Maximalen x-Wert bestimmen -->
>   <xsl:variable name="xWerte">
>       <xsl:for-each
> select="Grundstueck_Liste/Grundstueck/basisflaeche/eckpunkt">
>           <xsl:sort select="k1" data-type="number"
> order="descending"/>
>           <xsl:value-of select="k1"/><xsl:text>+</xsl:text>
>       </xsl:for-each>
>   </xsl:variable>
>   <xsl:variable name="maxx"
> select="substring-before($xWerte,'+') + $x"/>
>
>   <!-- Minimalen x-Wert bestimmen -->
>   <xsl:variable name="xWerte">
>       <xsl:for-each
> select="Grundstueck_Liste/Grundstueck/basisflaeche/eckpunkt">
>           <xsl:sort select="k1" data-type="number" order="ascending"/>
>           <xsl:value-of select="k1"/><xsl:text>+</xsl:text>
>       </xsl:for-each>
>   </xsl:variable>
>   <xsl:variable name="minx"
> select="substring-before($xWerte,'+') + $x"/>
>
>   <!-- Maximalen y-Wert bestimmen -->
>   <xsl:variable name="yWerte">
>       <xsl:for-each
> select="Grundstueck_Liste/Grundstueck/basisflaeche/eckpunkt">
>           <xsl:sort select="k2" data-type="number"
> order="descending"/>
>           <xsl:value-of select="k2"/><xsl:text>+</xsl:text>
>       </xsl:for-each>
>   </xsl:variable>
>   <xsl:variable name="maxy"
> select="substring-before($yWerte,'+') + $y"/>
>
>   <!-- Minimalen x-Wert bestimmen -->
>   <xsl:variable name="yWerte">
>       <xsl:for-each
> select="Grundstueck_Liste/Grundstueck/basisflaeche/eckpunkt">
>           <xsl:sort select="k2" data-type="number" order="ascending"/>
>           <xsl:value-of select="k2"/><xsl:text>+</xsl:text>
>       </xsl:for-each>
>   </xsl:variable>
>   <xsl:variable name="miny"
> select="substring-before($yWerte,'+') + $y"/>
>
>   <!-- Der SVG Zeichenbereich wird erstellt: -->
>   <xsl:element name="svg">
>       <xsl:attribute name="xmlns"><xsl:value-of
> select="'http://www.w3.org/2000/svg'"/></xsl:attribute>
>       <xsl:attribute name="width"><xsl:value-of
> select="($maxx+$deltaX)*$faktor*1.1"/></xsl:attribute>
>       <xsl:attribute name="height"><xsl:value-of
> select="($maxy+$deltaY)*$faktor*1.1"/></xsl:attribute>
>       <!-- Aufruf aller anderen Templates -->
>       <xsl:apply-templates select="Grundstueck_Liste/Grundstueck"/>
>       <xsl:apply-templates
> select="Gebaeude[@ID=$gebaeudeId]/Stockwerk_Liste/Stockwerk[@I
> D=$stockwerkId]/Nutzungszonen_Liste/Nutzungszone/Raum_Liste/Raum"/>
>
>       <xsl:apply-templates
> select="Gebaeude[@ID=$gebaeudeId]/Bauteil_Liste/Bauteil"/>
>   </xsl:element>
>  </xsl:template>
>
> <xsl:template name="Grundstueck"
> match="Grundstueck[Gebaeude_ID_Liste/Gebaeude_ID=$gebaeudeId]">
>
>   <!-- Festlegen der Eckpunkte des Grundst|cks -->
>   <xsl:variable name="x" select="einfuegepunkt/k1"/>
>   <xsl:variable name="y" select="einfuegepunkt/k2"/>
>   <xsl:variable name="eckpunkte">
>       <xsl:for-each select="basisflaeche/eckpunkt">
>           <xsl:variable name="xl" select="k1"/>
>           <xsl:variable name="yl" select="k2"/>
>           <xsl:variable name="xges" select="$xl + $x"/>
>           <xsl:variable name="yges" select="$yl + $y"/>
>           <xsl:value-of
> select="($xges+$deltaX)*$faktor"/><xsl:text>,</xsl:text><xsl:value-of
> select="($yges+$deltaY)*$faktor"/><xsl:text> </xsl:text>
>       </xsl:for-each>
>   </xsl:variable>
>
>   <!-- Darstellen des Grundst|cks als Polygon -->
>   <xsl:element name="polygon">
>       <xsl:attribute name="points"><xsl:value-of
> select="$eckpunkte"/></xsl:attribute>
>       <xsl:attribute name="style"><xsl:value-of
> select="'fill:none;stroke:black'"/></xsl:attribute>
>   </xsl:element>
>
> </xsl:template>
> </xsl:stylesheet>
>
>
> Gebaeude.xsl
> ==============================================================
> =======================
>
> ==============================================================
> =======================
>
> <?xml version='1.0'?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>               xmlns:math="http://exslt.org/math";
>               extension-element-prefixes="math">
>
> <xsl:template name="Raum"
> match="Raum[parent::Raum_Liste/parent::Nutzungszone/parent::Nu
> tzungszonen_Liste/parent::Stockwerk/@ID=$stockwerkId]">
>
>
>   <!-- Dieses Template zeichnet die Rdume des Stockwerks -->
>   <xsl:if test="@ID='1076000816'">
>       <!-- Eckpunkte des Raums werden festgelegt -->
>       <xsl:variable name="x" select="einfuegepunkt/k1"/>
>       <xsl:variable name="y" select="einfuegepunkt/k2"/>
>       <xsl:variable name="eckpunkte">
>           <xsl:for-each select="basisflaeche/eckpunkt">
>               <xsl:variable name="xl" select="k1"/>
>               <xsl:variable name="yl" select="k2"/>
>               <xsl:variable name="xges" select="$xl + $x"/>
>               <xsl:variable name="yges" select="$yl + $y"/>
>               <xsl:value-of
> select="($xges+$deltaX)*$faktor"/><xsl:text>,</xsl:text><xsl:value-of
> select="($yges+$deltaY)*$faktor"/><xsl:text> </xsl:text>
>           </xsl:for-each>
>       </xsl:variable>
>
>       <!-- Der Raum wird als Polygon dargestellt -->
>       <xsl:element name="polygon">
>           <xsl:attribute name="points"><xsl:value-of
> select="$eckpunkte"/></xsl:attribute>
>           <xsl:attribute name="style"><xsl:value-of
> select="'fill:none;stroke:red'"/></xsl:attribute>
>       </xsl:element>
>
>   </xsl:if>
>
> </xsl:template>
>
> <xsl:template name="Bauteil"
> match="Bauteil[parent::Bauteil_Liste/parent::Gebaeude/@ID=$geb
aeudeId]">
>
>   <!-- Dieses Template zeichnet die Wdnde und Treppen des Raumes -->
>   <xsl:variable name="bauteilId" select="@ID"/>
>   <xsl:variable name="partOfStockwerk">
>       <xsl:for-each
> select="/Bauvorhaben/Gebaeude[@ID=$gebaeudeId]/Stockwerk_Liste
/Stockwerk[@ID=$stockwerkId]//bauteil_id">
>
>           <xsl:if test="$bauteilId=.">
>               <xsl:value-of select="yes"/>
>           </xsl:if>
>       </xsl:for-each>
>   </xsl:variable>
>
> <!--*****************************************************************
>       PROCESSOR NEVER REACHES THIS LINE. THE FOLLOWING IF IS NEVER
> EXECUTED! WHY?
>
> ******************************************************************-->
>
>   <xsl:if test="$partOfStockwerk='yes'">
>       <xsl:value-of select="'In Ordnung'"/>
>   </xsl:if>
>
> </xsl:template>
>
> </xsl:stylesheet>
>
>
> Bauvorhaben.xml
> ==============================================================
> ========================
>
> ==============================================================
> =========================
>
> <?xml version="1.0"?>
> <Bauvorhaben ID="1">
>   <bezeichnung>Bauvorhaben</bezeichnung>
>   <bundesland>Hessen</bundesland>
>   <strasse>Petersenstrasse 15</strasse>
>   <plz>64289</plz>
>   <stadt>Darmstadt</stadt>
>   <Grundstueck_Liste>
>       <Grundstueck ID="5">
>           <bezeichnung>Grundst|ck 5</bezeichnung>
>           <einfuegepunkt>
>               <k1>7.883754</k1>
>               <k2>-60.170000</k2>
>               <k3>0.000000</k3>
>           </einfuegepunkt>
>           <direction>
>               <k1>1</k1>
>               <k2>0</k2>
>               <k3>0</k3>
>           </direction>
>           <basisflaeche>
>               <eckpunkt>
>                   <k1>0.000000</k1>
>                   <k2>0.000000</k2>
>                   <k3>0.000000</k3>
>               </eckpunkt>
>               <eckpunkt>
>                   <k1>87.870000</k1>
>                   <k2>0.000000</k2>
>                   <k3>0.000000</k3>
>               </eckpunkt>
>               <eckpunkt>
>                   <k1>87.870000</k1>
>                   <k2>64.050000</k2>
>                   <k3>0.000000</k3>
>               </eckpunkt>
>               <eckpunkt>
>                   <k1>0.000000</k1>
>                   <k2>64.050000</k2>
>                   <k3>0.000000</k3>
>               </eckpunkt>
>           </basisflaeche>
>           <Gebaeude_ID_Liste>
>               <Gebaeude_ID>1074492688</Gebaeude_ID>
>           </Gebaeude_ID_Liste>
>       </Grundstueck>
>   </Grundstueck_Liste>
>   <Gebaeude ID="1074492688" bauvorhaben_id="1" grundstueck_id="5">
>       <bezeichnung>Geschaeftshaus</bezeichnung>
>       <typ>Wohngebaeude</typ>
>       <Stockwerk_Liste>
>           <Stockwerk ID="1076002008">
>               <bezeichnung>4.OG</bezeichnung>
>               <flaeche>904.936500</flaeche>
>               <Nutzungszonen_Liste>
>                   <Nutzungszone ID="1076254944">
>                       <bezeichnung>Zone_1</bezeichnung>
>                       <nutzung>arbeiten</nutzung>
>                       <flaeche>265.822500</flaeche>
>                       <Raum_Liste>
>                           <Raum ID="1076254872">
>                               <Nutzungseinheit>
>                                   <anzahlPersonen>0</anzahlPersonen>
>                                   <nutzung>Verkauf</nutzung>
>                               </Nutzungseinheit>
>                               <bezeichnung>Supermarkt</bezeichnung>
>                               <flaeche>143.477500</flaeche>
>                               <hoehe>2.500000</hoehe>
>                               <rotation>0.000000</rotation>
>                               <direction>
>                                   <k1>1.000000</k1>
>                                   <k2>0.000000</k2>
>                                   <k3>0.000000</k3>
>                               </direction>
>                               <normal>
>                                   <k1>0.000000</k1>
>                                   <k2>0.000000</k2>
>                                   <k3>1.000000</k3>
>                               </normal>
>                               <einfuegepunkt>
>                                   <k1>66.903754</k1>
>                                   <k2>-25.270000</k2>
>                                   <k3>0.250000</k3>
>                               </einfuegepunkt>
>                               <basisflaeche>
>                                   <eckpunkt>
>                                       <k1>0.000000</k1>
>                                       <k2>0.000000</k2>
>                                   </eckpunkt>
>                                   <eckpunkt>
>                                       <k1>6.400000</k1>
>                                       <k2>0.000000</k2>
>                                   </eckpunkt>
>                                   <eckpunkt>
>                                       <k1>6.400000</k1>
>                                       <k2>19.600000</k2>
>                                   </eckpunkt>
>                                   <eckpunkt>
>                                       <k1>3.250000</k1>
>                                       <k2>19.600000</k2>
>                                   </eckpunkt>
>                                   <eckpunkt>
>                                       <k1>3.250000</k1>
>                                       <k2>25.150000</k2>
>                                   </eckpunkt>
>                                   <eckpunkt>
>                                       <k1>0.000000</k1>
>                                       <k2>25.150000</k2>
>                                   </eckpunkt>
>                               </basisflaeche>
>                               <Bauteil_id_Liste>
>                                   <bauteil_id>1076000432</bauteil_id>
>                                   <bauteil_id>1076001168</bauteil_id>
>                                   <bauteil_id>1076000440</bauteil_id>
>                                   <bauteil_id>1076001288</bauteil_id>
>                                   <bauteil_id>1076001296</bauteil_id>
>                                   <bauteil_id>1076001304</bauteil_id>
>                               </Bauteil_id_Liste>
>                           </Raum>
>                           <Raum ID="1076254856">
>                               ...
>                           </Raum>
>                       </Raum_Liste>
>                   </Nutzungszone>
>                   <Nutzungszone ID="1076254960">
>                      ...
>                   </Nutzungszone>
>               </Nutzungszonen_Liste>
>           </Stockwerk>
>       </Stockwerk_Liste>
>       <Bauteil_Liste>
>           <Bauteil ID="1076000080">
>                ...
>           </Bauteil>
>           <Bauteil ID="1076000088">
>               ...
>           </Bauteil>
>                ...
>       </Bauteil_Liste>
>       <Dach_Liste/>
>   </Gebaeude>
> </Bauvorhaben>

Current Thread