_Hello Joern,_
First of all, a large respect for your Chiba achievements!
Unfortunately, I have the following problem:
I would like to lift out the Chiba 0.9.6 from its servlet environment.
In order to realize this I address the Chiba processor from an external
class.
I use all original files, like "html4.xsl", "html-form-controls.xsl" and
"hello.xhtml" for it.
-------------------------------------------------------------------------------------------------------------
/My test class:/
package org.chiba.main;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import org.chiba.xml.xforms.exception.XFormsException;
import org.chiba.adapter.web.ServletAdapter;
public class ExtStart {
public void to_servlet() throws IOException, XFormsException {
// Konfiguration und indirekte Instantiierung der ChibaBean
ServletAdapter sap = new ServletAdapter();
sap.setFormPath("D:\\DA\\Test\\source\\hello.xhtml");
sap.setActionUrl("itemset.xml");
sap.setStylesheet("D:\\DA\\Test\\xslt\\html4.xsl");
sap.setStylesheetPath("D:\\DA\\Test\\xslt");
sap.setCSS("D:\\DA\\Test\\styles\\mozilla-xforms.css");
sap.init();
// Erzeugen des UserInterface
OutputStream out = new FileOutputStream(
"D:\\DA\\Test\\final.html" );
Writer w = new BufferedWriter(new OutputStreamWriter( out,
"UTF-8" ));
System.out.println(">>> Building User Interface ...");
sap.buildUI(w);
System.out.println(">>> Die Datei final.html wurde erzeugt.");
}
public static void main(String[] args) throws IOException,
XFormsException {
ExtStart start = new ExtStart();
start.to_servlet();
}
}
-------------------------------------------------------------------------------------------------------------
The DOMSource, which is provided by the original processor, is also
perfectly identical to the DOMSource in my application.
Therefore, I assume that my XForms processor (thus the ChibaBean)
processes the input correctly.
The problem arises in the BuildUI phase, if Xalans "transform"-method is
called: a "NullPointerException" occurs.
(The arguments, with which the transform-method is called from the
generate-method, are correct.)
-------------------------------------------------------------------------------------------------------------
/My Log:/
DEBUG: using form: D:\DA\Test\source\hello.xhtml
DEBUG: process: start
DEBUG: ensuring namespace: xforms:action='jsp/debug-instance.jsp'
DEBUG: ensuring namespace: xforms:method='post'
DEBUG: ensuring namespace: xforms:replace='all'
DEBUG: ensuring namespace: xforms:nodeset='name'
DEBUG: ensuring namespace: xforms:required='true()'
DEBUG: ensuring namespace: xforms:appearance='minimal'
DEBUG: ensuring namespace: xforms:bind='bind1'
DEBUG: ensuring namespace: xforms:appearance='minimal'
DEBUG: ensuring id: id='C1'
DEBUG: ensuring id: id='C2'
DEBUG: ensuring namespace: xforms:submission='debug'
DEBUG: process: finish
DEBUG: Formpath: D:\DA\Test\source\hello.xhtml
DEBUG: CSS-File: D:\DA\Test\styles\mozilla-xforms.css
DEBUG: XSLT stylesheet: D:\DA\Test\xslt\html4.xsl
DEBUG: action URL: itemset.xml
DEBUG: loading config from 'default.xml' ...
DEBUG: CSS: D:\DA\Test\styles\mozilla-xforms.css
DEBUG: init
DEBUG: creating event xforms-model-construct
DEBUG: dispatch: xforms-model-construct to [xforms:model: null]
DEBUG: dispatch: cancelable: false
DEBUG: dispatch: bubbles: true
DEBUG: [xforms:model id='C-1'] model construct
DEBUG: [xforms:instance id='C-2'] init
DEBUG: [xforms:bind id='bind1'] init
DEBUG: [xforms:bind id='bind1'] init: resolved location path: /*[1]/name
DEBUG: [xforms:bind id='bind1'] init: initializing model item for path
'/data[1]/name[1]'
DEBUG: [xforms:instance id='C-2'] getDataItem: looking for canonical
path '/data[1]/name[1]'
DEBUG: [xforms:instance id='C-2'] getDataItem: model item created for
canonical path '/data[1]/name[1]'
DEBUG: [xforms:submission id='debug'] init
DEBUG: creating event xforms-rebuild
DEBUG: dispatch: xforms-rebuild to [xforms:model: null]
DEBUG: dispatch: cancelable: true
DEBUG: dispatch: bubbles: true
DEBUG: [xforms:model id='C-1'] rebuild
DEBUG: [xforms:model id='C-1'] rebuild: creating main dependency graph
for 1 bind(s)
DEBUG: [xforms:instance id='C-2'] getDataItem: looking for canonical
path '/data[1]/name[1]'
DEBUG: built vertex required(true())
DEBUG: evaluated expression 'true()' to 'true'
DEBUG: creating event xforms-recalculate
DEBUG: dispatch: xforms-recalculate to [xforms:model: null]
DEBUG: dispatch: cancelable: true
DEBUG: dispatch: bubbles: true
DEBUG: [xforms:model id='C-1'] recalculate
DEBUG: [xforms:model id='C-1'] recalculate: creating sub dependency
graph for 1 node(s)
DEBUG: starting recalculation ...
DEBUG: evaluated expression 'true()' to 'true'
DEBUG: ... recalculation finished
DEBUG: creating event xforms-revalidate
DEBUG: dispatch: xforms-revalidate to [xforms:model: null]
DEBUG: dispatch: cancelable: true
DEBUG: dispatch: bubbles: true
DEBUG: [xforms:model id='C-1'] revalidate
DEBUG: [xforms:model id='C-1'] revalidate: revalidating 1 instance(s)
DEBUG: [xforms:instance id='C-2'] getDataItem: looking for canonical
path '/data[1]'
DEBUG: [xforms:instance id='C-2'] getDataItem: model item created for
canonical path '/data[1]'
DEBUG: computed valid node /data[1]
DEBUG: [xforms:instance id='C-2'] getDataItem: looking for canonical
path '/data[1]/name[1]'
DEBUG: computed invalid node /data[1]/name[1]
DEBUG: creating event xforms-model-construct-done
DEBUG: dispatch: xforms-model-construct-done to [xforms:model: null]
DEBUG: dispatch: cancelable: false
DEBUG: dispatch: bubbles: true
DEBUG: [xforms:model id='C-1'] model construct done
DEBUG: [xforms:model id='C-1'] model construct done: starting ui
initialization
DEBUG: [xforms:group id='C-3'] init
DEBUG: [xforms:label id='C-4'] init
DEBUG: [xforms:instance id='C-2'] getDataItem: looking for canonical
path '/data[1]/name[1]'
DEBUG: [xforms:instance id='C-2'] getDataItem: looking for canonical
path '/data[1]/name[1]'
DEBUG: [xforms:label id='C-5'] init
DEBUG: [xforms:alert id='C-6'] init
DEBUG: [xforms:hint id='C-7'] init
DEBUG: [xforms:group id='C-8'] init
DEBUG: [xforms:trigger id='C1'] init
DEBUG: [xforms:label id='C-11'] init
DEBUG: [xforms:action id='C-12'] init
DEBUG: [xforms:trigger id='reset-btn'] init
DEBUG: [xforms:label id='C-11'] init
DEBUG: [xforms:action id='C-12'] init
WARN: [xforms:reset id='reset'] init: the 'model' attribute is missing,
assuming parent model 'C-1'
DEBUG: creating event xforms-ready
DEBUG: dispatch: xforms-ready to [xforms:model: null]
DEBUG: dispatch: cancelable: false
DEBUG: dispatch: bubbles: true
DEBUG: [xforms:model id='C-1'] ready
>>> Building User Interface ...
DEBUG: setting UI generator param 'phase': init
DEBUG: setting UI generator param 'data-prefix': d_
DEBUG: setting UI generator param 'trigger-prefix': t_
DEBUG: setting UI generator param 'user-agent': null
DEBUG: received input node ...
<?xml version="1.0" encoding="ISO-8859-1"?>
<html xml:base="http://localhost:8080/chiba-0.9.6/"
xmlns="http://www.w3.org/2002/06/xhtml2"
xmlns:chiba="http://chiba.sourceforge.net/2003/08/xforms"
xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<title>hello</title>
<xforms:model id="C-1">
<xforms:submission id="debug"
xforms:action="jsp/debug-instance.jsp" xforms:method="post"
xforms:replace="all"/>
<xforms:instance id="C-2" xmlns="">
<data>
<name/>
</data>
</xforms:instance>
<xforms:bind id="bind1" xforms:nodeset="name"
xforms:required="true()"/>
</xforms:model>
</head>
<body>
<xforms:group id="C-3" xforms:appearance="minimal">
<xforms:label id="C-4">Hello</xforms:label>
<xforms:input id="name-input" xforms:bind="bind1">
<xforms:label id="C-5">Your name: </xforms:label>
<xforms:alert id="C-6">Please put your name
here</xforms:alert>
<xforms:hint id="C-7">Please input your name into this
field</xforms:hint>
<chiba:data chiba:enabled="true" chiba:readonly="false"
chiba:required="true" chiba:type="string" chiba:valid="true"
chiba:visited="false" chiba:xpath="/data[1]/name[1]"></chiba:data>
</xforms:input>
<xforms:group id="C-8" xforms:appearance="minimal">
<!-- <xforms:submit id="C-9"
submission="debug">-->
<!-- <xforms:label
id="C-10">Debug</xforms:label>-->
<!-- </xforms:submit>-->
<xforms:trigger id="C1">
<xforms:label id="C-11">Debug</xforms:label>
<xforms:action id="C-12">
<xforms:send id="C2" xforms:submission="debug"/>
</xforms:action>
<chiba:data chiba:enabled="true"
chiba:readonly="false" chiba:required="false" chiba:valid="true"
chiba:visited="false"/>
</xforms:trigger>
<xforms:trigger id="reset-btn">
<xforms:label id="C-11">Reset</xforms:label>
<xforms:action id="C-12">
<xforms:reset id="reset"/>
</xforms:action>
<chiba:data chiba:enabled="true"
chiba:readonly="false" chiba:required="false" chiba:valid="true"
chiba:visited="false"/>
</xforms:trigger>
</xforms:group>
</xforms:group>
</body>
</html>
DEBUG: org.apache.xalan.processor.TransformerFactoryImpl@6e293a
DEBUG: fileName: html4.xsl
DEBUG: URIResolver: org.chiba.tools.xslt.XSLTGenerator@54a328
DEBUG: loadFromDisk: D:\DA\Test\xslt\html4.xsl
stylesheet filename to load: html4.xsl
DEBUG: Stylesheet 'html4.xsl' will be compiled
DEBUG: URIRESOLVER CALLED
DEBUG: URIRESOLVER href: html-form-controls.xsl
DEBUG: URIRESOLVER base: D:\Programmierung\Eclipse
3.0\workspace\chibatest 0.9.6\*dummy*.xsl *????????*
DEBUG: loadFromDisk: D:\DA\Test\xslt\html-form-controls.xsl
stylesheet filename to load: html-form-controls.xsl
DEBUG: adding html4.xsl to cache
org.apache.xalan.templates.StylesheetRoot@11671b2
TransformerParameters:
>>> action-url: itemset.xml
>>> data-prefix: d_
>>> debug-enabled: true
>>> trigger-prefix: t_
>>> phase: init
>>> css-file: D:\DA\Test\styles\mozilla-xforms.css
>>> selector-prefix: s_
>>> DOM Source: javax.xml.transform.dom.DOMSource@c9d92c
>>> Stylesheet: html-default / InputNode: [#document: null] /
org.chiba.tools.xslt.XSLTGenerator@54a328
file:///D:/Programmierung/Eclipse%203.0/workspace/chibatest%200.9.6/dummy.xsl;
Zeilennummer0; Spaltennummer0; processing phase:
init
file:///D:/Programmierung/Eclipse%203.0/workspace/chibatest%200.9.6/dummy.xsl;
Zeilennummer0; Spaltennummer0; ********** XSLT MESSAGES ARE ENABLED
file:///D:/Programmierung/Eclipse%203.0/workspace/chibatest%200.9.6/dummy.xsl;
Zeilennummer0; Spaltennummer0; html
file:///D:/Programmierung/Eclipse%203.0/workspace/chibatest%200.9.6/dummy.xsl;
Zeilennummer0; Spaltennummer0; head
file:///D:/Programmierung/Eclipse%203.0/workspace/chibatest%200.9.6/dummy.xsl;
Zeilennummer0; Spaltennummer0; user agent:
default
file:///D:/Programmierung/Eclipse%203.0/workspace/chibatest%200.9.6/dummy.xsl;
Zeilennummer0; Spaltennummer0; body
file:///D:/Programmierung/Eclipse%203.0/workspace/chibatest%200.9.6/dummy.xsl;
Zeilennummer0; Spaltennummer0; found minimal group
file:///D:/Programmierung/Eclipse%203.0/workspace/chibatest%200.9.6/dummy.xsl;
Zeilennummer0; Spaltennummer0; handling group label ...
org.chiba.xml.xforms.exception.XFormsException
at org.chiba.tools.xslt.XSLTGenerator.generate(XSLTGenerator.java:195)
at org.chiba.adapter.web.ServletAdapter.buildUI(ServletAdapter.java:355)
at org.chiba.main.ExtStart.to_servlet(ExtStart.java:33)
at org.chiba.main.ExtStart.main(ExtStart.java:41)
*; SystemID:
file:///D:/Programmierung/Eclipse%203.0/workspace/chibatest%200.9.6/dummy.xsl*
javax.xml.transform.TransformerException: java.lang.NullPointerException
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2341)
at
org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2202)
at
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1276)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:673)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1192)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1170)
at org.chiba.tools.xslt.XSLTGenerator.generate(XSLTGenerator.java:192)
at org.chiba.adapter.web.ServletAdapter.buildUI(ServletAdapter.java:355)
at org.chiba.main.ExtStart.to_servlet(ExtStart.java:33)
at org.chiba.main.ExtStart.main(ExtStart.java:41)
Caused by: java.lang.NullPointerException
at
org.apache.xml.serializer.ToHTMLStream.processAttribute(ToHTMLStream.java:939)
at
org.apache.xml.serializer.ToHTMLStream.processAttributes(ToHTMLStream.java:1628)
at
org.apache.xml.serializer.ToHTMLStream.endElement(ToHTMLStream.java:865)
at
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:707)
at
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395)
at
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:177)
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
... 9 more
---------
java.lang.NullPointerException
at
org.apache.xml.serializer.ToHTMLStream.processAttribute(ToHTMLStream.java:939)
at
org.apache.xml.serializer.ToHTMLStream.processAttributes(ToHTMLStream.java:1628)
at
org.apache.xml.serializer.ToHTMLStream.endElement(ToHTMLStream.java:865)
at
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:707)
at
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395)
at
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:177)
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
at
org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2202)
at
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1276)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:673)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1192)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1170)
at org.chiba.tools.xslt.XSLTGenerator.generate(XSLTGenerator.java:192)
at org.chiba.adapter.web.ServletAdapter.buildUI(ServletAdapter.java:355)
at org.chiba.main.ExtStart.to_servlet(ExtStart.java:33)
at org.chiba.main.ExtStart.main(ExtStart.java:41)
; SystemID:
file:///D:/Programmierung/Eclipse%203.0/workspace/chibatest%200.9.6/dummy.xsl
javax.xml.transform.TransformerException: java.lang.NullPointerException
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2341)
at
org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2202)
at
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1276)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:673)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1192)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1170)
at org.chiba.tools.xslt.XSLTGenerator.generate(XSLTGenerator.java:192)
at org.chiba.adapter.web.ServletAdapter.buildUI(ServletAdapter.java:355)
at org.chiba.main.ExtStart.to_servlet(ExtStart.java:33)
at org.chiba.main.ExtStart.main(ExtStart.java:41)
Caused by: java.lang.NullPointerException
at
org.apache.xml.serializer.ToHTMLStream.processAttribute(ToHTMLStream.java:939)
at
org.apache.xml.serializer.ToHTMLStream.processAttributes(ToHTMLStream.java:1628)
at
org.apache.xml.serializer.ToHTMLStream.endElement(ToHTMLStream.java:865)
at
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:707)
at
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395)
at
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:177)
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
... 9 more
---------
java.lang.NullPointerException
at
org.apache.xml.serializer.ToHTMLStream.processAttribute(ToHTMLStream.java:939)
at
org.apache.xml.serializer.ToHTMLStream.processAttributes(ToHTMLStream.java:1628)
at
org.apache.xml.serializer.ToHTMLStream.endElement(ToHTMLStream.java:865)
at
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:707)
at
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395)
at
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:177)
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336)
at
org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2202)
at
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1276)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:673)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1192)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1170)
at org.chiba.tools.xslt.XSLTGenerator.generate(XSLTGenerator.java:192)
at org.chiba.adapter.web.ServletAdapter.buildUI(ServletAdapter.java:355)
at org.chiba.main.ExtStart.to_servlet(ExtStart.java:33)
at org.chiba.main.ExtStart.main(ExtStart.java:41)
Exception in thread "main"
-------------------------------------------------------------------------------------------------------------
In the XSL-Stylesheet "html4.xsl" the first problem is placed here:
-------------------------------------------------------------------------------------------------------------
/stylesheet "html4.xsl": /
...
<!-- ###################################### MINIMAL GROUP
###################################### -->
<!-- handle 'minimal' group - this is the default for groups and
only annotates CSS to labels + controls and
outputs them in a kind of flow-layout -->
<xsl:template match="xforms:group[@xforms:appearance='minimal']">
<xsl:if test="$debug-enabled='true'">
<xsl:message>found minimal group</xsl:message>
</xsl:if>
<!-- ***** ignore this group if not enabled ***** -->
<!-- <xsl:if
test="not(chiba:data/@chiba:enabled='false')">-->
<xsl:variable name="group-css">
<xsl:call-template name="assembleClasses"/>
</xsl:variable>
<div class="{concat('minimal-group',$group-css)}" id="{@id}">
<xsl:copy-of select="@class"/>
<xsl:for-each select="*">
<xsl:choose>
<!-- **** handle group label ***** -->
<xsl:when test="self::xforms:label"
xmlns:xforms="http://www.w3.org/2002/xforms">
<xsl:if test="$debug-enabled='true'">
<xsl:message>handling group label
...</xsl:message>
</xsl:if>
*<span class="minimal-group-label label">*
<xsl:apply-templates select="."/>
*</span>*
</xsl:when>
...
-------------------------------------------------------------------------------------------------------------