]> granicus.if.org Git - postgresql/commitdiff
Fix XMLTABLE synopsis, add XMLNAMESPACES example
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 13 Apr 2017 15:08:34 +0000 (12:08 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 13 Apr 2017 15:12:23 +0000 (12:12 -0300)
Add a missing comma in the synopsis after the XMLNAMESPACES clause.
Also, add an example illustrating the use of that clause.

Author: Arjen Nienhuis and Pavel StÄ›hule

doc/src/sgml/func.sgml

index adab3030c4170449897fa87d9fc43ae0dd2eb307..f06d0a92c038d0ea54cd79508881c66d1871d782 100644 (file)
@@ -10525,7 +10525,7 @@ SELECT xpath_exists('/my:a/text()', '<my:a xmlns:my="http://example.com">test</m
     </indexterm>
 
 <synopsis>
-<function>xmltable</function>( <optional>XMLNAMESPACES(<replaceable>namespace uri</replaceable> AS <replaceable>namespace name</replaceable><optional>, ...</optional>)</optional>
+<function>xmltable</function>( <optional>XMLNAMESPACES(<replaceable>namespace uri</replaceable> AS <replaceable>namespace name</replaceable><optional>, ...</optional>)</optional>
           <replaceable>row_expression</replaceable> PASSING <optional>BY REF</optional> <replaceable>document_expression</replaceable> <optional>BY REF</optional>
           COLUMNS <replaceable>name</replaceable> { <replaceable>type</replaceable> <optional>PATH <replaceable>column_expression</replaceable></optional> <optional>DEFAULT <replaceable>default_expression</replaceable></optional> <optional>NOT NULL | NULL</optional>
                         | FOR ORDINALITY }
@@ -10708,6 +10708,36 @@ SELECT xmltable.*
        element        
 ----------------------
    Hello2a2   bbbCC  
+]]></screen>
+    </para>
+
+    <para>
+     The following example illustrates how
+     the <literal>XMLNAMESPACES</literal> clause can be used to specify
+     the default namespace, and a list of additional namespaces
+     used in the XML document as well as in the XPath expressions:
+
+  <screen><![CDATA[
+WITH xmldata(data) AS (VALUES ('
+<example xmlns="http://example.com/myns" xmlns:B="http://example.com/b">
+ <item foo="1" B:bar="2"/>
+ <item foo="3" B:bar="4"/>
+ <item foo="4" B:bar="5"/>
+</example>'::xml)
+)
+SELECT xmltable.*
+  FROM XMLTABLE(XMLNAMESPACES('http://example.com/myns' AS x,
+                              'http://example.com/b' AS "B"),
+             '/x:example/x:item'
+                PASSING (SELECT data FROM xmldata)
+                COLUMNS foo int PATH '@foo',
+                  bar int PATH '@B:bar');
+ foo | bar
+-----+-----
+   1 |   2
+   3 |   4
+   4 |   5
+(3 rows)
 ]]></screen>
     </para>
    </sect3>