xsl-list
[Top] [All Lists]

apply-templates - format problem

2003-01-02 08:22:56
Hy,

first thanks to David, Joerg and Ben.

I have 3 news paragraphs which are outputted 2 times, the first time in the 
table,
which is my intention and the second time right after the table, but I can't 
find he problem.
Sorry for the long code, but I don't know where my mistake is located.

-------CODE----------

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:output method="html"/>

<xsl:param name="lang" select="'ger'"/> <!-- globaler Parameter, Startwert 
'ger' -->
           
<xsl:template match="/article">

        <xsl:apply-templates select="sect1"/>  

</xsl:template>

        
        <xsl:template match="sect1">    
                <xsl:apply-templates select="sect1[(_at_)lang = $lang and 
@id='content' | not(@lang)]"/> <!-- abhängig vom Parameter wird das 
entsprechende template bearbeitet -->
       </xsl:template>
       
        
        <!-- ************SECT1 PROCESSING CONTENT************** -->
        
        <xsl:template match="sect1[(_at_)lang= $lang and @id='content']">       
<!-- um nicht 2 mal dasselbe template für die jeweilige Sprache zu schreiben 
wird nur eins benutzt, da die Struktur dieselbe istt. --> 
                
          <table border="0" cellspacing="0" cellpadding="0" width="610" 
height="48">
                 
                 <tr>
                        <td rowspan="2" height="48" 
width="162"><xsl:apply-templates select="mediaobject[(_at_)id='titel']"/></td>
                        <td height="28" width="100%" id="mainColor"></td>       
                </tr>
                 
                 <tr>
                        <td height="20" width="100%" 
id="hiColor"><xsl:apply-templates select="mediaobject[(_at_)id='box']"/></td>
                        <td></td>
                </tr>
          </table>
                
          <table width="610" height="48" cellpadding="0" cellspacing="0" 
border="0" id="sectBackground">
                
                <tr>
                        <td colspan="3" height="20" width="610" id="white" 
align="right"><a href="#">link nr.1</a><!-- Abstand noch einfügen --><a 
href="#">link nr.2</a></td>
                </tr>
                <tr>
                        <td colspan="3" height="10"><img 
src="fake.kill/img/pixel.gif" height="10" width="610" /></td>  
                </tr>
                <tr>
                        <td colspan="3" height="60"><xsl:apply-templates 
select="mediaobject[(_at_)id='contentpicture']"/></td>
                </tr> 
                
                 <tr>
                        <td colspan="3">
                                <b><xsl:value-of select="title" /></b>
                        </td>
                        
                 </tr>
                 
                 <tr>
                        <td colspan="3">
                                 <xsl:apply-templates select="para"/>    <!-- 
ohne Zeichen= Unterelement des aktuell gewaehlten Elementes -->
                        </td>
                        
                 </tr>
                 <xsl:apply-templates select="simplelist"/>     
                </table>
                
                <table width="610" height="48" cellpadding="0" cellspacing="0" 
border="0" id="importantBackground">
                        <tr>
                                <td colspan="3" height="20" width="610" 
id="white"><!-- img src="fake.kill/img/pixel.gif" height="20" 
width="610"--></td>
                        </tr>
                        <tr>
                                <td colspan="2" id="importantHeader" ><span 
id="h"><xsl:apply-templates select="../sect1[(_at_)lang=$lang and 
@id='news']/title"/></span></td>
                                <td id="importantHeader" align="right" 
valign="bottom"><xsl:apply-templates select="mediaobject[(_at_)id='box']"/></td>
                        </tr>
                        <tr>
                                <td colspan="3" ><xsl:apply-templates 
select="../sect1[(_at_)lang=$lang and @id='news']"/></td>
                        </tr>
                        
                </table>                        
        </xsl:template>
        
        <!-- ************SECT1 PROCESSING CONTENT END*********** -->


        <!-- ************PARA AND LINK PROCESSING ************** -->
        <xsl:template match="para">
                <p><xsl:apply-templates/></p>
        </xsl:template>
        
        <xsl:template match="ulink">
                                   <xsl:variable name="ulink">
                                    <a>
                                      <xsl:attribute name="href"><xsl:value-of 
select="@url"/></xsl:attribute>
                                      <xsl:choose>
                                        <xsl:when test="count(child::node())=0">
                                          <xsl:value-of select="@url"/>
                                        </xsl:when>
                                        <xsl:otherwise>
                                          <xsl:apply-templates/>
                                        </xsl:otherwise>
                                      </xsl:choose>
                                    </a>
                                  </xsl:variable>
                              <xsl:copy-of select="$ulink"/>
        </xsl:template>
         
        <!-- ************PARA AND LINK PROCESSING END*********** -->
        
        
        <!-- ************MEDIAOBJECT PROCESSING ************** -->
         
        <xsl:template match="mediaobject[(_at_)id='titel']">
                <img src="{imageobject/imagedata/@fileref}" 
alt="{textobject/phrase}"/>
        </xsl:template>
          
        <xsl:template match="mediaobject[(_at_)id='box']">
                <img src="{imageobject/imagedata/@fileref}" 
alt="{textobject/phrase}" align="{imageobject/imagedata/@align}"/>
                
        </xsl:template>
        
        <xsl:template match="mediaobject[(_at_)id='contentpicture']">
                <img src="{imageobject/imagedata/@fileref}" 
alt="{textobject/phrase}" width="{imageobject/imagedata/@width}" 
height="{imageobject/imagedata/@height}"/>
                
        </xsl:template>
        
        <!-- ************MEDIAOBJECT PROCESSING END*********** -->
        
        
        <!-- ************LIST PROCESSING ************** -->

        <xsl:template match="simplelist">
                                <xsl:for-each select="member">
                  <tr>
                        <td>
                                <xsl:value-of select="." /><br/>
                        </td>
                        <td>
                        </td>
                  </tr>
                                </xsl:for-each>
        </xsl:template>
        
        <!-- ************LIST PROCESSING END*********** -->
        
        
        <!-- ************SECT1 NEWS PROCESSING ************** -->
        
        <xsl:template match="sect1[(_at_)lang=$lang and @id='news']/title">
                <xsl:apply-templates/>
        </xsl:template>
        
        <xsl:template match="sect1[(_at_)lang=$lang and @id='news']">
                <xsl:for-each select="para">
                    <p><xsl:value-of select="."/></p>
                </xsl:for-each>
        </xsl:template>
        
        
        
        <!-- ************SECT1 NEWS PROCESSING END*********** -->
                
        
</xsl:stylesheet>

----------END OF CODE-------------

The following paragraphs are outputted twice, it's in the last "SECT1 NEWS 
PROCESSING" section it's 
<xsl:template match="sect1[(_at_)lang=$lang and @id='news']">
...

And I know that @lang=$lang isn't allowed, but I don't know another way of 
processing my XML document depending on the language,
without writing the whole template a second time for the one language, which is 
structured the same way as the other language section.

Thanks.

Homer30






 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



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