You mis one argument in new AttributesImpl();
it should be new AttributesImpl(attr), see comments in text
AS
> Hi all. I need to implement a my own transform that does a
> link rewriter. the scope is to change the href value of <a
> tag in a html file (a well formed html file checked by jtidy
> as you can check in the file jtidy.xml). I have realize for
> now the code:
>
> package it.transformers;
>
> import org.apache.cocoon.transformation.AbstractSAXTransformer;
> import org.xml.sax.Attributes;
> import java.io.IOException;
> import java.util.Map;
> import org.apache.cocoon.ProcessingException;
> import org.apache.cocoon.portal.transformation.CopletTransformer;
> import org.apache.avalon.framework.parameters.Parameters;
> import org.xml.sax.SAXException;
> import org.apache.cocoon.environment.SourceResolver;
> import org.apache.cocoon.xml.AttributesImpl;
> import java.util.Stack;
>
> public class HTMLLinkTransformer extends AbstractSAXTransformer {
>
> protected Stack elementStack = new Stack();
>
> public void recycle() {
> super.recycle();
> this.elementStack.clear();
> }
>
> public void setup(SourceResolver resolver,
> Map objectModel,
> String src,
> Parameters par)
> throws ProcessingException, SAXException, IOException {
> super.setup(resolver, objectModel, src, par);
>
> }
>
> public void startElement(String uri, String name, String
> raw, Attributes attr)
> throws SAXException {
> if ("a".equalsIgnoreCase(name) ||
> "xhtml:a".equalsIgnoreCase( name ) ) {
>
> AttributesImpl newAttr = new AttributesImpl();
> newAttr.setValue(attr.getIndex("href"),"ciao");
Here is the mistake. newAttr is empty! So, attr.getIndex("href") returns an
index that newAttr does not have.
AttributesImpl newAttr = new AttributesImpl(); -> AttributesImpl newAttr = new
AttributesImpl(attr); does the job
> attr = newAttr;
> }
> super.startElement( uri, name, raw,attr );
> }
>
> public void endElement(String uri, String name, String
> raw) throws SAXException {
> super.endElement(uri, name, raw);
> }
> }
>
> By using it i have this error:
> ERROR (2005-10-26) 23:35.13:739 [sitemap.handled-errors]
> (/pmm/portal/coplets/S062/execute.service)
> http-8080-Processor8/ErrorHandlerHelper: Error executing pipeline.
> org.apache.cocoon.ProcessingException: Error executing
> pipeline.: org.w3c.dom.DOMException: HIERARCHY_REQUEST_ERR:
> An attempt was made to insert a node where it is not permitted.
> at
> org.apache.cocoon.components.pipeline.AbstractProcessingPipeli
> ne.handleException(AbstractProcessingPipeline.java:940)
> at
> org.apache.cocoon.components.pipeline.impl.AbstractCachingProc
> essingPipeline.processXMLPipeline(AbstractCachingProcessingPip
> eline.java:281)
> at
> org.apache.cocoon.components.pipeline.AbstractProcessingPipeli
> ne.process(AbstractProcessingPipeline.java:783)
> at
> org.apache.cocoon.components.source.impl.SitemapSource.toSAX(S
> itemapSource.java:413)
> at
> org.apache.cocoon.components.source.SourceUtil.toSAX(SourceUti
> l.java:142)
> at
> org.apache.cocoon.components.source.SourceUtil.toSAX(SourceUti
> l.java:100)
> at
> org.apache.cocoon.components.source.SourceUtil.toDOM(SourceUti
> l.java:332)
> at
> org.apache.cocoon.components.flow.util.PipelineUtil.processToD
> OM(PipelineUtil.java:173)
>
>
> Can anybody help me? Thanks to all.
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]