DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10956>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10956

The function value-of throws a NullPointer exception when element is null.

           Summary: The function value-of throws a NullPointer exception
                    when element is null.
           Product: XalanJ2
           Version: 2.4Dx
          Platform: All
        OS/Version: Other
            Status: NEW
          Severity: Major
          Priority: Other
         Component: org.apache.xalan.transformer
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


Run the following XML:

<?xml version="1.0" encoding="UTF-8"?>
<componentinfo>
        <component id="2" name="" type="outfitting">
                <currentversion id="2" lastmodified="Jul 18, 2002 11:11:14 AM" 
modifiedby="Juan F
Arjona" name="" version="0.0"/>
                <versions/>
                <data expanded="true" expandid="6">
                        <outfitting expanded="true" expandid="5" version="0.0">
                                <isapdata expanded="true" expandid="4">
                                        <outfittingworkbook expanded="true" 
expandid="3">
                                                <outfittingweights expanded="true" 
expandid="1">
                                                        <strakes>0.0</strakes>
                                                        
<risersupports>0.0</risersupports>
                                                        
<fairleadsupports>0.0</fairleadsupports>
                                                        <fairings>0.0</fairings>
                                                        
<chainjacksupports>0.0</chainjacksupports>
                                                        <chainlocker>0.0</chainlocker>
                                                        
<winchfoundation>0.0</winchfoundation>
                                                        
<topsidesinterface>0.0</topsidesinterface>
                                                        
<trusshardtankinterface>0.0</trusshardtankinterface>
                                                        
<trusskeeltankinterface>0.0</trusskeeltankinterface>
                                                        <jtubes>0.0</jtubes>
                                                        
<riserguidetubes>0.0</riserguidetubes>
                                                        
<miscellaneousequipment>0.0</miscellaneousequipment>
                                                        <electrical>0.0</electrical>
                                                        
<hatchesandladders>0.0</hatchesandladders>
                                                        <boatlanding>0.0</boatlanding>
                                                        
<fairleadandbendingshoe>0.0</fairleadandbendingshoe>
                                                        
<chaininboardoffairleads>0.0</chaininboardoffairleads>
                                                        <tailchain>0.0</tailchain>
                                                        
<chainjacksandsheaves>0.0</chainjacksandsheaves>
                                                        <hpu>0.0</hpu>
                                                        <winches>0.0</winches>
                                                        <piping>0.0</piping>
                                                        
<ballastpumps>0.0</ballastpumps>
                                                        <caissons>0.0</caissons>
                                                        
<liquidinpipingsystems>0.0</liquidinpipingsystems>
                                                        <anodes>0.0</anodes>
                                                        <painting>0.0</painting>
                                                        
<marinegrowth>0.0</marinegrowth>
                                                        <othera>0.0</othera>
                                                        <otherb>0.0</otherb>
                                                        <otherc>0.0</otherc>
                                                        <otherd>0.0</otherd>
                                                        
<totaloutfittingweight>0.0</totaloutfittingweight>
                                                        
<outfittingkg>0.0</outfittingkg>
                                                </outfittingweights>
                                                <outfittinginput expanded="true" 
expandid="2">
                                                        <hulltype/>
                                                        <diameter>0.0</diameter>
                                                        <freeboard>0.0</freeboard>
                                                        
<hardtankdepth>0.0</hardtankdepth>
                                                        
<softtankheight>0.0</softtankheight>
                                                        
<midsectionheight>0.0</midsectionheight>
                                                        <lengthcw>0.0</lengthcw>
                                                        <widthcw>0.0</widthcw>
                                                        
<topsidenwells>0</topsidenwells>
                                                        <topsidevcg>0.0</topsidevcg>
                                                        
<topsidetotalweight>0.0</topsidetotalweight>
                                                        
<hardtanksteelweight>0.0</hardtanksteelweight>
                                                        
<midsectionsteelweight>0.0</midsectionsteelweight>
                                                        
<softtanksteelweight>0.0</softtanksteelweight>
                                                        <numlines>0</numlines>
                                                        
<mooringfairleaddepth>0.0</mooringfairleaddepth>
                                                        
<mooringchainweight>0.0</mooringchainweight>
                                                </outfittinginput>
                                        </outfittingworkbook>
                                </isapdata>
                        </outfitting>
                </data>
        </component>
        <options allowexpand="true" edition="false" expandcommand="component_expand"
operation="Viewing" showheader="false"/>
</componentinfo>

through the XSL:

<?xml version="1.0" encoding="UTF-8"?>
<!--
   $Id: showcomponent.xsl,v 1.13 2002/07/12 00:01:59 jfarjona Exp $
    Document   : componentinfo.xsl
    Expected XML: See file componentinfo.xsd
    Created on : June 18, 2002 
    Author     : Juan F. Arjona
    Comment
        This stylesheet transforms the XML of a component into its presentation in
the webpage.
        It produces a <div> tag containing the data for the component.
        
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:fo="http://www.w3.org/1999/XSL/Format";
xmlns:lxslt="http://xml.apache.org/xslt"; xmlns:akerext="akerext"
extension-element-prefixes="akerext">
        <lxslt:component prefix="akerext" elements="uniquelog" functions="parentcount
getmaxdepth">
                <lxslt:script lang="javaclass" src="com.aker.xsl.extensions"/>
        </lxslt:component>
        <xsl:output method="html" version="1.0" encoding="UTF-8"
omit-xml-declaration="no" standalone="no" indent="no"/>
        <xsl:param name="maxdepth">
                <xsl:value-of select="number(akerext:getmaxdepth(/))"/>
        </xsl:param>
        <xsl:param name="edition">
                <xsl:value-of select="/componentinfo/options/@edition"/>
        </xsl:param>
        <xsl:template name="printtds">
                <xsl:if test=".. != /componentinfo/component/data/*[1]">
                        <td width="20" bgcolor="DDDDDD">
                                <xsl:text 
disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
                        </td>
                        <xsl:for-each select="../">
                                <xsl:call-template name="printtds"/>
                        </xsl:for-each>
                </xsl:if>
        </xsl:template>
        <xsl:template name="printxml">
                <xsl:for-each select="*">
                        <xsl:variable name="chnum">
                                <xsl:value-of select="count(*)"/>
                        </xsl:variable>
                        <xsl:comment>Now in printxml, count is: <xsl:value-of 
select="$chnum"/></xsl:comment>                   
                        <xsl:variable name="depth">
                                <xsl:value-of select="akerext:parentcount(node())"/>
                        </xsl:variable>
                        <xsl:choose>
                                <xsl:when test="$chnum >= 1">
                                        <tr>
                                                <xsl:call-template name="printtds"/>
                                                <td colspan="2" class="normalBold" 
valign="top" width="180" bgcolor="DDDDDD">
                                                        <xsl:attribute 
name="colspan"><xsl:value-of select="number($maxdepth) - number($depth)
+ number(5)"/></xsl:attribute>
                                                        <xsl:choose>
                                                                <xsl:when 
test="/componentinfo/options/@allowexpand = 'true'">
                                                                        <a 
class="normalLink">
                                                                                
<xsl:attribute name="href">?<xsl:value-of select="/componentinfo/options/              
 @expandcommand"/>=<xsl:value-of
select="@expandid"/></xsl:attribute>
                                                                                
<xsl:choose>
                                                                                       
 <xsl:when test="@expanded = 'true'">-</xsl:when>
                                                                                       
 <xsl:otherwise>+</xsl:otherwise>
                                                                                
</xsl:choose>
                                                                                
<xsl:value-of select="name()"/>
                                                                        </a>
                                                                </xsl:when>
                                                                <xsl:otherwise>
                                                                        <span 
class="normalLink">
                                                                                
<xsl:value-of select="name()"/>
                                                                        </span>
                                                                </xsl:otherwise>
                                                        </xsl:choose>
                                                </td>
                                        </tr>
                                        <xsl:choose>
                                                <xsl:when 
test="/componentinfo/options/@allowexpand = 'true'">
                                                        <xsl:if test="@expanded = 
'true'">
                                                                <xsl:call-template 
name="printxml"/>
                                                        </xsl:if>
                                                </xsl:when>
                                                <xsl:otherwise>
                                                        <xsl:call-template 
name="printxml"/>
                                                </xsl:otherwise>
                                        </xsl:choose>
                                </xsl:when>
                                <xsl:when test="$chnum = 0">
                                        <tr>
                                                <xsl:call-template name="printtds"/>
                                                <td colspan="2" class="normalBold" 
valign="top" width="180" bgcolor="DDDDDD">
                                                        <xsl:value-of select="name()"/>
                                                </td>
                                                <td class="normal" bgcolor="DDDDDD">
                                                        <xsl:attribute 
name="colspan"><xsl:value-of select="number($maxdepth) - number($depth)
+ number(3)"/></xsl:attribute>
                                                                Value: <span 
class="red10normal">
                                                                <xsl:choose>
                                                                        <xsl:when 
test="($edition = 'true')">
                                                                                <input 
type="text" size="10">
                                                                                       
 <xsl:attribute name="name">DTA_<xsl:value-of select="../@expandid"/>_<xsl:value-of
select="position()"/></xsl:attribute>
                                                                                       
 <xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
                                                                                
</input>
                                                                                
<xsl:if test="@uom">
                                                                                       
 <input type="text" size="5">
                                                                                       
         <xsl:attribute name="name"><xsl:value-of select="../@expandid"/><xsl:value-of
select="name()"/>uom</xsl:attribute>
                                                                                       
         <xsl:attribute name="value"><xsl:value-of select="@uom"/></xsl:attribute>
                                                                                       
 </input>
                                                                                
</xsl:if>
                                                                        </xsl:when>
                                                                        <xsl:otherwise>
                                                                                
<xsl:value-of select="node()/."/>
                                                                                
<xsl:value-of select="@uom"/>
                                                                        
</xsl:otherwise>
                                                                </xsl:choose>
                                                        </span>
                                                </td>
                                        </tr>
                                </xsl:when>
                        </xsl:choose>
                </xsl:for-each>
        </xsl:template>
        <xsl:template match="/">
                <xsl:comment>Edition is: <xsl:value-of select="$edition"/>
                </xsl:comment>
                <div ID="data" style="position: static; visibility: 'visible'; 
z-index:2;
width:535px; height:420px; overflow-y:auto;">
                        <table border="0" cellspacing="0" cellpadding="0" 
bgcolor="#EEEEEE" width="550">
                                <xsl:for-each select="/componentinfo/component">
                                        <xsl:if 
test="/componentinfo/options/@showheader = 'true'">
                                                <tr>
                                                        <td class="normal" 
valign="top" bgcolor="#CCCCCC">
                                                                <xsl:attribute 
name="colspan"><xsl:value-of select="number($maxdepth)+4"/></xsl:attribute>
                                                                <table border="0" 
cellspacing="0" cellpadding="0">
                                                                        <tr 
valign="top">
                                                                                <td 
width="180" class="normal" valign="top">
                                                                                       
 <xsl:value-of select="/componentinfo/options/@operation"/>
                                                                                       
 <br/>
                                                                                       
 <span class="red10normal">
                                                                                       
         <!-- Shows the first element of the data tree -->
                                                                                       
         <xsl:value-of select="name(./data/*[1])"/>
                                                                                       
 </span>
                                                                                       
 <br/>
                                                                                       
 <a href="componentsmain.jsp?editvalues=true" class="leftLinks">update</a>
                                                                                </td>
                                                                                <td 
width="250" class="normal" valign="top">
                                                                Version: <span 
class="red10normal">
                                                                                       
         <xsl:value-of select="version[1]/@version"/>
                                                                                       
 </span>
                                                                                       
 <br/>Modified on:<span class="red12normal">
                                                                                       
         <xsl:value-of select="version[1]/@lastmodified"/>
                                                                                       
 </span>
                                                                                       
 <br/>By:<span class="red12normal">
                                                                                       
         <xsl:value-of select="version[1]/@modifiedby"/>
                                                                                       
 </span>
                                                                                </td>
                                                                        </tr>
                                                                </table>
                                                        </td>
                                                </tr>
                                        </xsl:if>
                                        <xsl:comment> 
                                                Count is: <xsl:value-of 
select="count(./data/*)"/>
                                                name is: <xsl:value-of 
select="name(./data/*)"/>
                                        </xsl:comment>
                                        <xsl:for-each select="./data">
                                                <xsl:call-template name="printxml"/>
                                        </xsl:for-each>
                                </xsl:for-each>
                        </table>
                </div>
        </xsl:template>
</xsl:stylesheet>


Using XALAN-J 2.4.D1.  Throws a NullPointer exception because the node HullType
is empty, will work if you put something on that node.

Reply via email to