Sorry, maybe I used the wrong term...
Here an example:
public class CustomTransformer extends AbstractSAXTransformer {
protected Properties format;
public SOAPTransformer() {
//format = XMLUtils.createPropertiesForXML( true );
format = new Properties();
format.put( OutputKeys.METHOD, "xml" );
format.put( OutputKeys.OMIT_XML_DECLARATION, "yes" );
}
public void setup( SourceResolver sourceResolver,
Map map,
String str,
Parameters parameters )
throws ProcessingException, SAXException, IOException {
// get some parameters here...
}
public void startDocument() throws SAXException {
this.startSerializedXMLRecording( format );
}
public void endDocument() throws SAXException {
try {
String message = this.endSerializedXMLRecording();
execute ( message );
} catch ( ProcessingException pe ) {
throw new SAXException( pe.getMessage() );
}
}
protected void execute ( String message )
throws ProcessingException, SAXException {
try {
// I use the XMLReader just to see what is hapenning...
// This method would rather do something with the XML message, maybe send it
// to a remote server and return back the response to the pipeline
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
xmlReader.setFeature(
"http://xml.org/sax/features/namespaces", true );
xmlReader.setFeature(
"http://xml.org/sax/features/namespace-prefixes", false );
xmlReader.setContentHandler( this.contentHandler );
StringReader strRdr = new StringReader( message );
InputSource inSrc = new InputSource( strRdr );
xmlReader.parse( inSrc );
} catch ( Exception e ) {
throw new ProcessingException( e.getMessage() );
}
}
}
This gives me the entire XML file minus the XML Namespaces. So I got a
prefix not bound error when I execute it. Any ideas? What happends if I have
more than one namespace?
Thanks for your help.
Eric
-----Original Message-----
From: Perez Carmona, David [mailto:[EMAIL PROTECTED]
Sent: Thursday, August 12, 2004 3:00 AM
To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
Subject: RE: Custom transformer
Can you put an example? I don't fully understand your problem.
The XML file is already parsed after the generation phase. Parse = convert
text to SAX events.
> -----Mensaje original-----
> De: JACOB, ERIC [mailto:[EMAIL PROTECTED]
> Enviado el: mi�rcoles, 11 de agosto de 2004 14:06
> Para: [EMAIL PROTECTED]
> Asunto: RE: Custom transformer
>
>
>
> The problem is not really the error... I just need some
> suggestions on how I
> could parse an entire xml file (generate by the xml
> generator) before doing
> some action with it (I don't care about what is inside the
> xml document, I
> just want to sent it).
>
> I'm not very familiar with the SAX event and cocoon
> transformer, and the
> information I've found on the cocoon's site (and wiki),
> didn't help me much
> in what I'm trying to do.
>
> The startSerializedXMLRecording and endSerializedXMLRecording
> functions
> didn't act the way I expected... I thought overriding the
> setConsumer and
> write a custom contentHandler, but maybe it exists a better way...
>
> Thanks for your help,
>
> Eric
>
> -----Original Message-----
> From: Perez Carmona, David [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, August 11, 2004 2:36 AM
> To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
> Subject: RE: Custom transformer
>
>
> Could you please provide the full call stack?
>
> > -----Mensaje original-----
> > De: JACOB, ERIC [mailto:[EMAIL PROTECTED]
> > Enviado el: martes, 10 de agosto de 2004 21:47
> > Para: [EMAIL PROTECTED]
> > Asunto: Custom transformer
> >
>
> >
>
> >
>
> > Hi all,
> >
>
> > I'm writing a custom transformer that need to parse an
> entire xml file
> > before doing something with it. The sitemap should look like that:
> >
>
> > <map:match pattern="">
> > <map:generate src="foo.xml"/>
> > <map:transform type="custom-transformer"/>
> > <map:serialize type="xml"/>
> > </map:match>
> >
>
> > So, I want to send foo.xml to a remote server and return the
>
> > response back
> > to the pipeline to serialize it in xml. I extended the
> > AbstractSAXTransformer since it provides various useful
> methods and I
> > thought doing something like this:
> >
>
> > public void startDocument() throws SAXException {
> > this.startSerializedXMLRecording( format );
> > }
> >
>
> > public void endDocument() throws SAXException {
> > try {
> > String value = this.endSerializedXMLRecording();
> > callSomeFunction( value );
> > } catch ( ProcessingException pe ) {
> > throw new SAXException( pe.getMessage() );
> > }
> > }
> >
>
> > But I got an error when I encounter text node:
> >
>
> > org.apache.cocoon.ProcessingException: Failed to execute pipeline.:
> > org.xml.sax.SAXException: no protocol
> >
>
> > Any ideas on how I could manage it?
> >
>
> > Thanks,
> >
>
> > Eric
> >
>
> >
>
> >
>
> >
>
> >
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
>
> >
>
> > *************************************************************
> > Este correo ha sido procesado por el Antivirus del Grupo FCC.
> > *************************************************************
> >
>
>
> *************************************************************
> Este correo ha sido procesado por el antivirus del Grupo FCC.
> *************************************************************
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
> *************************************************************
> Este correo ha sido procesado por el Antivirus del Grupo FCC.
> *************************************************************
>
*************************************************************
Este correo ha sido procesado por el antivirus del Grupo FCC.
*************************************************************
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]