cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lionel Crine <cr...@4dconcept.fr>
Subject Re: RV: Custom transformer
Date Wed, 25 Aug 2004 11:30:51 GMT
Hi,

did you try to use the startPrefixMapping Method.

There are some examples in the source classes of Cocoon.
See fragmentExtractorGenerator for example.

Lionel


Perez Carmona, David wrote:

> 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:DPerezCar@fcc.es]
> 
> Sent: Thursday, August 12, 2004 3:00 AM
> To: users@cocoon.apache.org; eric.jacob@bell.ca
> 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:eric.jacob@bell.ca]
>>Enviado el: miércoles, 11 de agosto de 2004 14:06
>>Para: users@cocoon.apache.org
>>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:DPerezCar@fcc.es]
> 
> 
>>Sent: Wednesday, August 11, 2004 2:36 AM
>>To: users@cocoon.apache.org; eric.jacob@bell.ca
>>Subject: RE: Custom transformer
>>
> 
> 
> 
>>Could you please provide the full call stack?
>>
> 
> 
>>>-----Mensaje original-----
>>>De: JACOB, ERIC [mailto:eric.jacob@bell.ca]
>>>Enviado el: martes, 10 de agosto de 2004 21:47
>>>Para: users@cocoon.apache.org
>>>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: users-unsubscribe@cocoon.apache.org
>>>For additional commands, e-mail: users-help@cocoon.apache.org
>>>
>>
> 
> 
>>>*************************************************************
>>>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: users-unsubscribe@cocoon.apache.org
>>For additional commands, e-mail: users-help@cocoon.apache.org
>>
> 
> 
> 
>>*************************************************************
>>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: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
> 
> 
> 
> 
> *************************************************************
> 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: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
> 

-- 
Lionel CRINE
Ingénieur Systèmes Documentaires
Société : 4DConcept
22 rue Etienne de Jouy 78353 JOUY EN JOSAS
Tel : 01.34.58.70.70 Fax : 01.39.46.06.90

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Mime
View raw message