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

RE: normalize-space processing all nodes hack?

Subject: RE: normalize-space processing all nodes hack?
From: Kolací Tomáš <kolaci@xxxxxxx>
Date: Fri, 2 Nov 2007 11:35:59 +0100
RE:  normalize-space processing all nodes hack?
 Hi Abel!

 Thanks for answer (for both :))!

> XSLT 1.1 does not exist and never has existed (other than an early
> draft at w3c).

 OK, I'm not very strong in the knowledge of standards and things around, but
what I have meant is value of attribute version of xsl:stylesheet set to "1.1"
(<xsl:stylesheet version="1.1" ..>), up to now I thought it means XSLT 1.1,
but I can be easily wrong here.

> If you use Saxon 6.5, perhaps you can just as easily use Saxon 8.9,
> which implements XSLT 2.0.

 I don't think I can do it easily. I had some problems to simply switch to use
Saxon 8.9 instead of 6.5.x on my existing scripts (but I had not much time for
experiments, so I have gave up quickly). Anyway I know the (two-step)
solution, I was just curious..

 Thanks, Tomas

> -----Original Message-----
> From: Abel Braaksma [mailto:abel.online@xxxxxxxxx]
> Sent: Friday, November 02, 2007 10:53 AM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re:  normalize-space processing all nodes hack?
>
> Kolacm Toma9 wrote:
> > Oups, sorry guys, I have simplified my example too much :( In fact I
> need to apply some filtering rules on text() nodes (normalize-space(A)
> was there originally, but it has come out lately that some of text()
> nodes must be ignored). So, what I really need, is all text of A but
> excluding descendants of B, like:
> >
> > <xsl:variable name="textOnly"
> > select="normalize-space(A//text()[not(ancestor::B)])"/>
> >
> > So from <A>txt1<B>txt2<C>txt3</C></B><D>txt4</D></A> I need to get
> "txt1txt4".
> >
> > Is there some "one XPath expression" way now (XSLT 1.1 + Saxon 6.5.x
> extensions eventually)?
>
> XSLT 1.1 does not exist and never has existed (other than an early
> draft
> at w3c).
>
> If you use Saxon 6.5, perhaps you can just as easily use Saxon 8.9,
> which implements XSLT 2.0. Though it is beyond me why you want it in
> one
> expression without extra XSLT instructions, it is easiest in 2.0:
>
> normalize-space(string-join(A//text()[not(ancestor::B)], ''))
>
> in fact, you can do a whole lot more in 2.0 with one expression, like
> for..in with any sequence, do dissections, intersections,
> tokenization,
> regular expressions etc. Many things where you needed (complex)
> templates in 1.0 are single lines in 2.0
>
> I'm sorry I don't have a 1.0 solution for you (and I doubt anyone has
> a
> 1.1 solution, but that won't help, you use Saxon and that supports
> only
> 1.0 and 2.0 ;)
>
> HTH,
> Cheers,
> -- Abel Braaksma

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.