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.

Reply via email to