[XML-SIG] 4Suite problems
Anders Bruun Olsen
Fri, 13 Dec 2002 17:02:01 +0100
On Fri, Dec 13, 2002 at 08:41:59AM -0700, Uche Ogbuji wrote:
> > def ProcessFile(input, output):
> > XSLT = open("ujds.xslt", "r").read()
> > XML = open(input, "r").read()
> > xsltprocessor = Processor()
> > transform = InputSource.DefaultFactory.fromString(XSLT)
> > document = InputSource.DefaultFactory.fromString(XML)
> I always strongly suggest that you still use URIs here. For example
> transform = InputSource.DefaultFactory.fromString(XSLT, "ujds.xslt")
> This avoids errors if you try to do something later that performs resolution
> against a relative URI.
> Note that you can just write:
> xsltprocessor = Processor()
> transform = InputSource.DefaultFactory.fromUri("ujds.xslt")
> document = InputSource.DefaultFactory.fromUri(input)
> Which will eliminate the error and will have the additional advantage of being
> a tad faster.
Thanks, it works now!
I have one more thing though - As I already have the XML file parsed to
a DOM instance, it would be a nice thing if I could use that DOM
instance instead of reading the whole XML file again from disk. I have
tried this approach:
def ProcessFile(dom, input, output):
xsltprocessor = Processor()
transform = InputSource.DefaultFactory.fromUri("ujds.xslt")
result = xsltprocessor.runNode(dom, input)
Which results in a file with this line only:
<?xml version='1.0' encoding='UTF-8'?>
I am trying to output as HTML, which now works nicely through the other
way. How can I (if possible/feasible at all) just use the DOM instance
instead of loading the file?
> I pointed to the likely solution above. You may also want to browse my
> article on 4Suite:
> Which gives a fuller example and some discussion. A fuller discussion on
> 4Suite's pickiness about URIs is in the following:
Thanks, I'll look into those articles!
-----BEGIN GEEK CODE BLOCK-----
GCS/O d--@ s:+ a-- C++ $UL+++ P++ L+++ E- W+ N(+) o K? w O- M-- V
PS+ PE@ Y+ PGP+ t 5 X R+ tv+ b+ DI+++ D+ G e- h !r y?
------END GEEK CODE BLOCK------