DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=19915>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=19915 getAttributes does not work in ElemExtensionCall subtree ------- Additional Comments From [EMAIL PROTECTED] 2003-07-10 15:36 ------- Ok, take a look at this: I've an example with 4 files: 1) java class syslink.tototest.TotoMain, with a main function 2) java class syslink.tototest.TotoExtension, using xalan extension 3) xml file C:\tototest-in.xml (input) 4) xslt file C:\tototest.xsl 1) File syslink.tototest.TotoMain ********************************************* package syslink.tototest; import java.io.*; import java.util.*; import java.text.*; import java.util.zip.*; import java.sql.*; import java.awt.event.*; import javax.xml.transform.*; import javax.xml.transform.stream.*; import org.xml.sax.*; import org.xml.sax.helpers.*; import org.apache.fop.apps.*; import org.apache.avalon.framework.logger.*; import org.apache.fop.messaging.*; public class TotoMain extends Object implements Cloneable, Serializable { public TotoMain () { } public static void main (String[] argv) throws Exception { InputStream inputStream; OutputStream outputStream; Transformer transformer; System.out.println("<TOTOTEST>"); inputStream=new FileInputStream("c:/tototest-in.xml"); outputStream=new FileOutputStream("c:/tototest-out.xml"); transformer=TransformerFactory.newInstance().newTransformer(new StreamSource (new FileInputStream("c:/tototest.xsl"))); transformer.transform(new StreamSource(inputStream), new StreamResult (outputStream)); inputStream.close(); outputStream.close(); System.out.println("</TOTOTEST>"); } } 2) File syslink.tototest.TotoExtension **************************************** package syslink.tototest; import java.io.*; import java.util.*; import org.w3c.dom.*; import org.apache.xalan.extensions.*; import org.apache.xalan.templates.*; public class TotoExtension extends Object implements Cloneable, Serializable { public TotoExtension () { } public void myElement (XSLProcessorContext context, ElemExtensionCall element) throws Exception { NodeList elementList; Node node; int index; int maxIndex; NamedNodeMap attributeList; System.out.println("<i-am-in-"+element.getNodeName()+">"); elementList=element.getChildNodes(); for (index=0, maxIndex=elementList.getLength(); index<maxIndex; index++) { node=elementList.item(index); System.out.println("<i-am-in-"+node.getNodeName()+">"); // attributeList=node.getAttributes(); System.out.println("</i-am-in-"+node.getNodeName()+">"); } System.out.println("</i-am-in-"+element.getNodeName()+">"); } } 3) File C:\tototest-in.xml **************************************************** <document identity="tototest"> <head> </head> <body> <chapter identity="example"> <text>This is a tiny example...</text> </chapter> </body> </document> 4) File C:\tototest.xsl ******************************************************* <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xalan" xmlns:toto-extension="syslink.tototest.TotoExtension" extension-element-prefixes="toto-extension"> <xsl:output method="xml" encoding="iso-8859-1"/> <xsl:template match="/"> <xsl:apply-templates select="document" mode="document"/> </xsl:template> <xsl:template match="document" mode="document"> <toto-extension:myElement> <something name="First"> <attribute name="booboo" value="0"/> <attribute name="booboo" value="1"/> <attribute name="booboo" value="2"/> <attribute name="booboo" value="3"/> </something> <something name="Second"> <attribute name="booboo" value="4646"/> <attribute name="booboo" value="634"/> <attribute name="booboo" value="676"/> </something> </toto-extension:myElement> <text>HELLO WORLD</text> </xsl:template> <xalan:component prefix="toto-extension" elements="" functions=""> <xalan:script lang="javaclass" src="xalan://syslink.tototest.TotoExtension"/> </xalan:component> </xsl:stylesheet> ******************************************************************************* Output (on screen, the output xml file is different) should be : <TOTOTEST> <i-am-in-my-element> <i-am-in-something> </i-am-in-something> <i-am-in-something> </i-am-in-something> </i-am-in-my-element> </TOTOTEST> Just by uncommenting the getAttributes() call it becomes: <TOTOTEST> <i-am-in-toto-extension:myElement> <i-am-in-something> ; Line#: 15; Column#: 29 javax.xml.transform.TransformerException: ElemTemplateElement error: Function not supported! at org.apache.xalan.extensions.ExtensionHandlerJavaClass.processElement (ExtensionHandlerJavaClass.java:441) at org.apache.xalan.templates.ElemExtensionCall.execute (ElemExtensionCall.java:283) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes (ElemApplyTemplates.java:425) at org.apache.xalan.templates.ElemApplyTemplates.execute (ElemApplyTemplates.java:216) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates (TransformerImpl.java:2339) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode (TransformerImpl.java:2160) at org.apache.xalan.transformer.TransformerImpl.transformNode (TransformerImpl.java:1213) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:668) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:1129) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:1107) at syslink.tototest.TotoMain.main(TotoMain.java:39) --------- java.lang.RuntimeException: ElemTemplateElement error: Function not supported! at org.apache.xalan.templates.ElemTemplateElement.error (ElemTemplateElement.java:336) at org.apache.xalan.templates.ElemTemplateElement.error (ElemTemplateElement.java:313) at org.apache.xalan.templates.ElemTemplateElement.error (ElemTemplateElement.java:325) at org.apache.xml.utils.UnImplNode.getAttributes(UnImplNode.java:661) at syslink.tototest.TotoExtension.myElement(TotoExtension.java:39) at java.lang.reflect.Method.invoke(Native Method) at org.apache.xalan.extensions.ExtensionHandlerJavaClass.processElement (ExtensionHandlerJavaClass.java:432) at org.apache.xalan.templates.ElemExtensionCall.execute (ElemExtensionCall.java:283) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes (ElemApplyTemplates.java:425) at org.apache.xalan.templates.ElemApplyTemplates.execute (ElemApplyTemplates.java:216) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates (TransformerImpl.java:2339) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode (TransformerImpl.java:2160) at org.apache.xalan.transformer.TransformerImpl.transformNode (TransformerImpl.java:1213) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:668) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:1129) at org.apache.xalan.transformer.TransformerImpl.transform (TransformerImpl.java:1107) at syslink.tototest.TotoMain.main(TotoMain.java:39) Exception in thread "main" ******************************************************************************* Many thanks if you can do something for this problem, JC.
