RE: [xsl] Output as per the filter is missing

Subject: RE: [xsl] Output as per the filter is missing
From: "Sharma, Jaikumar" <jaikumar.sharma@xxxxxxxxx>
Date: Wed, 1 Aug 2007 14:02:48 +0530
Thanks Michael,
Once I use the <xsl:apply-templates> to a particular node in the
document (like <section> you have mentioned below), is it possible to
revert back to the earlier situation before applying
<xsl:apply-templates> ?

What I understand by using <xsl:apply-template> means filtering the
nodes in XML document four output?

Regards.

-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
Sent: Wednesday, August 01, 2007 1:33 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Output as per the filter is missing

In XSLT 1.0, if you do <xsl:value-of select="xxx"> and xxx selects more
than one node, only the first node in the set is output. To iterate over
several nodes, use xsl:for-each or (better) xsl:apply-templates.

You are doing <xsl:for-each select="section">, but that's rather
pointless because there is only one section.

At this stage of the game, it's much better to get into the habit of
using apply-templates. Write a template rule for each element saying
what you want done with it, for example

<xsl:template match="para">
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="section">
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="message[@priority='warn']">
  <p><xsl:value-of select="."/></p>
</xsl:template>

<xsl:template match="message[@priority='info']">
  <xsl:comment><xsl:value-of select="."/></xsl:comment> </xsl:template>

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Sharma, Jaikumar [mailto:jaikumar.sharma@xxxxxxxxx]
> Sent: 01 August 2007 08:44
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Output as per the filter is missing
>
> Hi All,
>
> I have the following XML document and XSL stylesheet.
>
> Problem : When I try to render the XML document in HTML using browser.
> It gives me the following output, but does not list all the warning
> messages as per the filter in XSL stylesheet, it only list the first
> warning message.
>
> Output :
> ___________________________
> Test Page
>
> warn message 1
> ____________________________
>
>
> XML document :
> __________________________________________________________
> <?xml version="1.0"?>
> <?xml-stylesheet type="text/xsl" href="test.xsl"?> <docroot>
>    <mydocument>
>      <para>
>         <section>
>              <message priority="warn">warn message 1</message>
>              <message priority="warn">warn message 2</message>
>              <message priority="info">info message 1</message>
>              <message priority="info">info message 2</message>
>              <message priority="info">info message 3</message>
>
>         </section>
>      </para>
>    </mydocument>
> </docroot>
> __________________________________________________________
>
> XSL stylesheet :
>
> _________________________________________________________
> <?xml version="1.0"?>
>   <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>   <xsl:output method="html" indent="yes" />
>
>   <xsl:template match="/">
>     <html>
>       <head><p><b>Test Page</b></p></head>
>        <body>
>          <xsl:apply-templates select="docroot/mydocument/para"/>
>        </body>
>     </html>
>   </xsl:template>
>
>    <xsl:template match="*">
>     <xsl:for-each select="section">
>           <xsl:value-of select="message[@priority='warn']"/>
>     </xsl:for-each>
>    </xsl:template>
>
>  </xsl:stylesheet>
>
> _______________________________________________________
>
>
> I am Newbie to XSL, does somebody know which step I am missing here ?
>
> Thanks.
>
>
> DISCLAIMER:
> Unless indicated otherwise, the information contained in this message
> is privileged and confidential, and is intended only for the use of
> the addressee(s) named above and others who have been specifically
> authorized to receive it. If you are not the intended recipient, you
> are hereby notified that any dissemination, distribution or copying of

> this message and/or attachments is strictly prohibited. The company
> accepts no liability for any damage caused by any virus transmitted by

> this email. Furthermore, the company does not warrant a proper and
> complete transmission of this information, nor does it accept
> liability for any delays. If you have received this message in error,
> please contact the sender and delete the message. Thank you.



DISCLAIMER:
Unless indicated otherwise, the information contained in this message is
privileged and confidential, and is intended only for the use of the
addressee(s) named above and others who have been specifically authorized to
receive it. If you are not the intended recipient, you are hereby notified
that any dissemination, distribution or copying of this message and/or
attachments is strictly prohibited. The company accepts no liability for any
damage caused by any virus transmitted by this email. Furthermore, the company
does not warrant a proper and complete transmission of this information, nor
does it accept liability for any delays. If you have received this message in
error, please contact the sender and delete the message. Thank you.

Current Thread