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

RE: How to use following-sibling & starts-with functio

Subject: RE: How to use following-sibling & starts-with function in xsl
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sun, 10 May 2009 09:43:10 +0100
RE:  How to use following-sibling & starts-with functio
Selva,

You'd have a better chance of getting a response if your code was nicely
laid out so that people could read it. Also, using literal result elements
rather than xsl:element and xsl:attribute greatly helps readability.

In your input, the <div class='LegPrelims'> is a child of the <div
class='DocContainer'>, it is not a following sibling.

xsl:when test="(starts-with(p, 'Laid'))" tests whether the first child p
element starts with Laid. If you want to test whether ANY child p element
starts with Laid, use test="p[starts-with(., 'Laid')".

Regards,

Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay 
 

> -----Original Message-----
> From: Selva Ganesh [mailto:selvaganesh1985@xxxxxxxxx] 
> Sent: 10 May 2009 03:22
> To: xsl-list
> Subject:  How to use following-sibling & starts-with 
> function in xsl
> 
> Hi All,
> 
> I heartly appreciate.
> 
> I have 3 question:
> 1.	following-sibling function not working in the "si - 
> docid" attribute
> 2.	starts-with function not working in "laid" element
> 3.	choose method want correct (I need single dates 
> element) in my xsl
> repeated the <dates>
> 
> 
> This is my XSL:
> 
> <xsl:template match="div[@class='DocContainer']">
> <xsl:element name="si">
> <xsl:attribute name="docid"><xsl:value-of 
> select="following-sibling::div[@class 
> ='LegPrelims']/h1[@class = 'LegNo'][1]" /></xsl:attribute> 
> <xsl:attribute name="type"><xsl:text>reg</xsl:text></xsl:attribute>
> <xsl:apply-templates></xsl:apply-templates></xsl:element></xsl
> :template>
> <xsl:template match="title"/>
> <xsl:template match="style"/>
> <xsl:template match="div[@class[.='LegPrelims']]">
> <si-begin>
> <xsl:apply-templates></xsl:apply-templates>
> </si-begin>
> </xsl:template>
> <xsl:template match="h1">
> <xsl:element name="si-nos" >
> <xsl:element name="si-year" ><xsl:value-of 
> select="substring-before(., ' ')"/></xsl:element> 
> <si-no><xsl:value-of select="substring-after(., '. 
> ')"/></si-no></xsl:element> </xsl:template> <xsl:template 
> match="div[@class[.='LegDate']]"> <dates> <xsl:choose> 
> <xsl:when test="p='Made'"> <xsl:element 
> name="made"><xsl:attribute name="date"> <xsl:value-of 
> select="p[@class[.='LegDateDate']]"/></xsl:attribute>
> <xsl:value-of 
> select="p[@class[.='LegDateText']]"/></xsl:element></xsl:when>
> <!--<xsl:when test="(starts-with(p, 'Laid'))">--> <xsl:when 
> test="p='Laid before Parliament'"> <xsl:element 
> name="laid"><xsl:attribute name="date"> <xsl:value-of 
> select="p[@class[.='LegDateDate']]"/></xsl:attribute>
> <xsl:value-of 
> select="p[@class[.='LegDateText']]"/></xsl:element></xsl:when>
> <xsl:otherwise>
> <xsl:element name="in-force"><xsl:element 
> name="in-force-text"><xsl:attribute name="date"> 
> <xsl:value-of select="p[@class ='LegDateDate']"/></xsl:attribute>
> <xsl:value-of 
> select="p[@class[.='LegDateText']]"/></xsl:element></xsl:element>
> </xsl:otherwise>
> </xsl:choose>
> </dates>
> </xsl:template>
> 
> This my input:
> 
> <div id="ContentMain"><div class="DocContainer"><div 
> class="LegPrelims">
> <h1 class="LegNo">2009 No. 1023</h1>
> <p class="LegSubject">Excise</p>
> <h1 class="LegTitle">The Excise </h1>
> <div class="LegDate">
> <p class="LegDateText">Made</p><p class="LegDateDate">22nd 
> April 2009</p> </div> <div class="LegDate"> <p 
> class="LegDateText">Laid before Parliament</p><p 
> class="LegDateDate">22nd April 2009</p> </div> <div 
> class="LegDate"> <p class="LegDateText">Coming into 
> force</p><p class="LegDateDate">1st June 2009</p> </div> . 
> </div> </div> </div>
> 
> 
> This is expected output
> 
> <si docid="s2009no815" type="reg">
> <si-begin>
> <si-nos>
> <si-year>2009</si-year>
> <si-no>815</si-no>
> </si-nos>
> <subject>
> <subject-text>EXCISE</subject-text>
> </subject>
> <ti al="c">The Excise</ti>
> <dates>
> <made date="20090422">Made</made>
> <laid date="20090422">Laid before Parliament</laid> <in-force 
> date="20090601"><in-force-text>Coming into 
> force</in-force-text> </in-force> </dates> . </si-begin> </si>
> 
> Thanks,
> Selva

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.