You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Maarten van den Dungen <ma...@shortcut.nl> on 2000/11/12 20:47:37 UTC

processing dom node doesn't work?

Dear all,

I am sure that I am doing something wrong, but I can't find out what.
 From within a taglib I try to process the contents of the taglib in 
function.  In the logic part of the taglib I try to create a function 
parameter with <xsl:copy-of select="$value"/>. The idea is to be able to 
process the node in the function. I have been trying for a considerable 
time now, but somehow the java code is not properly formatted. Somhow 
normal code is generated in place of the parameter. Any suggestions 
appreciated. Thanks.

Below is an extract of the resulting code and my attempts to create the 
taglib and invoking code.

Regards,

Maarten


the resulting code ...

       func(
     xspParentNode = xspCurrentNode;
     xspNodeStack.push(xspParentNode);
     xspCurrentNode =
       document.createElement("somecontents");
     xspParentNode.appendChild(xspCurrentNode);

     xspCurrentNode.appendChild(
       document.createTextNode("\n\t\t\t\t")
     );

     xspParentNode = xspCurrentNode;
     xspNodeStack.push(xspParentNode);
     xspCurrentNode =
       document.createElement("item");
     xspParentNode.appendChild(xspCurrentNode);

     xspCurrentNode.appendChild(
       document.createTextNode("1")
     );

     ((Element) xspCurrentNode).normalize();
     xspCurrentNode = (Node) xspNodeStack.pop();

     xspCurrentNode.appendChild(
       document.createTextNode("\n\t\t\t\t")
     );

     xspParentNode = xspCurrentNode;
     xspNodeStack.push(xspParentNode);
     xspCurrentNode =
       document.createElement("item");
     xspParentNode.appendChild(xspCurrentNode);

     xspCurrentNode.appendChild(
       document.createTextNode("2")
     );

     ((Element) xspCurrentNode).normalize();
     xspCurrentNode = (Node) xspNodeStack.pop();

     xspCurrentNode.appendChild(
       document.createTextNode("\n\t\t\t")
     );

     ((Element) xspCurrentNode).normalize();
     xspCurrentNode = (Node) xspNodeStack.pop();
   );
....





the taglib:

<xsl:template match="xsp:page">
   <xsp:page>
...
     <xsp:logic>
    	  public static String func(Node node) {
// process node here...
  			return "";
         }
     </xsp:logic>
...
   </xsp:page>	
</xsl:template>

the matching template:

<xsl:template match="tryout:test">
     <xsl:variable name="value">
       <xsl:call-template name="get-nested-content">
         <xsl:with-param name="content" select="."/>
       </xsl:call-template>
     </xsl:variable>

     <xsp:logic>
	func(<xsl:copy-of select="$value"/>);
     </xsp:logic>
</xsl:template>

get nested contents like everywhere else...
<xsl:template name="get-nested-content">
   <xsl:param name="content"/>
   <xsl:choose>
     <xsl:when test="$content/*">
       <xsl:apply-templates select="$content/*"/>
     </xsl:when>
     <xsl:otherwise>"<xsl:value-of select="$content"/>"</xsl:otherwise>
   </xsl:choose>
</xsl:template>

The invoking page:

<xsp:page language="java"
	xmlns:xsp="http://www.apache.org/1999/XSP/Core"
   xmlns:tryout="http://www.itech.shortcut.nl/tryout"
   xmlns:request2="http://www.apache.org/1999/XSP/Request2"
 >
	<page>
		<tryout:test>
			<somecontents>
				<item>1</item>
				<item>2</item>
			</somecontents>	
		</tryout:test>
	</page>
</xsp:page>