xsl-list
[Top] [All Lists]

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

2005-03-05 16:07:56
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(_at_)web(_dot_)de 
[mailto:katharinakreis(_at_)web(_dot_)de] 
Sent: 05 March 2005 11:34
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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[(_at_)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[(_at_)ID=$gebaeudeId]/Stockwerk_Liste/Stockwerk[(_at_)I
D=$stockwerkId]/Nutzungszonen_Liste/Nutzungszone/Raum_Liste/Raum"/> 

      <xsl:apply-templates 
select="Gebaeude[(_at_)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 Räume 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 Wände und Treppen des Raumes -->
  <xsl:variable name="bauteilId" select="@ID"/>
  <xsl:variable name="partOfStockwerk">
      <xsl:for-each 
select="/Bauvorhaben/Gebaeude[(_at_)ID=$gebaeudeId]/Stockwerk_Liste
/Stockwerk[(_at_)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>






--~------------------------------------------------------------------
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>
--~--