ovidiu 02/02/15 17:41:33 Added: src/scratchpad/schecoon/src/org/apache/cocoon/markup/xsp jpath.xsl Log: Simple stylesheet for extracting data out of Java objects passed from the flow control layer. This should be only logicsheet needed when developing Web applications using Schecoon: the flow control layer invokes the business logic layer, and passes objects from it to the content generation layer. The content generation (XSP) uses this logicsheet to extract data from the objects passed to it. Revision Changes Path 1.1 xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/markup/xsp/jpath.xsl Index: jpath.xsl =================================================================== <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsp="http://apache.org/xsp" xmlns:jpath="http://apache.org/xsp/jpath/1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="xsp:page"> <xsp:page> <xsl:apply-templates select="@*"/> <xsp:structure> <xsp:include>java.util.List</xsp:include> <xsp:include>java.util.Iterator</xsp:include> <xsp:include>org.apache.cocoon.environment.Environment</xsp:include> <xsp:include>org.apache.commons.jpath.JPath</xsp:include> <xsp:include>org.apache.commons.jpath.JPathContext</xsp:include> <xsp:include>sisc.data.Value</xsp:include> <xsp:include>sisc.modules.J2S</xsp:include> </xsp:structure> <xsp:logic> </xsp:logic> <xsp:init-page> Value sbean = (Value)((Environment)resolver).getAttribute("bean-dict"); Object bean = sbean.javaValue(); System.out.println ("bean class = " + bean.getClass() + ", bean = " + bean); JPathContext jpathContext = JPathContext.newContext(bean); System.out.println ("bean value = " + jpathContext.getValue(".")); </xsp:init-page> <xsl:apply-templates/> </xsp:page> </xsl:template> <xsl:template match="jpath:if"> <xsl:choose> <xsl:when test="@test"> <xsp:logic> if (jpathContext.getValue("<xsl:value-of select="@test"/>") != null) { <xsl:apply-templates/> } </xsp:logic> </xsl:when> <xsl:otherwise> <xsl:message terminate="yes"> <xsl:text>Required 'test' attribute in <jpath:if> is missing!</xsl:text> </xsl:message> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="jpath:for-each"> <xsl:variable name="old-context"> oldJPathContext<xsl:value-of select="count(ancestor-or-self::*)"/> </xsl:variable> <xsl:choose> <xsl:when test="@select"> <xsp:logic> { List selection = jpathContext.eval("<xsl:value-of select="@select"/>"); if (selection != null) { Iterator iter = selection.iterator(); JPathContext <xsl:value-of select="$old-context"/> = jpathContext; while (iter.hasNext()) { Object current = iter.next(); jpathContext = JPathContext.newContext(current); </xsp:logic> <xsl:apply-templates/> <xsp:logic> } jpathContext = <xsl:value-of select="$old-context"/>; } } </xsp:logic> </xsl:when> <xsl:otherwise> <xsl:message terminate="yes"> <xsl:text>Required 'select' attribute in <jpath:for-each> is missing!</xsl:text> </xsl:message> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="jpath:value-of"> <xsl:choose> <xsl:when test="@select"> jpathContext.getValue("<xsl:value-of select="@select"/>") </xsl:when> <xsl:otherwise> <xsl:message terminate="yes"> <xsl:text>Required 'select' attribute in <jpath:value-of> is missing!</xsl:text> </xsl:message> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="@*|*|text()|processing-instruction()"> <!-- Catch all template. Just pass along unmodified everything we don't handle. --> <xsl:copy> <xsl:apply-templates select="@*|*|text()|processing-instruction()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]