Subject: RE: [xsl] XPath to select based on attr = same attr of an ancestor From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Mon, 14 Jul 2008 08:25:45 +0100 |
I think it's: match="foreign[@lang = (ancestor::*/@lang)[last()]]" which is valid in both 1.0 and 2.0. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Syd Bauman [mailto:Syd_Bauman@xxxxxxxxx] > Sent: 14 July 2008 01:47 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] XPath to select based on attr = same attr of > an ancestor > > The idea here is that I want a template that will match any > <foreign> element that has a lang= attribute with a value > that matches the lang= attribute value of said <foreign> > element's nearest ancestor that has a lang= attribute > specified. (So that I can delete said > <foreign>.) I.e. in > > <div lang="en"> > <p>Only <foreign lang="en">one</foreign> more!</p> > <p>Only <foreign lang="es">uno</foreign> more!</p> > </div> > > the first <foreign> should be matched, and the second should not. > Thus the above should become > > <div lang="en"> > <p>Only one more!</p> > <p>Only <foreign lang="es">uno</foreign> more!</p> > </div> > > I used the following XPath on the match= of an <xsl:template>: > foreign[@lang][ancestor::*[@lang]][1][ ./@lang = > ./ancestor::*[@lang][1]/@lang ] While my stylesheet seems to > work for simple cases, it fails for many cases, too. (Like > missing all but the 1st <foreign> in a <p>.) > > In case it helps, I have made the requisite files available > via the web (see below), but it may be the case that sharp > eyes here can pick up on some detail I've messed up just by > looking at the XPath itself. > And while I'd prefer to stick with XSLT 1 and thus XPath 1, > XSLT 2 and thus XPath 2 is an option. > > 1) the story: > http://bauman.zapto.org/~syd/temp/rrfq/story.txt > 2) the XSLT 1.0 stylesheet itself > > http://bauman.zapto.org/~syd/temp/rrfq/remove_redundant_foreig n_elements.xslt > 3) a test input XML file > > http://bauman.zapto.org/~syd/temp/rrfq/test_remove_redundant_f oreign_input.xml > 4) the desired output > > http://bauman.zapto.org/~syd/temp/rrfq/test_remove_redundant_f oreign_desired.xml > 5) the actual output > > http://bauman.zapto.org/~syd/temp/rrfq/test_remove_redundant_f oreign_output.xml
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XPath to select based on , G. Ken Holman | Thread | RE: [xsl] XPath to select based on , Syd Bauman |
Re: [xsl] Validation XSLT using XSL, Ganesh Babu N | Date | Re: [xsl] Simple XML Diff, Michael Ludwig |
Month |