Re: [xsl] Matching only text nodes with certain (complicated) properties

Subject: Re: [xsl] Matching only text nodes with certain (complicated) properties
From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx>
Date: Fri, 9 Jan 2009 11:37:14 -0800
On Fri, Jan 9, 2009 at 11:28 AM, Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> wrote:
> Actually Dimitre, as long as this is TEI as the OP stated, the pb will never
> be an ancestor -- it'll always be on preceding axis. (As the OP noted in
> passing, it's a milestone -- always empty. :-)
>

OK, then take this as solving both the current (not too precisely
stated) problem and a more difficult one, in which a <pb> can contain
text.

:)


> Cheers,
> Wendell
>
> At 01:08 PM 1/9/2009, Dimitre wrote:
>>
>> > In XSLT 1.0 the problem is nastier and expensive, although doable. But
>> > when
>> > restricted to 1.0, one should keep in mind other options (such as
>> > judicious
>> > pre-processing) to alleviate problems either with performance or code
>> > complexity.
>> >
>> > It's doable because the pb can in fact be found on preceding:: (even
>> > when
>> > not on preceding-sibling::).
>>
>> As the OP stated in his opening message,
>>
>> "As far as I understand it, the main problem is that the expression I
>> have to construct for matching can't rely simply on the preceding:: or
>> ancestor:: axes since the <pb/> can really appear anywhere in the
>> tree."
>>
>> The following XSLT 1.0 transformation has a template that correctly
>> matches (only) the required text nodes:
>>
>> <xsl:stylesheet version="1.0"
>>  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>>
>>  <xsl:strip-space elements="*"/>
>>
>>        <xsl:template match="text()"/>
>>
>>        <xsl:template match=
>>        "text()
>>           [count(preceding::text()[1]/preceding::node()
>>                  | preceding::text()[1]/ancestor::node()
>>                  )
>>           &lt;
>>            count((preceding::pb[1] |
>> ancestor::pb[1])[last()]/preceding::node()
>>                  |
>>                   (preceding::pb[1] |
>> ancestor::pb[1])[last()]/ancestor::node()
>>                 )
>>            ]
>
> ...
>
>
> ======================================================================
> Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
> Mulberry Technologies, Inc.                http://www.mulberrytech.com
> 17 West Jefferson Street                    Direct Phone: 301/315-9635
> Suite 207                                          Phone: 301/315-9631
> Rockville, MD  20850                                 Fax: 301/315-8285
> ----------------------------------------------------------------------
>  Mulberry Technologies: A Consultancy Specializing in SGML and XML
> ======================================================================
>
>



-- 
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
Never fight an inanimate object
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play

Current Thread