[ssax-sxml] Re: [Webit-discuss] Re: sxml-match patterns
Brought to you by:
oleg
From: Alessandro C. <aco...@gm...> - 2005-05-26 02:07:39
|
Oleg, Thank you for your answer. I have been using sxslt until now, and moved towards sxml-match because of its (elegant!) macro-ish matching syntax and the fact that attribute matching is under-ordered. The latter is a feature I find particularly useful for my problem. (STX does not seem to possess it, from what I could see.) I had not considered combining sxslt and sxml-match together. I shall give it a try. Still, it would be interesting to find out the reason the stylesheet in my previous message generates the same tag twice. Also, I found two strange (to me) legal sxml-match stylesheets: ;; a) infinite loop at runtime (sxml-match sxml (,[x] x))) ;; b) runtime error "undefined variable x"=20 (sxml-match sxml (,[x] (guard (string? x)) x))) I cannot quite figure out the rationale behind the grammar[*] specifying that a node can be a catamorphism. [*] http://celtic.benderweb.net/sxml-match/manual/index.html Thank you, ___ Alessandro On 5/25/05, ol...@po... <ol...@po...> wrote: >=20 >=20 > Hello! >=20 > This is a reply to a message by Alessandro Colomba > on the webit-discuss mailing list: > http://sourceforge.net/mailarchive/forum.php?thread_id=3D7330228&forum_= id=3D15740 >=20 > The message might be of interest to other SXML users. >=20 > Alessandro Colomba wrote: >=20 > > Attempting to write a stylesheet to walk through an entire document, > > and match inner elements, I could not find a way to express something > > like: > > > > <!-- the identity transform --> > > <xsl:template match=3D"@*|node()"> > > <xsl:copy> > > <xsl:apply-templates select=3D"@*|node()"/> > > </xsl:copy> > > </xsl:template> > > Initially, wanting to copy a tree and transform only select elements,..= . >=20 > It may be helpful to exploit the strengths of traversal and matching > (querying). Although you can use traversal for querying/matching (by > mapping non-matched or uninteresting elements to nothing) and > querying/matching for bulk transformations, that doesn't seem to be > the best use of either tool. The identity transform has the following > simple form in SXSLT: >=20 > (pre-post-order sxml > `((*text* . ,(lambda (tag str) str)) > (*default* . ,(lambda node node)))) >=20 > You can add more rules to transform some nodes differently. Please see > examples in SSAX/examples (in the CVS repository or in a SSAX > distribution). In particular, sxml-nesting-depth-label.scm >=20 > It should be stressed that each SXSLT handler receives a node. So, a > handler can use sxml-match to match/transform just that particular > node. You can leave the rest of the traversing to pre-post-order > engine. >=20 > If you're interested in translating XSLT stylesheets, you might want > to take a look at STX, > http://www196.pair.com/lisovsky/transform/stx/ > and http://www196.pair.com/lisovsky/query/ >=20 >=20 > Cheers, > Oleg >=20 >=20 > ------------------------------------------------------- > SF.Net email is sponsored by: GoToMeeting - the easiest way to collaborat= e > online with coworkers and clients while avoiding the high cost of travel = and > communications. There is no equipment to buy and you can meet as often as > you want. Try it free.http://ads.osdn.com/?ad_id=3D7402&alloc_id=3D16135&= op=3Dclick > _______________________________________________ > Webit-discuss mailing list > Web...@li... > https://lists.sourceforge.net/lists/listinfo/webit-discuss >=20 On 5/25/05, ol...@po... <ol...@po...> wrote: >=20 >=20 > Hello! >=20 > This is a reply to a message by Alessandro Colomba > on the webit-discuss mailing list: > http://sourceforge.net/mailarchive/forum.php?thread_id=3D7330228&forum_= id=3D15740 >=20 > The message might be of interest to other SXML users. >=20 > Alessandro Colomba wrote: >=20 > > Attempting to write a stylesheet to walk through an entire document, > > and match inner elements, I could not find a way to express something > > like: > > > > <!-- the identity transform --> > > <xsl:template match=3D"@*|node()"> > > <xsl:copy> > > <xsl:apply-templates select=3D"@*|node()"/> > > </xsl:copy> > > </xsl:template> > > Initially, wanting to copy a tree and transform only select elements,..= . >=20 > It may be helpful to exploit the strengths of traversal and matching > (querying). Although you can use traversal for querying/matching (by > mapping non-matched or uninteresting elements to nothing) and > querying/matching for bulk transformations, that doesn't seem to be > the best use of either tool. The identity transform has the following > simple form in SXSLT: >=20 > (pre-post-order sxml > `((*text* . ,(lambda (tag str) str)) > (*default* . ,(lambda node node)))) >=20 > You can add more rules to transform some nodes differently. Please see > examples in SSAX/examples (in the CVS repository or in a SSAX > distribution). In particular, sxml-nesting-depth-label.scm >=20 > It should be stressed that each SXSLT handler receives a node. So, a > handler can use sxml-match to match/transform just that particular > node. You can leave the rest of the traversing to pre-post-order > engine. >=20 > If you're interested in translating XSLT stylesheets, you might want > to take a look at STX, > http://www196.pair.com/lisovsky/transform/stx/ > and http://www196.pair.com/lisovsky/query/ >=20 >=20 > Cheers, > Oleg >=20 >=20 > ------------------------------------------------------- > SF.Net email is sponsored by: GoToMeeting - the easiest way to collaborat= e > online with coworkers and clients while avoiding the high cost of travel = and > communications. There is no equipment to buy and you can meet as often as > you want. Try it free.http://ads.osdn.com/?ad_id=3D7402&alloc_id=3D16135&= op=3Dclick > _______________________________________________ > Webit-discuss mailing list > Web...@li... > https://lists.sourceforge.net/lists/listinfo/webit-discuss > |