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>
--~--