xsl-list
[Top] [All Lists]

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

2005-03-05 17:07:31
Another error is the following:

    <xsl:element name="svg">
      <xsl:attribute name="xmlns">
        <xsl:value-of  select="'http://www.w3.org/2000/svg'"/>
      </xsl:attribute>

This is not the way to produce a namespace node.

What XSLT processor are you using? Seems not quite compliant... And I
have a guess which it is...


Cheers,
Dimitre Novatchev




On Sat, 05 Mar 2005 12:33:38 +0100, Katharina Kreis
<katharinakreis(_at_)web(_dot_)de> wrote:
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_)ID=$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::Nutzungszonen_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=$gebaeudeId]">

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



<Prev in Thread] Current Thread [Next in Thread>