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: Need help with xsl:for-each and xsl:value-of


Hello Chris,

using disable-output-escaping is the completely wrong. Please look here for
more information: http://www.dpawson.co.uk/xsl/sect2/N2215.html.

Why aren't you creating the table on element test?

And a second hint: why not using templates? In general I prefer templates
instead of for-each.
http://www.dpawson.co.uk/xsl/sect2/N7654.html

Every thing about XSLT: http://www.dpawson.co.uk/xsl/sect2/sect21.html.

<xsl:template match="test">
    <table>
        <thead>
            <tr>
                <td>att1</td>
                <td>att2</td>
            </tr>
        </thead>
        <tbody>
            <xsl:apply-templates select="item"/>
        </tbody>
    </table>
</xsl:template>

<xsl:template match="item">
    <tr>
        <td>
            <xsl:value-of select="@att1"/>
            <xsl:if test="not(@att1)">default</xsl:if>
        </td>
        <td>
            <xsl:value-of select="@att2"/>
            <xsl:if test="not(@att2)">default</xsl:if>
        </td>
    </tr>
</xsl:template>

Regards,

Joerg

> I have a simple table I am trying to create.  Here is the sample XML file.
>
> <?xml version="1.0" encoding="UTF-8"?>
> <test>
>   <item att1="foo1" att2="bar1"/>
>   <item att2="bar2"/>
>   <item att1="foo3"/>
>   <item/>
>   <item att1="foo5" att2="bar5"/>
> </test>
>
> I am currently using XMLSpy to create a XSL file to create my HTML table.
> It does create a basic table but not exaclty what I want.  Right now, if
> either att1 or att2 if not set, nothing gets placed in the table cell.
What
> I would like to do it do a test of that value to see if it is defined and
if
> not, place some other fixed value there.  I have tried adding various if
> conditions without any success.  Can this be done??  Should I use some
other
> command other that xsl:for-each?  Here is the stylesheet it is generating.
>
> Thanks
> Chris
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> xmlns:xs="http://www.w3.org/2001/XMLSchema";>
>   <xsl:template match="/">
>   <html>
>     <head />
>       <body>
>         <xsl:for-each select="test">
>           <xsl:for-each select="item">
>             <xsl:if test="position()=1">
>               <xsl:text disable-output-escaping="yes">&lt;table
> border="1"&gt;</xsl:text>
>             </xsl:if>
>             <xsl:if test="position()=1">
>               <thead>
>                 <tr>
>                   <td>att1</td>
>                   <td>att2</td>
>                 </tr>
>               </thead>
>             </xsl:if>
>             <xsl:if test="position()=1">
>               <xsl:text
> disable-output-escaping="yes">&lt;tbody&gt;</xsl:text>
>             </xsl:if>
>             <tr>
>               <td>
>                 <xsl:for-each select="@att1">
>                   <xsl:value-of select="." />
>                 </xsl:for-each>
>               </td>
>               <td>
>                 <xsl:for-each select="@att2">
>                   <xsl:value-of select="." />
>                 </xsl:for-each>
>               </td>
>             </tr>
>             <xsl:if test="position()=last()">
>               <xsl:text
> disable-output-escaping="yes">&lt;/tbody&gt;</xsl:text>
>             </xsl:if>
>             <xsl:if test="position()=last()">
>               <xsl:text
> disable-output-escaping="yes">&lt;/table&gt;</xsl:text>
>             </xsl:if>
>           </xsl:for-each>
>         </xsl:for-each>
>       </body>
>     </html>
>   </xsl:template>
> </xsl:stylesheet>


 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]