Subject: RE: [xsl] How to use following-sibling & starts-with function in xsl From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Sun, 10 May 2009 09:43:10 +0100 |
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: [xsl] 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] How to use following-sibling , Selva Ganesh | Thread | [xsl] How to use xsl:substring-befo, Selva Ganesh |
RE: [xsl] how to "print" xsl:elemen, Michael Kay | Date | Re: [xsl] XSL: multiple element com, Martin Honnen |
Month |