This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: data translation => descendants appear side by side inHTML-table


If you don't copy the description-elements to the variables (creating an 
RTF), you won't need the extension-function and you will get a general 
solution:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

   <xsl:output method="html"/>

   <xsl:variable name="desc1" select="/root/base[1]//description"/>
   <xsl:variable name="desc2" select="/root/base[2]//description"/>

   <xsl:template match="/">
     <html>
       <head><title>Descriptions</title></head>
       <body>
         <table border="1">
           <xsl:variable name="count1" select="count($desc1)"/>
           <xsl:variable name="count2" select="count($desc2)"/>
           <xsl:variable name="count">
             <xsl:choose>
                 <xsl:when test="$count1 &gt;= $count2"><xsl:value-of 
select="$count1"/></xsl:when>
                 <xsl:otherwise><xsl:value-of 
select="$count2"/></xsl:otherwise>
             </xsl:choose>
           </xsl:variable>

           <xsl:call-template name="description-row">
             <xsl:with-param name="count" select="$count"/>
           </xsl:call-template>

         </table>
       </body>
     </html>
   </xsl:template>

   <xsl:template name="description-row">
     <xsl:param name="index" select="1"/>
     <xsl:param name="count" />
     <tr>
       <td><xsl:value-of select="$desc1[$index]"/></td>
       <td><xsl:value-of select="$desc2[$index]"/></td>
     </tr>

     <xsl:if test="$index &lt; $count">
       <xsl:call-template name="description-row">
         <xsl:with-param name="index" select="$index + 1"/>
         <xsl:with-param name="count" select="$count"/>
       </xsl:call-template>
     </xsl:if>
   </xsl:template>

</xsl:stylesheet>

Regards,

Joerg

Stuart Celarier schrieb:
> ----- Answer -----
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
>     xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>     xmlns:msxsl="urn:schemas-microsoft-com:xslt">
> 
>   <!--
>     Variables containing description elements in each base element.
>     Use top-level variables for efficiency, so they don't have to be
> passed into templates
>   -->
>   <xsl:variable name="desc1">
>     <xsl:apply-templates select="/root/base[1]"/>
>   </xsl:variable>
>   <xsl:variable name="desc2">
>     <xsl:apply-templates select="/root/base[2]"/>
>   </xsl:variable>
 >
>   <!-- make copy of all description elements within base -->
>   <xsl:template match="base">
>     <xsl:copy-of select=".//description"/>
>   </xsl:template>


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]