![]() |
![]() | ![]() | ![]() | Altova Mailing List Archives>Archive Index >xsl-list Archive Home >Recent entries >Thread Prev - RE: [xsl] data translation => descendants appear side by side in HTML-table [Thread Next] Re: [xsl] data translation => descendants appear side by side inHTML-tableTo: Date: 5/4/2002 4:25:00 AM 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 >= $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 < $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 | ![]() | ![]() | ![]() |
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | |||||
|
