xml.out
来自「postgresql8.3.4源码,开源数据库」· OUT 代码 · 共 458 行
OUT
458 行
CREATE TABLE xmltest ( id int, data xml);INSERT INTO xmltest VALUES (1, '<value>one</value>');INSERT INTO xmltest VALUES (2, '<value>two</value>');INSERT INTO xmltest VALUES (3, '<wrong');ERROR: invalid XML contentDETAIL: Entity: line 1: parser error : Couldn't find end of Start Tag wrong line 1<wrong ^SELECT * FROM xmltest; id | data ----+-------------------- 1 | <value>one</value> 2 | <value>two</value>(2 rows)SELECT xmlcomment('test'); xmlcomment ------------- <!--test-->(1 row)SELECT xmlcomment('-test'); xmlcomment -------------- <!---test-->(1 row)SELECT xmlcomment('test-');ERROR: invalid XML commentSELECT xmlcomment('--test');ERROR: invalid XML commentSELECT xmlcomment('te st'); xmlcomment -------------- <!--te st-->(1 row)SELECT xmlconcat(xmlcomment('hello'), xmlelement(NAME qux, 'foo'), xmlcomment('world')); xmlconcat ---------------------------------------- <!--hello--><qux>foo</qux><!--world-->(1 row)SELECT xmlconcat('hello', 'you'); xmlconcat ----------- helloyou(1 row)SELECT xmlconcat(1, 2);ERROR: argument of XMLCONCAT must be type xml, not type integerSELECT xmlconcat('bad', '<syntax');ERROR: invalid XML contentDETAIL: Entity: line 1: parser error : Couldn't find end of Start Tag syntax line 1<syntax ^SELECT xmlconcat('<foo/>', NULL, '<?xml version="1.1" standalone="no"?><bar/>'); xmlconcat -------------- <foo/><bar/>(1 row)SELECT xmlconcat('<?xml version="1.1"?><foo/>', NULL, '<?xml version="1.1" standalone="no"?><bar/>'); xmlconcat ----------------------------------- <?xml version="1.1"?><foo/><bar/>(1 row)SELECT xmlelement(name element, xmlattributes (1 as one, 'deuce' as two), 'content'); xmlelement ------------------------------------------------ <element one="1" two="deuce">content</element>(1 row)SELECT xmlelement(name element, xmlattributes ('unnamed and wrong'));ERROR: unnamed XML attribute value must be a column referenceSELECT xmlelement(name element, xmlelement(name nested, 'stuff')); xmlelement ------------------------------------------- <element><nested>stuff</nested></element>(1 row)SELECT xmlelement(name employee, xmlforest(name, age, salary as pay)) FROM emp; xmlelement ---------------------------------------------------------------------- <employee><name>sharon</name><age>25</age><pay>1000</pay></employee> <employee><name>sam</name><age>30</age><pay>2000</pay></employee> <employee><name>bill</name><age>20</age><pay>1000</pay></employee> <employee><name>jeff</name><age>23</age><pay>600</pay></employee> <employee><name>cim</name><age>30</age><pay>400</pay></employee> <employee><name>linda</name><age>19</age><pay>100</pay></employee>(6 rows)SELECT xmlelement(name duplicate, xmlattributes(1 as a, 2 as b, 3 as a));ERROR: XML attribute name "a" appears more than onceSELECT xmlelement(name num, 37); xmlelement --------------- <num>37</num>(1 row)SELECT xmlelement(name foo, text 'bar'); xmlelement ---------------- <foo>bar</foo>(1 row)SELECT xmlelement(name foo, xml 'bar'); xmlelement ---------------- <foo>bar</foo>(1 row)SELECT xmlelement(name foo, text 'b<a/>r'); xmlelement ------------------------- <foo>b<a/>r</foo>(1 row)SELECT xmlelement(name foo, xml 'b<a/>r'); xmlelement ------------------- <foo>b<a/>r</foo>(1 row)SELECT xmlelement(name foo, array[1, 2, 3]); xmlelement ------------------------------------------------------------------------- <foo><element>1</element><element>2</element><element>3</element></foo>(1 row)SET xmlbinary TO base64;SELECT xmlelement(name foo, bytea 'bar'); xmlelement ----------------- <foo>YmFy</foo>(1 row)SET xmlbinary TO hex;SELECT xmlelement(name foo, bytea 'bar'); xmlelement ------------------- <foo>626172</foo>(1 row)SELECT xmlparse(content 'abc'); xmlparse ---------- abc(1 row)SELECT xmlparse(content '<abc>x</abc>'); xmlparse -------------- <abc>x</abc>(1 row)SELECT xmlparse(document 'abc');ERROR: invalid XML documentDETAIL: Entity: line 1: parser error : Start tag expected, '<' not foundabc^SELECT xmlparse(document '<abc>x</abc>'); xmlparse -------------- <abc>x</abc>(1 row)SELECT xmlpi(name foo); xmlpi --------- <?foo?>(1 row)SELECT xmlpi(name xml);ERROR: invalid XML processing instructionDETAIL: XML processing instruction target name cannot be "xml".SELECT xmlpi(name xmlstuff); xmlpi -------------- <?xmlstuff?>(1 row)SELECT xmlpi(name foo, 'bar'); xmlpi ------------- <?foo bar?>(1 row)SELECT xmlpi(name foo, 'in?>valid');ERROR: invalid XML processing instructionDETAIL: XML processing instruction cannot contain "?>".SELECT xmlpi(name foo, null); xmlpi ------- (1 row)SELECT xmlpi(name xml, null);ERROR: invalid XML processing instructionDETAIL: XML processing instruction target name cannot be "xml".SELECT xmlpi(name xmlstuff, null); xmlpi ------- (1 row)SELECT xmlpi(name "xml-stylesheet", 'href="mystyle.css" type="text/css"'); xmlpi ------------------------------------------------------- <?xml-stylesheet href="mystyle.css" type="text/css"?>(1 row)SELECT xmlpi(name foo, ' bar'); xmlpi ------------- <?foo bar?>(1 row)SELECT xmlroot(xml '<foo/>', version no value, standalone no value); xmlroot --------- <foo/>(1 row)SELECT xmlroot(xml '<foo/>', version '2.0'); xmlroot ----------------------------- <?xml version="2.0"?><foo/>(1 row)SELECT xmlroot(xml '<foo/>', version no value, standalone yes); xmlroot ---------------------------------------------- <?xml version="1.0" standalone="yes"?><foo/>(1 row)SELECT xmlroot(xml '<?xml version="1.1"?><foo/>', version no value, standalone yes); xmlroot ---------------------------------------------- <?xml version="1.0" standalone="yes"?><foo/>(1 row)SELECT xmlroot(xmlroot(xml '<foo/>', version '1.0'), version '1.1', standalone no); xmlroot --------------------------------------------- <?xml version="1.1" standalone="no"?><foo/>(1 row)SELECT xmlroot('<?xml version="1.1" standalone="yes"?><foo/>', version no value, standalone no); xmlroot --------------------------------------------- <?xml version="1.0" standalone="no"?><foo/>(1 row)SELECT xmlroot('<?xml version="1.1" standalone="yes"?><foo/>', version no value, standalone no value); xmlroot --------- <foo/>(1 row)SELECT xmlroot('<?xml version="1.1" standalone="yes"?><foo/>', version no value); xmlroot ---------------------------------------------- <?xml version="1.0" standalone="yes"?><foo/>(1 row)SELECT xmlroot ( xmlelement ( name gazonk, xmlattributes ( 'val' AS name, 1 + 1 AS num ), xmlelement ( NAME qux, 'foo' ) ), version '1.0', standalone yes); xmlroot ------------------------------------------------------------------------------------------ <?xml version="1.0" standalone="yes"?><gazonk name="val" num="2"><qux>foo</qux></gazonk>(1 row)SELECT xmlserialize(content data as character varying(20)) FROM xmltest; xmlserialize -------------------- <value>one</value> <value>two</value>(2 rows)SELECT xmlserialize(content 'good' as char(10)); xmlserialize -------------- good (1 row)SELECT xmlserialize(document 'bad' as text);ERROR: not an XML documentSELECT xml '<foo>bar</foo>' IS DOCUMENT; ?column? ---------- t(1 row)SELECT xml '<foo>bar</foo><bar>foo</bar>' IS DOCUMENT; ?column? ---------- f(1 row)SELECT xml '<abc/>' IS NOT DOCUMENT; ?column? ---------- f(1 row)SELECT xml 'abc' IS NOT DOCUMENT; ?column? ---------- t(1 row)SELECT '<>' IS NOT DOCUMENT;ERROR: invalid XML contentDETAIL: Entity: line 1: parser error : StartTag: invalid element name<> ^SELECT xmlagg(data) FROM xmltest; xmlagg -------------------------------------- <value>one</value><value>two</value>(1 row)SELECT xmlagg(data) FROM xmltest WHERE id > 10; xmlagg -------- (1 row)SELECT xmlelement(name employees, xmlagg(xmlelement(name name, name))) FROM emp; xmlelement -------------------------------------------------------------------------------------------------------------------------------- <employees><name>sharon</name><name>sam</name><name>bill</name><name>jeff</name><name>cim</name><name>linda</name></employees>(1 row)-- Check mapping SQL identifier to XML nameSELECT xmlpi(name ":::_xml_abc135.%-&_"); xmlpi ------------------------------------------------- <?_x003A_::_x005F_xml_abc135._x0025_-_x0026__?>(1 row)SELECT xmlpi(name "123"); xmlpi --------------- <?_x0031_23?>(1 row)PREPARE foo (xml) AS SELECT xmlconcat('<foo/>', $1);SET XML OPTION DOCUMENT;EXECUTE foo ('<bar/>'); xmlconcat -------------- <foo/><bar/>(1 row)EXECUTE foo ('bad');ERROR: invalid XML documentDETAIL: Entity: line 1: parser error : Start tag expected, '<' not foundbad^SET XML OPTION CONTENT;EXECUTE foo ('<bar/>'); xmlconcat -------------- <foo/><bar/>(1 row)EXECUTE foo ('good'); xmlconcat ------------ <foo/>good(1 row)-- Test backwards parsingCREATE VIEW xmlview1 AS SELECT xmlcomment('test');CREATE VIEW xmlview2 AS SELECT xmlconcat('hello', 'you');CREATE VIEW xmlview3 AS SELECT xmlelement(name element, xmlattributes (1 as ":one:", 'deuce' as two), 'content&');CREATE VIEW xmlview4 AS SELECT xmlelement(name employee, xmlforest(name, age, salary as pay)) FROM emp;CREATE VIEW xmlview5 AS SELECT xmlparse(content '<abc>x</abc>');CREATE VIEW xmlview6 AS SELECT xmlpi(name foo, 'bar');CREATE VIEW xmlview7 AS SELECT xmlroot(xml '<foo/>', version no value, standalone yes);CREATE VIEW xmlview8 AS SELECT xmlserialize(content 'good' as char(10));CREATE VIEW xmlview9 AS SELECT xmlserialize(content 'good' as text);SELECT table_name, view_definition FROM information_schema.views WHERE table_name LIKE 'xmlview%' ORDER BY 1; table_name | view_definition ------------+---------------------------------------------------------------------------------------------------------------------------- xmlview1 | SELECT xmlcomment('test'::text) AS xmlcomment; xmlview2 | SELECT XMLCONCAT('hello'::xml, 'you'::xml) AS "xmlconcat"; xmlview3 | SELECT XMLELEMENT(NAME element, XMLATTRIBUTES(1 AS ":one:", 'deuce' AS two), 'content&') AS "xmlelement"; xmlview4 | SELECT XMLELEMENT(NAME employee, XMLFOREST(emp.name AS name, emp.age AS age, emp.salary AS pay)) AS "xmlelement" FROM emp; xmlview5 | SELECT XMLPARSE(CONTENT '<abc>x</abc>'::text STRIP WHITESPACE) AS "xmlparse"; xmlview6 | SELECT XMLPI(NAME foo, 'bar'::text) AS "xmlpi"; xmlview7 | SELECT XMLROOT('<foo/>'::xml, VERSION NO VALUE, STANDALONE YES) AS "xmlroot"; xmlview8 | SELECT (XMLSERIALIZE(CONTENT 'good'::xml AS character(10)))::character(10) AS "xmlserialize"; xmlview9 | SELECT XMLSERIALIZE(CONTENT 'good'::xml AS text) AS "xmlserialize";(9 rows)-- Text XPath expressions evaluationSELECT xpath('/value', data) FROM xmltest; xpath ---------------------- {<value>one</value>} {<value>two</value>}(2 rows)SELECT xpath(NULL, NULL) IS NULL FROM xmltest; ?column? ---------- t t(2 rows)SELECT xpath('', '<!-- error -->');ERROR: empty XPath expressionCONTEXT: SQL function "xpath" statement 1SELECT xpath('//text()', '<local:data xmlns:local="http://127.0.0.1"><local:piece id="1">number one</local:piece><local:piece id="2" /></local:data>'); xpath ---------------- {"number one"}(1 row)SELECT xpath('//loc:piece/@id', '<local:data xmlns:local="http://127.0.0.1"><local:piece id="1">number one</local:piece><local:piece id="2" /></local:data>', ARRAY[ARRAY['loc', 'http://127.0.0.1']]); xpath ------- {1,2}(1 row)SELECT xpath('//b', '<a>one <b>two</b> three <b>etc</b></a>'); xpath ------------------------- {<b>two</b>,<b>etc</b>}(1 row)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?