Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


Re: [xsl] normalize-space processing all nodes hack?

From: Abel Braaksma <abel.online@--------->
To:
Date: 11/2/2007 9:55:00 AM
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


transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent