Converting Atomic Values
This section describes the conversions that occur when calling a method that expects an
atomic value, such as a String
or a Boolean
.
If the supplied value is a node, then it is atomized.
If the supplied value contains more than item and only a single item is expected, an error is reported. There is no implicit extraction of the first value (as happened in earlier Saxon releases).
If the supplied value is an empty sequence, then a null value is passed. However, if the
required type is a primitive Java type such as int
or bool
, then
passing an empty sequence will result in a type error.
In other cases, the supported conversions are as follows. Italicized names are Saxon-specific classes in package net.sf.saxon.value.
Supplied type |
Required type |
xs:string |
StringValue, String, CharSequence |
xs:boolean |
BooleanValue, Boolean |
xs:float |
FloatValue, Float, Double |
xs:double |
DoubleValue, Double |
xs:decimal |
DecimalValue, BigDecimal, Double, Float |
xs:integer |
IntegerValue, BigInteger, BigDecimal, Long, Integer, Short, Byte, Double, Float |
xs:date, xs:gDay, xs:gMonthDay, xs:gMonth, xs:gYearMonth, xs: gYear |
DateValue, java.time.ZonedDateTime, java.time.Instant, java.util.Date |
xs:dateTime |
DateTimeValue, java.time.ZonedDateTime, java.time.Instant, java.util.Date |
xs:time |
TimeValue |
xs:duration, xs:yearMonthDuration, xs:dayTimeDuration |
DurationValue |
xs:hexBinary |
HexBinaryValue |
xs:base64Binary |
Base64BinaryValue |
xs:anyURI |
AnyURIValue, java.net.URI, java.net.URL, String, CharSequence |
xs:QName |
QNameValue, javax.xml.namespace.QName |
A required type of one of the Java primitive types such as int
or
bool
is treated as equivalent to the corresponding boxed type
(Integer
or Boolean
), except that with the boxed types, an empty
sequence can be supplied in the function call and is translated to a Java null value as the
actual argument.