Testing..

Geert Josten wrote:

I take the challenge to make this work in XSL. Just give me about 15 min.

:-)

David wrote:

Geert Josten wrote:

Hi David,

Actually, it has. Sandor suggested to generate an XSL using the xpaths you want to match as input. As long as not every requests needs a new XSL, this will be fairly efficient. And though a DOM tree is being build from the input SAX events for the XSL transform, you do not need to bother about it and neither about converting it to SAX again.

It could be more efficient to write a XPath testing Transformer, but doing it without DOM will require you to put a lot of information into memory, parse the xpath expressions and match each event against the expressions. I have seen attempts in other languages and I cannot recommend this procedure, not for full Xpath support ;-P..

In short, I think generating an XSL is by far the easiest way and gives you full power at the same time. Let know if you need help on this...

Cheers,
Geert



Oh I see. Even though the xpaths will not change much I do not believe XSL will work. For example I have two xpaths that both should match the same thing. Eg
-----------------
<template match="//xhtml:img">
  <copy>
    <attribute name="class" select="concat('match1 ', @class)"/>
  </copy>
</template>
<template match="//xhtml:[EMAIL PROTECTED]'more-exact']">
  <copy>
    <attribute name="class" select="concat('match2 ', @class)"/>
  </copy>
</template>
----------------

Now if I had xhtml like this:'
----------------
<img/>
<img id="more-exact'/>
--------------
the results obviously will be
---------------
<img class="match1"/>
<img id="more-exact"  class="match2"/>
--------------
i WANT the results to be
---------------
<img class="match1"/>
<img id="more-exact"  class="match1 match2"/>
--------------
sooo.. pretty much I want BOTH xpaths to match; not just the highest prioritized one.

Calling the first template from the 2nd one is not an option. This example is simplified. In the actual problem there will be many more xpaths and we would need to dynamically create the xsl files... and if one template needs to call another one I have no idea how I would figure that out. (Some how I would have to know that a group of xpaths all match something so the templates need to call each other.)

This is why I am not using an xsl file. Anyone know of a good way to do this in xsl? (I came up with one or two ways of doing it but it in no way an elegant solution -- and probably extremely slow.) MAYBE if xsl:next-match was supported I could do this -- but xalan does not seem to have support for it yet.

So who has a brilliant way of doing this? :-)

David


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
Drs. G.P.H. Josten
Consultant



Daidalos BV
Source of Innovation
Hoekeindsehof 1-4
2665  JZ  Bleiswijk
Tel: +31 (0) 10 850 1200
Fax: +31 (0) 10 850 1199
www.daidalos.nl


De informatie - verzonden in of met dit emailbericht - is afkomstig van Daidalos BV en is uitsluitend bestemd voor de geadresseerde. Indien u dit bericht onbedoeld hebt ontvangen, verzoeken wij u het te verwijderen. Aan dit bericht kunnen geen rechten worden ontleend.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to