[xsl] Problem with xsl handling xml <element/>

Subject: [xsl] Problem with xsl handling xml <element/>
From: "Mikael Petterson \(KI/EAB\)" <mikael.petterson@xxxxxxxxxxxx>
Date: Mon, 16 May 2005 14:16:44 +0200
Hi,

We are transforming and xml into java code using xsl/xslt in java.
Ny xsl look like this;

......
<!-- Start: Sequence -->
     <xsl:when test="sequence">
     <!-- Check if <sequence>-element has no <length> attribute.-->
     <xsl:if test="not(length)">
      <xsl:message terminate="yes">
        <!-- class name and attribute error message -->
         Attribute:<xsl:value-of select="../@name"/>
	     Class:    <xsl:value-of select="../../@name"/>
         Error:    sequence missing child element, length.
       </xsl:message>
     </xsl:if>
........

When I execute my transformation it fails ( see error below).
The following xml is ok:

<dataType>
                 <sequence>
                     <long>
                        <range>
                            <min>-500</min> <max>500</max>
                        </range>
                     </long>
                     <length>12</length>
                 </sequence>
 </dataType>

But when this xml is tranformed ( below) it fails:

<dataType>
                 <sequence>
                    <moRef name="ManagedObject"/>
                     <length>5</length>
                 </sequence>
</dataType>

I interpret it as when I have a single <element/> I get the error but when I
have <element></element> it is a ok.
Do I have to make any settings to the xml transformation?

All hints appreciated.

Cheers,

//Mikael

Transformation error:
===============
 file:///vobs/rbs/sw/rbssw_tools/boam_tools/xml2j/xsl/interface.xsl;
Line #482; Column #36;
     [java]
     [java]          Attribute:reservedBy
     [java]          Class:    AcDevice
     [java]          Error:    sequence missing child element, length.
     [java]

     [java] ** Transformation error
     [java]    Stylesheet directed termination
     [java] ; SystemID:
file:///vobs/rbs/sw/rbssw_tools/boam_tools/xml2j/xsl/int
erface.xsl; Line#: 48; Column#: 55
     [java] javax.xml.transform.TransformerException: Stylesheet directed
termin
ation
     [java]     at
org.apache.xalan.templates.ElemMessage.execute(ElemMessage.ja
va:124)
     [java]     at
org.apache.xalan.transformer.TransformerImpl.executeChildTemp
lates(TransformerImpl.java:2336)
     [java]     at org.apache.xalan.templates.ElemIf.execute(ElemIf.java:161)
     [java]     at
org.apache.xalan.transformer.TransformerImpl.executeChildTemp
lates(TransformerImpl.java:2336)
     [java]     at
org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java
:127)
     [java]     at
org.apache.xalan.templates.ElemApplyTemplates.transformSelect
edNodes(ElemApplyTemplates.java:395)
     [java]     at
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApp
lyTemplates.java:177)
     [java]     at
org.apache.xalan.templates.ElemApplyTemplates.transformSelect
edNodes(ElemApplyTemplates.java:395)
     [java]     at
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApp
lyTemplates.java:177)
     [java]     at
org.apache.xalan.transformer.TransformerImpl.executeChildTemp
lates(TransformerImpl.java:2336)
     [java]     at
org.apache.xalan.transformer.TransformerImpl.executeChildTemp
lates(TransformerImpl.java:2389)
     [java]     at
org.apache.xalan.transformer.TransformerImpl.executeChildTemp
lates(TransformerImpl.java:2255)
     [java]     at org.apache.xalan.lib.Redirect.write(Redirect.java:212)
     [java]     at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown
Source)
     [java]     at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMet
hodAccessorImpl.java:25)
     [java]     at java.lang.reflect.Method.invoke(Method.java:324)
     [java]     at
org.apache.xalan.extensions.ExtensionHandlerJavaClass.process
Element(ExtensionHandlerJavaClass.java:495)
     [java]     at
org.apache.xalan.templates.ElemExtensionCall.execute(ElemExte
nsionCall.java:230)
     [java]     at
org.apache.xalan.templates.ElemForEach.transformSelectedNodes
(ElemForEach.java:420)
     [java]     at
org.apache.xalan.templates.ElemForEach.execute(ElemForEach.ja
va:259)
     [java]     at
org.apache.xalan.templates.ElemApplyTemplates.transformSelect
edNodes(ElemApplyTemplates.java:395)
     [java]     at
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApp
lyTemplates.java:177)
     [java]     at
org.apache.xalan.transformer.TransformerImpl.executeChildTemp
lates(TransformerImpl.java:2336)
     [java]     at
org.apache.xalan.transformer.TransformerImpl.applyTemplateToN
ode(TransformerImpl.java:2202)
     [java]     at
org.apache.xalan.transformer.TransformerImpl.transformNode(Tr
ansformerImpl.java:1276)
     [java]     at
org.apache.xalan.transformer.TransformerImpl.transform(Transf
ormerImpl.java:673)
     [java]     at
org.apache.xalan.transformer.TransformerImpl.transform(Transf
ormerImpl.java:1192)
     [java]     at
org.apache.xalan.transformer.TransformerImpl.transform(Transf
ormerImpl.java:1170)
     [java]     at se.ericsson.xml2j.common.Main.main(Main.java:90)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
     [java]     at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcces
sorImpl.java:39)
     [java]     at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMet
hodAccessorImpl.java:25)
     [java]     at java.lang.reflect.Method.invoke(Method.java:324)
     [java]     at
org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.jav
a:193)
     [java]     at
org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava
.java:130)
     [java]     at org.apache.tools.ant.taskdefs.Java.run(Java.java:705)
     [java]     at
org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:177)
     [java]     at org.apache.tools.ant.taskdefs.Java.execute(Java.java:83)
     [java]     at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.ja
va:275)
     [java]     at org.apache.tools.ant.Task.perform(Task.java:364)
     [java]     at org.apache.tools.ant.Target.execute(Target.java:341)
     [java]     at org.apache.tools.ant.Target.performTasks(Target.java:369)
     [java]     at
org.apache.tools.ant.Project.executeTarget(Project.java:1214)
     [java]     at
org.apache.tools.ant.Project.executeTargets(Project.java:1062
)
     [java]     at org.apache.tools.ant.Main.runBuild(Main.java:673)
     [java]     at org.apache.tools.ant.Main.startAnt(Main.java:188)
     [java]     at
org.apache.tools.ant.launch.Launcher.run(Launcher.java:196)
     [java]     at
org.apache.tools.ant.launch.Launcher.main(Launcher.java:55)

Current Thread