diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index 702b9e3..fa584de 100644 *** a/src/backend/utils/adt/xml.c --- b/src/backend/utils/adt/xml.c *************** xml_xmlnodetoxmltype(xmlNodePtr cur) *** 3280,3286 **** str = xmlXPathCastNodeToString(cur); PG_TRY(); { ! result = (xmltype *) cstring_to_text((char *) str); } PG_CATCH(); { --- 3280,3286 ---- str = xmlXPathCastNodeToString(cur); PG_TRY(); { ! result = (xmltype *) cstring_to_text(escape_xml((char *) str)); } PG_CATCH(); { diff --git a/src/test/regress/expected/xml.out b/src/test/regress/expected/xml.out index eaa5a74..822f3b4 100644 *** a/src/test/regress/expected/xml.out --- b/src/test/regress/expected/xml.out *************** SELECT xpath('//b', 'one two t *** 502,507 **** --- 502,519 ---- {two,etc} (1 row) + SELECT xpath('//text()', '<'); + xpath + -------- + {<} + (1 row) + + SELECT xpath('//@value', ''); + xpath + -------- + {<} + (1 row) + -- Test xmlexists and xpath_exists SELECT xmlexists('//town[text() = ''Toronto'']' PASSING BY REF 'Bidford-on-AvonCwmbranBristol'); xmlexists diff --git a/src/test/regress/expected/xml_1.out b/src/test/regress/expected/xml_1.out index 711b435..d53131c 100644 *** a/src/test/regress/expected/xml_1.out --- b/src/test/regress/expected/xml_1.out *************** LINE 1: SELECT xpath('//b', 'one t *** 456,461 **** --- 456,473 ---- ^ DETAIL: This functionality requires the server to be built with libxml support. HINT: You need to rebuild PostgreSQL using --with-libxml. + SELECT xpath('//text()', '<'); + ERROR: unsupported XML feature + LINE 1: SELECT xpath('//text()', '<'... + ^ + DETAIL: This functionality requires the server to be built with libxml support. + HINT: You need to rebuild PostgreSQL using --with-libxml. + SELECT xpath('//@value', ''); + ERROR: unsupported XML feature + LINE 1: SELECT xpath('//@value', ''... + ^ + DETAIL: This functionality requires the server to be built with libxml support. + HINT: You need to rebuild PostgreSQL using --with-libxml. -- Test xmlexists and xpath_exists SELECT xmlexists('//town[text() = ''Toronto'']' PASSING BY REF 'Bidford-on-AvonCwmbranBristol'); ERROR: unsupported XML feature diff --git a/src/test/regress/sql/xml.sql b/src/test/regress/sql/xml.sql index 717a1e7..40e711a 100644 *** a/src/test/regress/sql/xml.sql --- b/src/test/regress/sql/xml.sql *************** SELECT xpath('', ''); *** 163,168 **** --- 163,170 ---- SELECT xpath('//text()', 'number one'); SELECT xpath('//loc:piece/@id', 'number one', ARRAY[ARRAY['loc', 'http://127.0.0.1']]); SELECT xpath('//b', 'one two three etc'); + SELECT xpath('//text()', '<'); + SELECT xpath('//@value', ''); -- Test xmlexists and xpath_exists SELECT xmlexists('//town[text() = ''Toronto'']' PASSING BY REF 'Bidford-on-AvonCwmbranBristol');