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

XSLT is not an editor [ was: retaining entity d

Subject: XSLT is not an editor [ was: retaining entity declarations while converting from one xml format to another]
From: "steve.majewski@xxxxxxxxx" <steve.majewski@xxxxxxxxx>
Date: Wed, 16 Dec 2009 10:53:22 -0500
 XSLT is not an editor [ was:  retaining entity  d
I had a similar problem, and while searching thru the archives
( since I was sure it must be a FAQ ) I found a thread with a
good explanation by Ken Holman of why XSLT is NOT an EDITOR
that helped me to think about these problems:

http://www.stylusstudio.com/xmldev/200905/post60080.html

http://www.stylusstudio.com/xmldev/200905/post60090.html

The short version:
* XSLT constructs a new output (write-only) document from an input (read-only) document.
* XSLT does not process XML syntax -- it processes XML infoset trees.


I suggest anyone who is confused about why you can't do this sort of thing
in XSLT read that thread. See also:
Amelia Lewis: http://www.stylusstudio.com/xmldev/200905/post10080.html
Michael Kay: http://www.stylusstudio.com/xmldev/200905/post30080.html



However, despite the fact that XSLT was not designed for this sort of job,
it does get used as an editor or filter of xml documents, for lack of a better
solution. ( Is XQuery with update intended to fill this gap ? )


[1] We have tried using a perl script that:
grabs and saves everything before the root element,
translates '&' character into some other character that doesn't occur in the document.
( settable on the command line )
calls out to do an xslt transform ( with Saxon or xsltproc )
pastes the saved prefix onto the output
and does the reverse character translation back to '&'
( There may be some document cases where those steps would fail, but it works
for our selection. )



[2] It's probably possible to do something similar to the above strictly in XSLT
by reading the document as both XML and unparsed text. See Michesl Saxon's article
on "Up-conversion using XSLT" :
http://www.saxonica.com/papers/ideadb-1.1/mhk-paper.xml
for input tips. Pasting the two output streams back together may also require some tricks.
[ This is probably more complex that the perl solution above, but doing it all
in XSLT may have workflow advantages in some cases. ]


[3] Other have mentioned Andrew Welch's LexEv, which is an XMLReader that converts lexical
events (syntax) into markup:


http://ajwelch.blogspot.com/2008/08/lexev-xmlreader-converts-lexical-events.html

This seems like a much cleaner way to handle the pass thru of syntax elements,
but it requires explicitly encoding the inverse operation in the stylesheet.
Some examples in:


http://ajwelch.blogspot.com/2008/08/some-sample-templates-for-use-with.html

[4] Before finding the simpler solution (#1 above) I considered writing a tool that
would pass thru all of the xml unchanged except for fragments that matched an
xpath expression -- those fragments would be processed thru an xslt stylesheet.


Does anyone have any other tips on how to handle this sort of problem ?
Are there any XML editors that can work in batch mode using XPath expressions ?
Is XQuery with update intended to solve this problem ? ( and are there any good
implementations for this use ? )
[ This may be a bit off topic for xsl-list, but it does seem to be a FAQ. ]


-- Steve Majewski / UVA Alderman Library

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.