List:Commits« Previous MessageNext Message »
From:jon Date:January 13 2006 6:42pm
Subject:svn commit - mysqldoc@docsrva: r806 - trunk/refman-5.1
View as plain text  
Author: jstephens
Date: 2006-01-13 19:42:41 +0100 (Fri, 13 Jan 2006)
New Revision: 806

Log:

Move XML functions section up a level; reformat.



Modified:
   trunk/refman-5.1/functions.xml

Modified: trunk/refman-5.1/functions.xml
===================================================================
--- trunk/refman-5.1/functions.xml	2006-01-13 18:40:17 UTC (rev 805)
+++ trunk/refman-5.1/functions.xml	2006-01-13 18:42:41 UTC (rev 806)
@@ -11183,6 +11183,405 @@
 
   </section>
 
+  <section id="xml-functions">
+
+    <title>&title-xml-functions;</title>
+
+    <para>
+      Beginning with MySQL 5.1.5, two functions providing basic XPath
+      (XML Path Language) capabilities are available.
+    </para>
+
+    <itemizedlist>
+
+      <listitem>
+        <remark role="help-topic" condition="ExtractValue"/>
+
+        <remark role="help-syntax-begin"/>
+
+        <para>
+          <indexterm type="function">
+            <primary>ExtractValue()</primary>
+          </indexterm>
+
+          <literal>ExtractValue(<replaceable>xml_frag</replaceable>,
+          <replaceable>xpath_expr</replaceable>)</literal>
+        </para>
+
+        <remark role="help-syntax-end"/>
+
+        <remark role="help-description-begin"/>
+
+        <para>
+          This function takes two string arguments, a fragment of XML
+          markup <replaceable>xml_frag</replaceable> and an XPath
+          expression <replaceable>xpath_expr</replaceable>, and returns
+          the value matched by <replaceable>xpath_expr</replaceable>.
+          Note that <literal>ExtractValue()</literal> returns only the
+          <literal>CDATA</literal> that is contained directly by the tag
+          matching <replaceable>xpath_expr</replaceable>, and does not
+          return any tags that might be contained within the matching
+          tag, nor any of their content (see the result returned as
+          <literal>val1</literal> below for an example). If no match for
+          <replaceable>xpath_expr</replaceable> is found, this function
+          returns an empty string.
+        </para>
+
+        <remark role="help-description-end"/>
+
+        <remark role="help-example"/>
+
+<programlisting>
+mysql&gt; <userinput>SELECT</userinput>
+    -&gt;    <userinput>ExtractValue('&lt;a&gt;ccc&lt;b&gt;ddd&lt;/b&gt;&lt;/a&gt;', '/a') AS val1,</userinput>
+    -&gt;    <userinput>ExtractValue('&lt;a&gt;ccc&lt;b&gt;ddd&lt;/b&gt;&lt;/a&gt;', '/a/b') AS val2,</userinput>
+    -&gt;    <userinput>ExtractValue('&lt;a&gt;ccc&lt;b&gt;ddd&lt;/b&gt;&lt;/a&gt;', '//b') AS val3,</userinput>
+    -&gt;    <userinput>ExtractValue('&lt;a&gt;ccc&lt;b&gt;ddd&lt;/b&gt;&lt;/a&gt;', '/b') AS val4;</userinput>
+
++------+------+------+------+
+| val1 | val2 | val3 | val4 |
++------+------+------+------+
+| ccc  | ddd  | ddd  |      |
++------+------+------+------+
+</programlisting>
+      </listitem>
+
+      <listitem>
+        <remark role="help-topic" condition="UpdateXML"/>
+
+        <remark role="help-syntax-begin"/>
+
+        <para>
+          <indexterm type="function">
+            <primary>UpdateXML()</primary>
+          </indexterm>
+
+          <literal>UpdateXML(<replaceable>xml_target</replaceable>,
+          <replaceable>xpath_expr</replaceable>,
+          <replaceable>new_xml</replaceable>)</literal>
+        </para>
+
+        <remark role="help-syntax-end"/>
+
+        <remark role="help-description-begin"/>
+
+        <para>
+          This function replaces a portion of a given fragment of XML
+          markup <replaceable>xml_target</replaceable> with a new XML
+          fragment <replaceable>new_xml</replaceable> and then returns
+          the changed XML. The portion of
+          <replaceable>xml_target</replaceable> that is replaced matches
+          an XPath expression <replaceable>xpath_expr</replaceable>
+          supplied by the user. If no expression matching
+          <replaceable>xpath_expr</replaceable> is found, then the
+          function returns the original
+          <replaceable>xml_target</replaceable> XML fragment. All three
+          arguments must be strings.
+        </para>
+
+        <remark role="help-description-end"/>
+
+        <remark role="help-example"/>
+
+<programlisting>
+mysql&gt; <userinput>SELECT</userinput>
+    -&gt;     <userinput>UpdateXML('&lt;a&gt;&lt;b&gt;ccc&lt;/b&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;', '/a', '&lt;e&gt;fff&lt;/e&gt;') AS val1,</userinput>
+    -&gt;     <userinput>UpdateXML('&lt;a&gt;&lt;b&gt;ccc&lt;/b&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;', '/b', '&lt;e&gt;fff&lt;/e&gt;') AS val2,</userinput>
+    -&gt;     <userinput>UpdateXML('&lt;a&gt;&lt;b&gt;ccc&lt;/b&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;', '//b', '&lt;e&gt;fff&lt;/e&gt;') AS val3,</userinput>
+    -&gt;     <userinput>UpdateXML('&lt;a&gt;&lt;b&gt;ccc&lt;/b&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;', '/a/d', '&lt;e&gt;fff&lt;/e&gt;') AS val4</userinput>
+    -&gt; <userinput>\G</userinput>
+
+*************************** 1. row ***************************
+val1: &lt;e&gt;fff&lt;/e&gt;
+val2: &lt;a&gt;&lt;b&gt;ccc&lt;/b&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;
+val3: &lt;a&gt;&lt;e&gt;fff&lt;/e&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;
+val4: &lt;a&gt;&lt;b&gt;ccc&lt;/b&gt;&lt;e&gt;fff&lt;/e&gt;&lt;/a&gt;
+</programlisting>
+      </listitem>
+
+    </itemizedlist>
+
+    <para>
+      Descriptions and examples of some basic XPath expressions follow:
+    </para>
+
+    <itemizedlist>
+
+      <listitem>
+        <para>
+          <literal>/<replaceable>tag</replaceable></literal>
+        </para>
+
+        <para>
+          Matches
+          <literal>&lt;<replaceable>tag</replaceable>/&gt;</literal> if
+          and only if
+          <literal>&lt;<replaceable>tag</replaceable>/&gt;</literal> is
+          the root element.
+        </para>
+
+        <para>
+          Example: <literal>/a</literal> has a match in
+          <literal>&lt;a&gt;&lt;b/&gt;&lt;/a&gt;</literal> (it matches
+          the outer tag), but does not match the inner
+          <replaceable>a</replaceable> element in
+          <literal>&lt;b&gt;&lt;a/&gt;&lt;/b&gt;</literal> because in
+          this instance it is the child of another element.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          <literal>/<replaceable>tag1</replaceable>/<replaceable>tag2</replaceable></literal>
+        </para>
+
+        <para>
+          Matches
+          <literal>&lt;<replaceable>tag2</replaceable>/&gt;</literal> if
+          and only if it is a child of
+          <literal>&lt;<replaceable>tag1</replaceable>/&gt;</literal>,
+          and
+          <literal>&lt;<replaceable>tag1</replaceable>/&gt;</literal> is
+          the root element.
+        </para>
+
+        <para>
+          Example: <literal>/a/b</literal> matches the
+          <replaceable>b</replaceable>element in the XML fragment
+          <literal>&lt;a&gt;&lt;b/&gt;&lt;/a&gt;</literal> because it is
+          a child of the root element <replaceable>a</replaceable>. It
+          does not have a match in
+          <literal>&lt;b&gt;&lt;a/&gt;&lt;/b&gt;</literal> because in
+          this case, <replaceable>b</replaceable> is the root element
+          (and hence the child of no other element). Nor does the XPath
+          expression have a match in
+          <literal>&lt;a&gt;&lt;c&gt;&lt;b/&gt;&lt;/c&gt;&lt;/a&gt;</literal>;
+          here, <replaceable>b</replaceable> is a descendant of
+          <replaceable>a</replaceable>, but not actually a child of
+          <replaceable>a</replaceable>.
+        </para>
+
+        <para>
+          This construct is extendable to three or more elements. For
+          example, the XPath expression <literal>/a/b/c</literal>
+          matches the <replaceable>c</replaceable> element in the
+          fragment
+          <literal>&lt;a&gt;&lt;b&gt;&lt;c/&gt;&lt;/b&gt;&lt;/a&gt;</literal>.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          <literal>//<replaceable>tag</replaceable></literal>
+        </para>
+
+        <para>
+          Matches any <replaceable>tag</replaceable>.
+        </para>
+
+        <para>
+          Example: <literal>//a</literal> will match the
+          <replaceable>a</replaceable> element in any of the following:
+          <literal>&lt;a&gt;&lt;b&gt;&lt;c/&gt;&lt;/b&gt;&lt;/a&gt;</literal>;
+          <literal>&lt;c&gt;&lt;a&gt;&lt;b/&gt;&lt;/a&gt;&lt;/b&gt;</literal>;
+          <literal>&lt;c&gt;&lt;b&gt;&lt;a/&gt;&lt;/b&gt;&lt;/c&gt;</literal>.
+        </para>
+
+        <para>
+          <literal>//</literal> can be combined with
+          <literal>/</literal>. For example, <literal>//a/b</literal>
+          matches the <replaceable>b</replaceable> element in either of
+          the fragments <literal>&lt;a&gt;&lt;b/&gt;&lt;/a&gt;</literal>
+          or
+          <literal>&lt;a&gt;&lt;b&gt;&lt;c/&gt;&lt;/b&gt;&lt;/a&gt;</literal>
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The <literal>*</literal> operator acts as a
+          <quote>wildcard</quote> element. For example, the expression
+          <literal>/*/b</literal> matches the
+          <replaceable>b</replaceable> element in either of the XML
+          fragments <literal>&lt;a&gt;&lt;b/&gt;&lt;/a&gt;</literal> or
+          <literal>&lt;c&gt;&lt;b/&gt;&lt;/c&gt;</literal>. However, the
+          expression does not produce a match in the fragment
+          <literal>&lt;b&gt;&lt;a/&gt;&lt;/b&gt;</literal> because
+          <replaceable>b</replaceable> must be a child of some other
+          element. The wildcard may be used in any position: the
+          expression <literal>/*/b/*</literal> will match any child of a
+          <replaceable>b</replaceable> element that is itself not the
+          root element.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          It is also possible to match an element based on the value of
+          one or more of its attributes. This done using the syntax
+          <literal><replaceable>tag</replaceable>[@<replaceable>attribute</replaceable>="<replaceable>value</replaceable>"]</literal>.
+          For example, the expression <literal>//b[@id="idB"]</literal>
+          matches the second <replaceable>b</replaceable> element in the
+          fragment <literal>&lt;a&gt;&lt;b id="idA"/&gt;&lt;&lt;c/&gt;b
+          id="idB"/&gt;&lt;/a&gt;</literal>.
+        </para>
+      </listitem>
+
+    </itemizedlist>
+
+    <para>
+      A discussion in depth of XPath syntax and usage are beyond the
+      scope of this Manual. Please see the
+      <ulink url="http://www.w3.org/TR/xpath">XML Path Language (XPath)
+      1.0 standard</ulink> for definitive information. A useful resource
+      for those new to XPath or wishing a refresher in the basics is the
+      <ulink url="http://www.zvon.org/xxl/XPathTutorial/">Zvon.org XPath
+      Tutorial</ulink>, which is available in several languages.
+    </para>
+
+    <para>
+      The XPath syntax supported by these functions is currently subject
+      to the following limitations:
+    </para>
+
+    <itemizedlist>
+
+      <listitem>
+        <para>
+          Nodeset-to-nodeset comparison (such as
+          <literal>'/a/b[@c=@d]'</literal>) is not supported. Only
+          comparisons of the form
+          <literal>[@<replaceable>attribute</replaceable>="<replaceable>const</replaceable>"]</literal>,
+          where <replaceable>const</replaceable> is a constant value,
+          are currently possible.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The following XPath functions are not supported:
+        </para>
+
+        <itemizedlist>
+
+          <listitem>
+            <para>
+              <literal>id()</literal>
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              <literal>lang()</literal>
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              <literal>last()</literal>
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              <literal>local-name()</literal>
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              <literal>name()</literal>
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              <literal>namespace-uri()</literal>
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              <literal>normalize-space()</literal>
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              <literal>starts-with()</literal>
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              <literal>string()</literal>
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              <literal>substring-after()</literal>
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              <literal>substring-before()</literal>
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              <literal>translate()</literal>
+            </para>
+          </listitem>
+
+        </itemizedlist>
+      </listitem>
+
+      <listitem>
+        <para>
+          The following axes are not supported:
+        </para>
+
+        <itemizedlist>
+
+          <listitem>
+            <para>
+              <literal>following-sibling</literal>
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              <literal>following</literal>
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              <literal>preceding-sibling</literal>
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              <literal>preceding</literal>
+            </para>
+          </listitem>
+
+        </itemizedlist>
+      </listitem>
+
+    </itemizedlist>
+
+    <para>
+      We continue to develop and improve these and other aspects of XML
+      and XPath functionality in MySQL 5.1 and onwards.
+    </para>
+
+  </section>
+
   <section id="other-functions">
 
     <title>&title-other-functions;</title>
@@ -13653,401 +14052,7 @@
       </itemizedlist>
 
     </section>
-    
-    <section id="xml-functions">
-      <title>&title-xml-functions;</title>
-      
-      <para>
-        Beginning with MySQL 5.1.5, two functions providing basic XPath
-        (XML Path Language) capabilities are available.
-      </para>
-      
-      <itemizedlist>
-        <listitem>
-          <remark role="help-topic" condition="ExtractValue"/>
 
-          <remark role="help-syntax-begin"/>
-
-          <para>
-            <indexterm type="function">
-              <primary>ExtractValue()</primary>
-            </indexterm>
-
-            <literal>ExtractValue(<replaceable>xml_frag</replaceable>,
-              <replaceable>xpath_expr</replaceable>)</literal>
-          </para>
-
-          <remark role="help-syntax-end"/>
-
-          <remark role="help-description-begin"/>
-          
-          <para>
-            This function takes two string arguments, a fragment of XML
-            markup <replaceable>xml_frag</replaceable> and an XPath
-            expression <replaceable>xpath_expr</replaceable>, and returns
-            the value matched by <replaceable>xpath_expr</replaceable>.
-            Note that <literal>ExtractValue()</literal> returns only the
-            <literal>CDATA</literal> that is contained directly by the
-            tag matching <replaceable>xpath_expr</replaceable>, and does
-            not return any tags that might be contained within the
-            matching tag, nor any of their content (see the result
-            returned as <literal>val1</literal> below for an example).
-            If no match for <replaceable>xpath_expr</replaceable> is
-            found, this function returns an empty string.
-          </para>
-
-          <remark role="help-description-end"/>
-
-          <remark role="help-example"/>
-          
-<programlisting>
-mysql&gt; <userinput>SELECT</userinput>
-    -&gt;    <userinput>ExtractValue('&lt;a&gt;ccc&lt;b&gt;ddd&lt;/b&gt;&lt;/a&gt;', '/a') AS val1,</userinput>
-    -&gt;    <userinput>ExtractValue('&lt;a&gt;ccc&lt;b&gt;ddd&lt;/b&gt;&lt;/a&gt;', '/a/b') AS val2,</userinput>
-    -&gt;    <userinput>ExtractValue('&lt;a&gt;ccc&lt;b&gt;ddd&lt;/b&gt;&lt;/a&gt;', '//b') AS val3,</userinput>
-    -&gt;    <userinput>ExtractValue('&lt;a&gt;ccc&lt;b&gt;ddd&lt;/b&gt;&lt;/a&gt;', '/b') AS val4;</userinput>
-
-+------+------+------+------+
-| val1 | val2 | val3 | val4 |
-+------+------+------+------+
-| ccc  | ddd  | ddd  |      |
-+------+------+------+------+
-</programlisting>
-        </listitem>
-        
-        <listitem>          
-          <remark role="help-topic" condition="UpdateXML"/>
-
-          <remark role="help-syntax-begin"/>
-
-          <para>
-            <indexterm type="function">
-              <primary>UpdateXML()</primary>
-            </indexterm>
-
-            <literal>UpdateXML(<replaceable>xml_target</replaceable>,
-              <replaceable>xpath_expr</replaceable>,
-              <replaceable>new_xml</replaceable>)</literal>
-          </para>
-
-          <remark role="help-syntax-end"/>
-
-          <remark role="help-description-begin"/>
-          
-          <para>
-            This function replaces a portion of a given fragment of XML
-            markup <replaceable>xml_target</replaceable> with a new XML
-            fragment <replaceable>new_xml</replaceable> and then returns
-            the changed XML. The portion of
-            <replaceable>xml_target</replaceable> that is replaced
-            matches an XPath expression
-            <replaceable>xpath_expr</replaceable> supplied by the user.
-            If no expression matching
-            <replaceable>xpath_expr</replaceable> is found, then the
-            function returns the original
-            <replaceable>xml_target</replaceable> XML fragment. All
-            three arguments must be strings.
-          </para>
-
-          <remark role="help-description-end"/>
-
-          <remark role="help-example"/>
-          
-<programlisting>
-mysql&gt; <userinput>SELECT</userinput>
-    -&gt;     <userinput>UpdateXML('&lt;a&gt;&lt;b&gt;ccc&lt;/b&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;', '/a', '&lt;e&gt;fff&lt;/e&gt;') AS val1,</userinput>
-    -&gt;     <userinput>UpdateXML('&lt;a&gt;&lt;b&gt;ccc&lt;/b&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;', '/b', '&lt;e&gt;fff&lt;/e&gt;') AS val2,</userinput>
-    -&gt;     <userinput>UpdateXML('&lt;a&gt;&lt;b&gt;ccc&lt;/b&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;', '//b', '&lt;e&gt;fff&lt;/e&gt;') AS val3,</userinput>
-    -&gt;     <userinput>UpdateXML('&lt;a&gt;&lt;b&gt;ccc&lt;/b&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;', '/a/d', '&lt;e&gt;fff&lt;/e&gt;') AS val4</userinput>
-    -&gt; <userinput>\G</userinput>
-
-*************************** 1. row ***************************
-val1: &lt;e&gt;fff&lt;/e&gt;
-val2: &lt;a&gt;&lt;b&gt;ccc&lt;/b&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;
-val3: &lt;a&gt;&lt;e&gt;fff&lt;/e&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;
-val4: &lt;a&gt;&lt;b&gt;ccc&lt;/b&gt;&lt;e&gt;fff&lt;/e&gt;&lt;/a&gt;
-</programlisting>
-        </listitem>
-      </itemizedlist>
-      
-      <para>
-        Descriptions and examples of some basic XPath expressions
-        follow:
-      </para>
-      
-      <itemizedlist>
-        <listitem>
-          <para>
-            <literal>/<replaceable>tag</replaceable></literal>
-          </para>
-          
-          <para>
-            Matches
-            <literal>&lt;<replaceable>tag</replaceable>/&gt;</literal> if
-            and only if
-            <literal>&lt;<replaceable>tag</replaceable>/&gt;</literal> is
-            the root element.
-          </para>
-          
-          <para>
-            Example: <literal>/a</literal> has a match in
-            <literal>&lt;a&gt;&lt;b/&gt;&lt;/a&gt;</literal>
-            (it matches the outer tag), but does not match the inner
-            <replaceable>a</replaceable> element in
-            <literal>&lt;b&gt;&lt;a/&gt;&lt;/b&gt;</literal>
-            because in this instance it is the child of another element.
-          </para>
-        </listitem>
-        
-        <listitem>
-          <para>
-            <literal>/<replaceable>tag1</replaceable>/<replaceable>tag2</replaceable></literal>
-          </para>
-          
-          <para>
-            Matches
-            <literal>&lt;<replaceable>tag2</replaceable>/&gt;</literal>
-            if and only if it is a child of
-            <literal>&lt;<replaceable>tag1</replaceable>/&gt;</literal>,
-            and
-            <literal>&lt;<replaceable>tag1</replaceable>/&gt;</literal>
-            is the root element.
-          </para>
-          
-          <para>
-            Example: <literal>/a/b</literal> matches the
-            <replaceable>b</replaceable>element in the XML fragment
-            <literal>&lt;a&gt;&lt;b/&gt;&lt;/a&gt;</literal> because it
-            is a child of the root element <replaceable>a</replaceable>.
-            It does not have a match in
-            <literal>&lt;b&gt;&lt;a/&gt;&lt;/b&gt;</literal> because in
-            this case, <replaceable>b</replaceable> is the root element
-            (and hence the child of no other element). Nor does the
-            XPath expression have a match in
-            <literal>&lt;a&gt;&lt;c&gt;&lt;b/&gt;&lt;/c&gt;&lt;/a&gt;</literal>;
-            here, <replaceable>b</replaceable> is a descendant of
-            <replaceable>a</replaceable>, but not actually a child of
-            <replaceable>a</replaceable>.
-          </para>
-          
-          <para>
-            This construct is extendable to three or more elements. For
-            example, the XPath expression <literal>/a/b/c</literal>
-            matches the <replaceable>c</replaceable> element in the
-            fragment
-            <literal>&lt;a&gt;&lt;b&gt;&lt;c/&gt;&lt;/b&gt;&lt;/a&gt;</literal>.
-          </para>
-        </listitem>
-        
-        <listitem>
-          <para>
-            <literal>//<replaceable>tag</replaceable></literal>
-          </para>
-          
-          <para>
-            Matches any <replaceable>tag</replaceable>.
-          </para>
-          
-          <para>
-            Example: <literal>//a</literal> will match the
-            <replaceable>a</replaceable> element in any of the
-            following:
-            <literal>&lt;a&gt;&lt;b&gt;&lt;c/&gt;&lt;/b&gt;&lt;/a&gt;</literal>;
-            <literal>&lt;c&gt;&lt;a&gt;&lt;b/&gt;&lt;/a&gt;&lt;/b&gt;</literal>;
-            <literal>&lt;c&gt;&lt;b&gt;&lt;a/&gt;&lt;/b&gt;&lt;/c&gt;</literal>.
-          </para>
-          
-          <para>
-            <literal>//</literal> can be combined with
-            <literal>/</literal>. For example, <literal>//a/b</literal>
-            matches the <replaceable>b</replaceable> element in either
-            of the fragments
-            <literal>&lt;a&gt;&lt;b/&gt;&lt;/a&gt;</literal> or
-            <literal>&lt;a&gt;&lt;b&gt;&lt;c/&gt;&lt;/b&gt;&lt;/a&gt;</literal> 
-          </para>
-        </listitem>
-        
-        <listitem>
-          <para>The <literal>*</literal> operator acts as a
-            <quote>wildcard</quote> element. For example, the expression
-            <literal>/*/b</literal> matches the
-            <replaceable>b</replaceable> element in either of the XML
-            fragments <literal>&lt;a&gt;&lt;b/&gt;&lt;/a&gt;</literal>
-            or <literal>&lt;c&gt;&lt;b/&gt;&lt;/c&gt;</literal>.
-            However, the expression does not produce a match in the
-            fragment <literal>&lt;b&gt;&lt;a/&gt;&lt;/b&gt;</literal>
-            because <replaceable>b</replaceable> must be a child of some
-            other element. The wildcard may be used in any position: the
-            expression <literal>/*/b/*</literal> will match any child of
-            a <replaceable>b</replaceable> element that is itself not
-            the root element.
-          </para>
-        </listitem>
-        
-        <listitem>
-          <para>
-            It is also possible to match an element based on the value
-            of one or more of its attributes. This done using the syntax
-            <literal><replaceable>tag</replaceable>[@<replaceable>attribute</replaceable>="<replaceable>value</replaceable>"]</literal>.
-            For example, the expression
-            <literal>//b[@id="idB"]</literal> matches the second
-            <replaceable>b</replaceable> element in the fragment
-            <literal>&lt;a&gt;&lt;b id="idA"/&gt;&lt;&lt;c/&gt;b
-            id="idB"/&gt;&lt;/a&gt;</literal>.            
-          </para>
-        </listitem>
-      </itemizedlist>
-      
-      <para>
-        A discussion in depth of XPath syntax and usage are beyond the
-        scope of this Manual. Please see the 
-        <ulink url="http://www.w3.org/TR/xpath">XML Path Language
-          (XPath) 1.0 standard</ulink> for definitive information. A
-        useful resource for those new to XPath or wishing a refresher in
-        the basics is the 
-        <ulink url="http://www.zvon.org/xxl/XPathTutorial/">Zvon.org 
-          XPath Tutorial</ulink>, which is available in several
-        languages.
-      </para>    
-      
-      <para>
-        The XPath syntax supported by these functions is currently
-        subject to the following limitations:
-      </para>
-      
-      <itemizedlist>
-        <listitem>
-          <para>
-            Nodeset-to-nodeset comparison (such as
-            <literal>'/a/b[@c=@d]'</literal>) is not supported. Only
-            comparisons of the form
-            <literal>[@<replaceable>attribute</replaceable>="<replaceable>const</replaceable>"]</literal>,
-            where <replaceable>const</replaceable> is a constant value,
-            are currently possible.
-          </para>
-        </listitem>
-        
-        <listitem>
-          <para>
-            The following XPath functions are not supported:
-          </para>
-          
-          <itemizedlist>
-            <listitem>
-              <para>
-                <literal>id()</literal>
-              </para>
-            </listitem>
-            
-            <listitem>
-              <para>
-                <literal>lang()</literal>
-              </para>
-            </listitem>
-            
-            <listitem>
-              <para>
-                <literal>last()</literal>
-              </para>
-            </listitem>
-            
-            <listitem>
-              <para>
-                <literal>local-name()</literal>
-              </para>
-            </listitem>
-            
-            <listitem>
-              <para>
-                <literal>name()</literal>
-              </para>
-            </listitem>
-            
-            <listitem>
-              <para>
-                <literal>namespace-uri()</literal>
-              </para>
-            </listitem>
-            
-            <listitem>
-              <para>
-                <literal>normalize-space()</literal>
-              </para>
-            </listitem>
-            
-            <listitem>
-              <para>
-                <literal>starts-with()</literal>
-              </para>
-            </listitem>
-            
-            <listitem>
-              <para>
-                <literal>string()</literal>
-              </para>
-            </listitem>
-            
-            <listitem>
-              <para>
-                <literal>substring-after()</literal>
-              </para>
-            </listitem>
-            
-            <listitem>
-              <para>
-                <literal>substring-before()</literal>
-              </para>
-            </listitem>    
-            
-            <listitem>
-              <para>
-                <literal>translate()</literal>
-              </para>
-            </listitem>        
-          </itemizedlist>
-          
-        </listitem>
-        
-        <listitem>
-          <para>
-            The following axes are not supported:
-          </para>
-          
-          <itemizedlist>
-            <listitem>
-              <para>
-                <literal>following-sibling</literal>
-              </para>
-            </listitem>
-            
-            <listitem>
-              <para>
-                <literal>following</literal>
-              </para>
-            </listitem>
-            
-            <listitem>
-              <para>
-                <literal>preceding-sibling</literal>
-              </para>
-            </listitem>
-            
-            <listitem>
-              <para>
-                <literal>preceding</literal>
-              </para>
-            </listitem>            
-          </itemizedlist>          
-        </listitem>        
-      </itemizedlist>
-      
-      <para>
-        We continue to develop and improve these and other aspects of
-        XML and XPath functionality in MySQL 5.1 and onwards.
-      </para>
-    </section>
-    
-    
   </section>
 
   <section id="group-by-functions-and-modifiers">

Thread
svn commit - mysqldoc@docsrva: r806 - trunk/refman-5.1jon13 Jan