Subject: RE: [xsl] Document function isn't realoding document. From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Sat, 12 Jan 2008 08:42:03 -0000 |
> I have very big problem with my XSLT transformation... I'm > using Xalan, stylesheet is version 1.0. At some point of the > transformation stylesheet reads value which is needed later > in transformation. To avoid passing this variable through all > apply-templates and using parameters in xsl:template I use > xalan:redirect extension - simply write to file value of > interesting element making with it XML document > (<myValue>readed value</myValue>) and then I read that file with > document(myFile) function. > The problem is when I change that > file with consequents invoking of redirect:write instructions > and read them again using processor doesn't see changes in > that document - value of <myValue> is still the same as at > the first time! XSLT 1.0 requires that when you call document() twice with the same URI, the two documents are identical. Most implementations are likely to achieve this by caching the document. xalan:redirect is of course an extension, so it can do anything it likes. But with the XSLT 2.0 equivalent, xsl:result-document, you are explicitly banned from trying to write a document and then reread it "later" in the same transformation. The reason is that XSLT is not procedural so there is no concept of "later". You are trying to avoid using XSLT the way it is designed to be used, so it is not surprising that you have a big problem. XSLT 2.0 has tunnel parameters which avoid the problem of passing parameters through many layers of intermediate templates. Michael Kay http://www.saxonica.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Document function isn't r, Colin Paul Adams | Thread | [xsl] Breaking up a large XML docum, Glen Mazza |
[xsl] Overflow on building relative, Cynthia . Arangua | Date | RE: [xsl] Breaking up a large XML d, Michael Kay |
Month |