blob: cba921fb471e08bffc28f44d3fb3eacfd9fb6b2d [file] [log] [blame]
<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>How to use the XPath 2.0 grammar with PsychoPath</title><link href="book.css" rel="stylesheet" type="text/css"><link href="../book.css" rel="stylesheet" type="text/css"><meta content="DocBook XSL Stylesheets V1.74.0" name="generator"><link rel="home" href="index.html" title="XPath 2.0 Processor User Manual"><link rel="up" href="ch02.html" title="Using PsychoPath XPath 2.0 API"><link rel="prev" href="ch02s02.html" title="Schema Aware"><link rel="next" href="ch02s03s02.html" title="Path expressions"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="How_to_use_the_XPath_2.0_grammar_with_PsychoPath"></a>How to use the XPath 2.0 grammar with PsychoPath</h2></div></div></div><p>In this section we will try to give you an overview of the XPath
2.0 grammar in general and how each production in the grammar should be
used with PsychoPath. For the formal specifications, see the W3C
web-site for XPath 2.0 specification <a class="ulink" href="http://www.w3.org/TR/xpath20" target="_top">http://www.w3.org/TR/xpath20</a>.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Constants"></a>Constants</h3></div></div></div><p>String literals are written as &ldquo;Hello&rdquo; or &lsquo;Hello&rsquo;. In each case
the opposite kind of quotation mark can be used within the string: &lsquo;He
said &ldquo;Hello&rdquo; &rsquo; or &ldquo;London is a big city&rdquo;. To feed PsychoPath, &ldquo; &lsquo;Hello
World!&rsquo; &rdquo;or &ldquo; &ldquo;Hello World!&rdquo; &rdquo; can be used to feed it with strings.
Remember that the ResultSequence returns AnyType so since a string is
being expected as the result, first it has to be casted in the code
like this: <pre class="programlisting">XSString xsstring = (XSString)(rs.first());</pre>
Numeric constants follow the Java rules for decimal literals: for
example, 4 or 4.67; a negative number can be written as -3.05. The
numeric literal is taken as a double precision floating point number
if it uses scientific notation (e.g. 1.0e7), as a fixed point decimal
if it includes a decimal point, or as an integer otherwise. When
extracting number literals from the ResultSequence, possible types to
be returned include <span class="italic">XSDecima''l (e.g.&nbsp;:
xs:decimal: 4.67),''XSInteger ''(e.g.&nbsp;: xs:integer: 4) or
''XSDouble</span> (e.g.&nbsp;: xs:double 1e0). All of which need to be
cast in the same manner as stated before: from AnyType to their
corresponding types.</p><p>There are no boolean constants as such: <span class="italic">true, false</span> instead the function calls
<span class="bold"><strong>true()</strong></span> and <span class="bold"><strong>false()</strong></span> are used.</p><p>Constants of other data types can be written using constructors.
These look like function calls but require a string literal as their
argument. For example, <span class="bold"><strong>xs:float(&ldquo;10.7&rdquo;)</strong></span> produces a single-precision
floating point number.</p></div></div></body></html>