[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Output as per the filter is missing

Subject: RE: Output as per the filter is missing
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 1 Aug 2007 09:03:01 +0100
RE:  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:  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.

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.