You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by bu...@apache.org on 2002/07/17 17:51:07 UTC

DO NOT REPLY [Bug 10900] New: - current() throws NullPointerException

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=10900>.
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=10900

current() throws NullPointerException

           Summary: current() throws NullPointerException
           Product: XalanJ2
           Version: 2.3
          Platform: PC
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Blocker
          Priority: Other
         Component: org.apache.xpath
        AssignedTo: xalan-dev@xml.apache.org
        ReportedBy: jespdj@hotmail.com


I get a NullPointerException which seems to happen when the current() function 
is called in the stylesheet below, when called with the supplied XML document.

Stylesheet
==========
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8"/>

<!-- Batch template -->
<xsl:template match="/ECHBATCH">
<SWBATCH>
    <xsl:apply-templates/>
</SWBATCH>
</xsl:template>

<!-- Prevent copying the content of elements that are not recognised directly --
>
<xsl:template match="/ECHBATCH/MESSAGE/*"/>

<xsl:template match="/ECHBATCH/MESSAGE/MEDTD1">
<BSTSUPD>
    <xsl:for-each select="../MEDTD2">
        <METERED_USAGE>
            <!-- Previous meter reading -->
            <xsl:if test="following-sibling::MEDTD3[count(preceding-
sibling::MEDTD2[1]|current())=1 and QUANTITY_TYPE_ID='220' and 
QUANTITY_DATE_TYPE='367']">
            <METER_PREV>
                <METER_READING_1><xsl:value-of select="(following-
sibling::MEDTD3[count(preceding-sibling::MEDTD2[1]|current())=1 and 
QUANTITY_TYPE_ID='220' and QUANTITY_DATE_TYPE='367'])
[1]/QUANTITY"/></METER_READING_1>
                <METER_READING_2><xsl:value-of select="(following-
sibling::MEDTD3[count(preceding-sibling::MEDTD2[1]|current())=1 and 
QUANTITY_TYPE_ID='220' and QUANTITY_DATE_TYPE='367'])
[2]/QUANTITY"/></METER_READING_2>
                <TIMEFRAME_ID_1><xsl:value-of select="(following-sibling::MEDTD3
[count(preceding-sibling::MEDTD2[1]|current())=1 and QUANTITY_TYPE_ID='220' and 
QUANTITY_DATE_TYPE='367'])[1]/TIMEFRAME_ID"/></TIMEFRAME_ID_1>
                <TIMEFRAME_ID_2><xsl:value-of select="(following-sibling::MEDTD3
[count(preceding-sibling::MEDTD2[1]|current())=1 and QUANTITY_TYPE_ID='220' and 
QUANTITY_DATE_TYPE='367'])[2]/TIMEFRAME_ID"/></TIMEFRAME_ID_2>
                <METER_READING_TYPE><xsl:value-of select="(following-
sibling::MEDTD3[count(preceding-sibling::MEDTD2[1]|current())=1 and 
QUANTITY_TYPE_ID='220' and 
QUANTITY_DATE_TYPE='367'])/QUALIFICATION"/></METER_READING_TYPE>
                <METER_READING_DATE_TYPE>367</METER_READING_DATE_TYPE>
                <METER_READING_DATE><xsl:value-of select="(following-
sibling::MEDTD3[count(preceding-sibling::MEDTD2[1]|current())=1 and 
QUANTITY_TYPE_ID='220' and 
QUANTITY_DATE_TYPE='367'])/QUANTITY_DATE"/></METER_READING_DATE>
                <UNIT_OF_MEASURE_ID><xsl:value-of select="(following-
sibling::MEDTD3[count(preceding-sibling::MEDTD2[1]|current())=1 and 
QUANTITY_TYPE_ID='220' and 
QUANTITY_DATE_TYPE='367'])/MEASURE_UNIT_ID"/></UNIT_OF_MEASURE_ID>
            </METER_PREV>
            </xsl:if>
        </METERED_USAGE>
    </xsl:for-each>
</BSTSUPD>
</xsl:template>

</xsl:stylesheet>


Example XML file
================
<?xml version="1.0" encoding="UTF-8"?>
<ECHBATCH>
    <HEADER>
        <MESSAGE_ID>210</MESSAGE_ID>
        <FILENAME>ECH210_20020601_0000.dat</FILENAME>
        <TIMESTAMP>20020601_0000</TIMESTAMP>
        <VERSION>2.0</VERSION>
        <SENDER_EAN>8712423010208</SENDER_EAN>
        <RECEIVER_EAN>8712423009714</RECEIVER_EAN>
    </HEADER>
    <MESSAGE>
        <MEDTD1>
            <RECORD_ID>MEDTD1</RECORD_ID>
            <SWITCH_ID>12345</SWITCH_ID>
            <CONNECT_EAN>887766554401480009</CONNECT_EAN>
            <REASON_ID>E03</REASON_ID>
            <PERIOD_START_DATE>20020101</PERIOD_START_DATE>
            <PERIOD_END_DATE>20020401</PERIOD_END_DATE>
            <SUBMITTED_DATE>20020501</SUBMITTED_DATE>
            <SUBMITTED_TIME>1200</SUBMITTED_TIME>
            <MARKET_SEGMENT>23</MARKET_SEGMENT>
            <NET_OP_EAN>8700000000003</NET_OP_EAN>
        </MEDTD1>
        <MEDTD2>
            <RECORD_ID>MEDTD2</RECORD_ID>
            <METERNO>123456789012345678</METERNO>
            <NO_DIALS>19</NO_DIALS>
        </MEDTD2>
        <MEDTD3>
            <RECORD_ID>MEDTD3</RECORD_ID>
            <QUANTITY>1234657890.0</QUANTITY>
            <QUANTITY_TYPE_ID>220</QUANTITY_TYPE_ID>
            <QUANTITY_DATE>20020501</QUANTITY_DATE>
            <QUANTITY_DATE_TYPE>367</QUANTITY_DATE_TYPE>
            <MEASURE_UNIT_ID>KWH</MEASURE_UNIT_ID>
            <TIMEFRAME_ID>E10</TIMEFRAME_ID>
            <QUALIFICATION>81</QUALIFICATION>
            <NO_DIGITS>10</NO_DIGITS>
        </MEDTD3>
        <MEDTD3>
            <RECORD_ID>MEDTD3</RECORD_ID>
            <QUANTITY>1234657890.0</QUANTITY>
            <QUANTITY_TYPE_ID>220</QUANTITY_TYPE_ID>
            <QUANTITY_DATE>20020501</QUANTITY_DATE>
            <QUANTITY_DATE_TYPE>367</QUANTITY_DATE_TYPE>
            <MEASURE_UNIT_ID>KWH</MEASURE_UNIT_ID>
            <TIMEFRAME_ID>E11</TIMEFRAME_ID>
            <QUALIFICATION>81</QUALIFICATION>
            <NO_DIGITS>10</NO_DIGITS>
        </MEDTD3>
    </MESSAGE>
    <MESSAGE>
        <MEDTD1>
            <RECORD_ID>MEDTD1</RECORD_ID>
            <REQUEST_ID>12345</REQUEST_ID>
            <CONNECT_EAN>887766554401490008</CONNECT_EAN>
            <REASON_ID>001</REASON_ID>
            <PERIOD_START_DATE>20020101</PERIOD_START_DATE>
            <PERIOD_END_DATE>20020401</PERIOD_END_DATE>
            <SUBMITTED_DATE>20020501</SUBMITTED_DATE>
            <SUBMITTED_TIME>1200</SUBMITTED_TIME>
            <MARKET_SEGMENT>23</MARKET_SEGMENT>
            <NET_OP_EAN>8700000000003</NET_OP_EAN>
        </MEDTD1>
        <MEDTD2>
            <RECORD_ID>MEDTD2</RECORD_ID>
            <METERNO>123456789012345678</METERNO>
            <NO_DIALS>19</NO_DIALS>
        </MEDTD2>
        <MEDTD3>
            <RECORD_ID>MEDTD3</RECORD_ID>
            <QUANTITY>1234657890.0</QUANTITY>
            <QUANTITY_TYPE_ID>220</QUANTITY_TYPE_ID>
            <QUANTITY_DATE>20020501</QUANTITY_DATE>
            <QUANTITY_DATE_TYPE>367</QUANTITY_DATE_TYPE>
            <MEASURE_UNIT_ID>KWH</MEASURE_UNIT_ID>
            <TIMEFRAME_ID>E10</TIMEFRAME_ID>
            <QUALIFICATION>86</QUALIFICATION>
            <NO_DIGITS>10</NO_DIGITS>
        </MEDTD3>
        <MEDTD3>
            <RECORD_ID>MEDTD3</RECORD_ID>
            <QUANTITY>1234657890.0</QUANTITY>
            <QUANTITY_TYPE_ID>220</QUANTITY_TYPE_ID>
            <QUANTITY_DATE>20020501</QUANTITY_DATE>
            <QUANTITY_DATE_TYPE>367</QUANTITY_DATE_TYPE>
            <MEASURE_UNIT_ID>KWH</MEASURE_UNIT_ID>
            <TIMEFRAME_ID>E11</TIMEFRAME_ID>
            <QUALIFICATION>86</QUALIFICATION>
            <NO_DIGITS>10</NO_DIGITS>
        </MEDTD3>
    </MESSAGE>
    <MESSAGE>
        <MEDTD1>
            <RECORD_ID>MEDTD1</RECORD_ID>
            <REQUEST_ID>12345</REQUEST_ID>
            <CONNECT_EAN>887766554401500004</CONNECT_EAN>
            <REASON_ID>E24</REASON_ID>
            <PERIOD_START_DATE>20020101</PERIOD_START_DATE>
            <PERIOD_END_DATE>20020401</PERIOD_END_DATE>
            <SUBMITTED_DATE>20020501</SUBMITTED_DATE>
            <SUBMITTED_TIME>1200</SUBMITTED_TIME>
            <MARKET_SEGMENT>23</MARKET_SEGMENT>
            <NET_OP_EAN>8700000000003</NET_OP_EAN>
        </MEDTD1>
        <MEDTD2>
            <RECORD_ID>MEDTD2</RECORD_ID>
            <METERNO>123456789012345678</METERNO>
            <NO_DIALS>19</NO_DIALS>
        </MEDTD2>
        <MEDTD3>
            <RECORD_ID>MEDTD3</RECORD_ID>
            <QUANTITY>1234657890.0</QUANTITY>
            <QUANTITY_TYPE_ID>220</QUANTITY_TYPE_ID>
            <QUANTITY_DATE>20020501</QUANTITY_DATE>
            <QUANTITY_DATE_TYPE>367</QUANTITY_DATE_TYPE>
            <MEASURE_UNIT_ID>KWH</MEASURE_UNIT_ID>
            <TIMEFRAME_ID>E10</TIMEFRAME_ID>
            <QUALIFICATION>86</QUALIFICATION>
            <NO_DIGITS>10</NO_DIGITS>
        </MEDTD3>
        <MEDTD3>
            <RECORD_ID>MEDTD3</RECORD_ID>
            <QUANTITY>1234657890.0</QUANTITY>
            <QUANTITY_TYPE_ID>220</QUANTITY_TYPE_ID>
            <QUANTITY_DATE>20020501</QUANTITY_DATE>
            <QUANTITY_DATE_TYPE>367</QUANTITY_DATE_TYPE>
            <MEASURE_UNIT_ID>KWH</MEASURE_UNIT_ID>
            <TIMEFRAME_ID>E10</TIMEFRAME_ID>
            <QUALIFICATION>86</QUALIFICATION>
            <NO_DIGITS>10</NO_DIGITS>
        </MEDTD3>
    </MESSAGE>
</ECHBATCH>



Jesper de Jong