Mapping XML types to Java types

You can use this mapping between XML types and Java™ types when using external functions and variables. They are recommended mappings only; other types might work subject to type promotion, casting rules, and the range of values representable by the target type.

Procedure

  • Use this table to map between built-in types and Java types when using external functions and variables.
    Table 1. Built-in and Java types. This table maps built-in types to Java types.
    Built-in Types Java Types
    xs:anyURI java.lang.String
    xs:boolean boolean, java.lang.Boolean
    xs:base64Binary byte[]
    xs:hexBinary byte[]
    xs:date javax.xml.datatype.XMLGregorianCalendar
    xs:dateTime javax.xml.datatype.XMLGregorianCalendar
    xs:time javax.xml.datatype.XMLGregorianCalendar
    xs:duration javax.xml.datatype.Duration
    xs:dayTimeDuration javax.xml.datatype.Duration
    xs:yearMonthDuration javax.xml.datatype.Duration
    xs:gDay javax.xml.datatype.XMLGregorianCalendar
    xs:gMonth javax.xml.datatype.XMLGregorianCalendar
    xs:gMonthDay javax.xml.datatype.XMLGregorianCalendar
    xs:gYear javax.xml.datatype.XMLGregorianCalendar
    xs:gYearMonth javax.xml.datatype.XMLGregorianCalendar
    xs:decimal java.math.BigDecimal
    xs:integer java.math.BigInteger
    xs:nonPositiveInteger java.math.BigInteger
    xs:negativeInteger java.math.BigInteger
    xs:long long, java.lang.Long
    xs:int int, java.lang.Integer
    xs:short short, java.lang.Short
    xs:byte byte, java.lang.Byte
    xs:nonNegativeInteger java.math.BigInteger
    xs:unsignedLong java.math.BigInteger
    xs:unsignedInt long
    xs:unsignedShort int
    xs:unsignedByte short
    xs:positiveInteger java.math.BigInteger
    xs:double double, java.lang.Double
    xs:float float, java.lang.Float
    xs:QName javax.xml.namespace.QName
    xs:NOTATION javax.xml.namespace.QName
    xs:string java.lang.String
    xs:normalizedString java.lang.String
    xs:token java.lang.String
    xs:language java.lang.String
    xs:NMTOKEN java.lang.String
    xs:Name java.lang.String
    xs:NCName java.lang.String
    xs:ID java.lang.String
    xs:IDREF java.lang.String
    xs:ENTITY java.lang.String
    xs:untypedAtomic java.lang.String
    List com.ibm.xml.xapi.XItemView[]
    Union com.ibm.xml.xapi.XItemView
    All of the previously listed built-in types com.ibm.xml.xapi.XItemView
    com.ibm.xml.xapi.XSequenceCursor
    Complex types (types that represent nodes in the XML document) com.ibm.xml.xapi.XItemView
    com.ibm.xml.xapi.XSequenceCursor
    org.w3c.dom.Node

    The mapping also applies to retrieving values from an XItemView. The XItemView getDoubleValue method returns Java primitive double; the getDateValue, getTimeValue, and getDateTimeValue methods all return an XMLGregorianCalendar; and so on.

    If you want to use an external function in your XPath or XQuery expressions and it takes a built-in type as the argument, the actual Java method signature can specify any of the indicated Java types. If you want to use an external function, my:power(arg1 as xs:int, arg2 as xs:int) for example, to calculate the value of the first argument raised to the power of the second argument, you could write a Java method taking two Java primitive int arguments that performs the calculation.

  • Use this table to map between sequence types and Java types when using external functions and variables.
    Table 2. Sequence and Java types. This table maps sequence types to Java types.
    Sequence Types Java Types
    All sequence types com.ibm.xml.xapi.XSequenceCursor
    Sequence type known to be a singleton (a sequence containing only one item) com.ibm.xml.xapi.XItemView
    One of the types listed in the built-in types to Java types mapping table
    Sequence type known to contain only nodes and no atomic items org.w3c.dom.NodeList
    org.w3c.dom.traversal.NodeIterator