Hello,
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 the XForms document "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=''
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="" 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>
...
-------------------------------------------------------------------------------------------------------------
MY QUESTIONS:
1.) I imported the complete "src"-path (org and tools) into my
Eclipse-project.
Do further classes have to be imported for my purpose ?
2.) If I transform the UI-DOM from the Tomcat console (as input)
with the Stylesheet "html4.xsl" and XALAN outside of the Servlet
environment, the error in the place in the Stylesheet,
specified above, arises.
Within the Servlet environment the transformation functions
perfectly.
What causes the difference?
3.) Why does the error message point to the fictitious stylesheet
"dummy.xsl" ?
4.) Why does the log point to the project directory
file:///D:/Programmierung/Eclipse%203.0/workspace/chibatest%200.9.6/dummy.xsl,
and not to
file:///D:/Programmierung/Eclipse%203.0/workspace/chibatest%200.9.6/javax.xml.transform.dom.DOMSource
?
5.) If I deactivate the error causing lines in the stylesheet
"html4.xsl", or if I do without groups and repeats in the XForms
document, the transformation runs off error free and I
receive a HTML-document (over a responseWriter).
But the HTML document contains no "class"-attributes (e.g.
<span class="trigger valid readwrite optional enabled">).
Can the error be caused by a not found CSS class (in the
example: "minimal-group-label") ?
Note: The CSS class for "minimal-group" is found correct.
Does the CSS files have to be present at a certain place?
I thank you for your efforts and hope for fast answer.
best regards from germany
Stefan Grosser
|
|
Try Searching:
servers, voip, java, networking, microsoft ...
|
|
|
|