Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
2.7, 2.6, 2.5
-
None
-
None
-
Xerces 2.5
Java HotSpot Client VM (build 1.4.2_05-b04, mixed mode)
Red Hat Enterprise Linux (Kernel 2.4.21-15.9.1.ELhugemem)
Description
In both Xalan 2.5 and 2.6, XSLT function number() throws a StringIndexOutOfBoundsExcpetion for a stylesheet and XML instance that XMLSpy successfully translates:
[1209][maharder@paias1854:~]$ java org.apache.xalan.xslt.Process -IN project/revolver/common/trunk/config/xml/message1.xml -XSL project/revolver/common/trunk/config/xml/normalizer.xsl
<?xml version="1.0" encoding="UTF-8"?>
file:///ms/.global/ny.u/user/m/maharder/project/revolver/common/trunk/config/xml/normalizer.xsl; Line #14; Column #39; XSLT Error (javax.xml.transform.TransformerException): java.lang.StringIndexOutOfBoundsException: String index out of range: 3
message.xml:
<?xml version="1.0" encoding="UTF-8"?>
<revolver:message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:revolver="http://xml.msdw.com/ns/revolver"
xsi:schemaLocation="http://xml.msdw.com/ns/revolver message.xsd">
<revolver:element1>Element 1</revolver:element1>
<revolver:element2>
<revolver:element3>-005</revolver:element3>
<revolver:element4>00006</revolver:element4>
</revolver:element2>
<revolver:element5>4.65000</revolver:element5>
</revolver:message>
normalizer.xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
xmlns:revolver="http://xml.msdw.com/ns/revolver"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="number(.)"/>
</xsl:template>
</xsl:stylesheet>
message.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://xml.msdw.com/ns/revolver"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="message">
<xs:complexType>
<xs:sequence>
<xs:element name="element1" type="xs:string" />
<xs:element name="element2">
<xs:complexType>
<xs:sequence>
<xs:element name="element3" type="xs:integer" />
<xs:element name="element4" type="xs:positiveInteger" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="element5" type="xs:float" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>