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

Re: template matching

Subject: Re: template matching
From: "james walker" <jameswalkerandy@xxxxxxxxxxx>
Date: Fri, 06 Feb 2004 15:23:42 +0000
template matching
Please could u explain to me how it works in more detail? E.g. if a there is a set of note elements and other misc elements inside another element called scope:
<scope><misc></misc><misc></misc><misc></misc><note></note><note></note></scope>


and my xsl looks like this:

<xsl:template match="scope">
<xsl:apply-templates select="*" />
</xsl:template>

<xsl:template match="misc">
<p><xsl:value-of select="." /><p>
</xsl:template>

<xsl:template match="note"/>

<xsl:template match="note[not(preceding-sibling::*[1][self::note])]">
<ul>
<xsl:apply-templates mode="note" select="."/>
</ul>
</xsl:template>

<xsl:template match="note" mode="note">
<lli><xsl:apply-templates/></li>
<xsl:apply-templates select="following-sibling::*[1][self::note]" mode="note"/>
</xsl:template>


to produce the ouput :
<p>misc info</p>
<p>misc info</p>
<p>misc info</p>
<ul>
<li>note</li>
<li>note</li>
</ul>

Whats steps would be involved in order to create the note list? (not really sure why 3 template matches are needed for it?)




From: David Carlisle <davidc@xxxxxxxxx>
Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re:  template matching
Date: Fri, 6 Feb 2004 13:58:55 GMT

Hello again,
do i have to put a "<xsl:apply-templates select="note">" statement in sub1
template match?


no if you do that you wont process the non-note stuff
foo foo <b>bar</b>
so it will just silently disappear.

  I tried doing this but it only showed the first of the group
  of notes in the output?

well apart from the usual quota of typos meaning my code wasn't well
formed XML, I missed off a mode="note" (You may suspect that I didn't
test the code)

here it is again




<sub1> foo foo <b>bar</b> <note>a</note> <note>aa</note> foo foo <b>bar</b> <note>b</note> <note>bb</note> </sub1>









<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">


<xsl:template match="*"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:template>

<!-- throw most notes away (they will be handled elsewhere -->
<xsl:template match="note"/>

<!-- special case the first note in each contiguous group of notes, to
form a list and then process the nodes in note mode -->
<xsl:template match="note[not(preceding-sibling::*[1][self::note])]">
<ul>
<xsl:apply-templates mode="note" select="."/>
</ul>
</xsl:template>


<!-- make an item and process the next element node if it is a note-->
<xsl:template match="note" mode="note">
<li><xsl:apply-templates/></li>
<xsl:apply-templates select="following-sibling::*[1][self::note]" mode="note"/>
</xsl:template>



</xsl:stylesheet>





$ saxon sub1.xml sub1.xsl <?xml version="1.0" encoding="utf-8"?><sub1> foo foo <b>bar</b> <ul><li>a</li><li>aa</li></ul>

foo foo <b>bar</b>
<ul><li>b</li><li>bb</li></ul>

</sub1>



see everything copied except the groups of notes are munged up into ul
lists.


-- http://www.dcarlisle.demon.co.uk/matthew

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list


_________________________________________________________________
It's fast, it's easy and it's free. Get MSN Messenger today! http://www.msn.co.uk/messenger



XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list



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.