<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="../../make-menu.xsl" type="text/xsl"?><html>
   <head>
      <this-is section="extensibility" page="converting-args" subpage="converting-atomic"/>
      <!--
           Generated at 2011-12-09T20:47:22.916Z--><title>Saxonica: XSLT and XQuery Processing: Converting Atomic Values</title>
      <meta name="coverage" content="Worldwide"/>
      <meta name="copyright" content="Copyright Saxonica Ltd"/>
      <meta name="title"
            content="Saxonica: XSLT and XQuery Processing: Converting Atomic Values"/>
      <meta name="robots" content="noindex,nofollow"/>
      <link rel="stylesheet" href="../../saxondocs.css" type="text/css"/>
   </head>
   <body class="main">
      <h1>Converting Atomic Values</h1>
      <p>This section describes the conversions that occur when calling a method that expects an atomic value, such as a String or
 a boolean.</p>
      <p>If the supplied value is a node, then it is atomized.</p>
      <p>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).</p>
      <p>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 <code>int</code> or <code>bool</code>, then passing an empty sequence will result in a type error.</p>
      <p>In other cases, the supported conversions are as follows. Italicized names are Saxon-specific classes in package
 <code>net.sf.saxon.value</code>.</p>
      <table>
         <tr>
            <td content="para">
               <p>
                  <b>Supplied type</b>
               </p>
            </td>
            <td content="para">
               <p>
                  <b>Required type</b>
               </p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>boolean</p>
            </td>
            <td content="para">
               <p>
                  <i>BooleanValue</i>, Boolean</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>dateTime</p>
            </td>
            <td content="para">
               <p>
                  <i>DateTimeValue</i>, Date</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>date</p>
            </td>
            <td content="para">
               <p>
                  <i>DateValue</i>, Date</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>decimal</p>
            </td>
            <td content="para">
               <p>
                  <i>DecimalValue</i>, BigDecimal, Double, Float</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>double</p>
            </td>
            <td content="para">
               <p>
                  <i>DoubleValue</i>, Double</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>duration</p>
            </td>
            <td content="para">
               <p>
                  <i>DurationValue</i>
               </p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>float</p>
            </td>
            <td content="para">
               <p>
                  <i>FloatValue</i>, Float, Double</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>integer, long, int</p>
            </td>
            <td content="para">
               <p>
                  <i>IntegerValue</i>, BigInteger, BigDecimal, Long, Integer, Double, Float</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>short</p>
            </td>
            <td content="para">
               <p>
                  <i>IntegerValue</i>, BigInteger, BigDecimal, Long, Integer, Short, Double, Float</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>byte</p>
            </td>
            <td content="para">
               <p>
                  <i>IntegerValue</i>, BigInteger, BigDecimal, Long, Integer, Short, Byte, Double, Float</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>string</p>
            </td>
            <td content="para">
               <p>
                  <i>StringValue</i>, (String, CharSequence)</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>anyURI</p>
            </td>
            <td content="para">
               <p>
                  <i>AnyURIValue</i>, java.net.URI, java.net.URL, (String, CharSequence)</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>QName</p>
            </td>
            <td content="para">
               <p>
                  <i>QNameValue</i>, javax.xml.namespace.QName</p>
            </td>
         </tr>
      </table>
      <p>A required type of one of the Java primitive types such as <code>int</code> or <code>bool</code> is treated as
equivalent to the corresponding boxed type (<code>Integer</code> or <code>Boolean</code>), 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.</p>
      <table width="100%">
         <tr>
            <td>
               <p align="right"><a class="nav" href="converting-node.xml">Next</a></p>
            </td>
         </tr>
      </table>
   </body>
</html>