Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


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

From: "Michael Kay" <mike@------------>
To:
Date: 8/1/2007 8:04:00 AM
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.


transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent