to place the point precisely: you can use document(), but it only accepts two kinds of urls, file: and cocoon:, this hack enables you to get content from say, a database or something...
mvh karl řie -----Original Message----- From: Luke Studley [mailto:[EMAIL PROTECTED]] Sent: 5. desember 2001 17:12 To: '[EMAIL PROTECTED]' Subject: RE: Inserting / Comining XML data Whoosh - point missed! ;-) That's precisely what I wanted to do - to pull dynamic XML data into the XSL layer using the document() function. To do this though you need access to the underlying URIResolver for the stylesheet - which Karl has kindly provided a solution for. Just another way to skin a cat :-) Luke -----Original Message----- From: Robert Koberg [mailto:[EMAIL PROTECTED]] Sent: 05 December 2001 18:09 To: [EMAIL PROTECTED] Subject: Re: Inserting / Comining XML data I am just coming into this thread, but couldn't you use the XSLT document function to bring in other XML (unless I am missing the point?)? best, -Rob ----- Original Message ----- From: "Luke Studley" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Wednesday, December 05, 2001 7:38 AM Subject: RE: Inserting / Comining XML data > Thanks Karl. > > Glad to know somebody has had similar thoughts/needs. > > I will try this. You're right this doesn't replace generators - but it does > allow you to quite easily implement some sort of "Pull MVC" model a opposed > to the generator push model - and will allow me to use my existing > stylesheets mostly unchanged. > > Cheers > > Luke > > > -----Original Message----- > From: Karl Řie [mailto:[EMAIL PROTECTED]] > Sent: 05 December 2001 12:49 > To: [EMAIL PROTECTED] > Subject: RE: Inserting / Comining XML data > > > 3. Maybe I could use some sort of custom URL protocol manager like the > > cocoon:/ and resource:/? Is it possible to supply new instances of these? > > > > 4. Or I could use my URI resolvers again? Is it possible to set Custom URI > > solvers in C2 > > i have found two ways to accomplish this, but it took some time to find out, > mostly because this is not very well documented yet... ok here we go: > > in the "cocoon.xconf" file there is a "source-handler" entry, you can create > own protocols here: > > <source-handler> > <protocol name="cool" > class="org.apache.cocoon.components.source.CoolSourceFactory"/> > </source-handler> > > then you will have to create two classes called > "org.apache.cocoon.components.source.CoolSourceFactory" and > "org.apache.cocoon.components.source.CoolSource". they will have to > implement "org.apache.cocoon.components.source.SourceFactory" and > "org.apache.cocoon.environment.Source". Where the "CoolSourceFactory" > resolves urls with cool:/some/thing.xml and creates a "CoolSource" for it. > now you can refere to "cool:/some/thing.xml" many places in your project. > > BUT this didn't work for me because the > "org.apache.cocoon.environment.Source" interface expects a > org.xml.sax.InputSource and it delivers a characterstream or bytestream > back, and i had a sax/dom source and i didn't want to serialize it to text > to get it parsed again... so i snooped around some more and found this: > > > again in your "cocoon.xconf" there is an entry for your default transformer. > i hacked mine like this: > > <xslt-processor > class="org.apache.cocoon.components.xslt.KarlsXSLTProcessorImpl" > logger="root.xslt"> > <parameter name="use-store" value="true"/> > <parameter name="incremental-processing" value="false"/> > </xslt-processor> > > > then i created a class "called > org.apache.cocoon.components.xslt.KarlsXSLTProcessorImpl" containing this > (please not that i had to create it in the org.apache.cocoon.components.xslt > package to be allowed to extend XSLTProcessorImpl) : > > > public class XonataXSLTProcessorImpl extends XSLTProcessorImpl { > public javax.xml.transform.Source resolve(String href, String base) > throws > TransformerException { > if (!href.startsWith("karl:")) { > return super.resolve(href,base); > } > else { > SAXSource source = new SAXSource( ... ); > or > DOMSource source = new DOMSource( ... ); > or > StreamSource source = new StreamSource( ... ); > return source; > } > } > } > > this way i can respond and create any SAX/DOM/Stream source for any protocol > for the transformer, and i can use "document('rmi://myserver/mydatachunk')" > in my xsl documents. this does not replace a generator thou.... > > > i would be happy if anyone could tell me if there is an easier way to create > protocol handlers that can deliver SAX or DOM and not only Stream. > > > > mvh karl řie > > > --------------------------------------------------------------------- > Please check that your question has not already been answered in the > FAQ before posting. <http://xml.apache.org/cocoon/faqs.html> > > To unsubscribe, e-mail: <[EMAIL PROTECTED]> > For additional commands, e-mail: <[EMAIL PROTECTED]> > > --------------------------------------------------------------------- > Please check that your question has not already been answered in the > FAQ before posting. <http://xml.apache.org/cocoon/faqs.html> > > To unsubscribe, e-mail: <[EMAIL PROTECTED]> > For additional commands, e-mail: <[EMAIL PROTECTED]> --------------------------------------------------------------------- Please check that your question has not already been answered in the FAQ before posting. <http://xml.apache.org/cocoon/faqs.html> To unsubscribe, e-mail: <[EMAIL PROTECTED]> For additional commands, e-mail: <[EMAIL PROTECTED]> --------------------------------------------------------------------- Please check that your question has not already been answered in the FAQ before posting. <http://xml.apache.org/cocoon/faqs.html> To unsubscribe, e-mail: <[EMAIL PROTECTED]> For additional commands, e-mail: <[EMAIL PROTECTED]> --------------------------------------------------------------------- Please check that your question has not already been answered in the FAQ before posting. <http://xml.apache.org/cocoon/faqs.html> To unsubscribe, e-mail: <[EMAIL PROTECTED]> For additional commands, e-mail: <[EMAIL PROTECTED]>