xsl-list
[Top] [All Lists]

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

2007-08-01 01:03:35
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[(_at_)priority='warn']">
  <p><xsl:value-of select="."/></p>
</xsl:template> 

<xsl:template match="message[(_at_)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(_dot_)sharma(_at_)barco(_dot_)com] 
Sent: 01 August 2007 08:44
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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[(_at_)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.

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>