From aef79b05b570b4b6df3e366d690eb20aa71ba4f9 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Fri, 17 Jan 2014 14:55:14 -0500 Subject: [PATCH] LP#1053397 unapi.mmr() repairs Signed-off-by: Bill Erickson --- Open-ILS/src/sql/Pg/upgrade/XXXX.schema.unapi-mmr.sql | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.unapi-mmr.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.unapi-mmr.sql index cdcef16886..6fe1fde79a 100644 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.unapi-mmr.sql +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.unapi-mmr.sql @@ -115,14 +115,11 @@ BEGIN END LOOP; -- append data from the subordinate records to the - -- record document before applying the main XSLT - - top_el := REGEXP_REPLACE(xml_buf, E'^.*?<((?:\\S+:)?' || - layout.holdings_element || ').*$', E'\\1'); + -- main record document before applying the XSLT IF subxml IS NOT NULL THEN xml_buf := REGEXP_REPLACE(xml_buf, - '(.*?)$', subxml || '\\1'); + '(.*?)$', subxml || '' || E'\\1'); END IF; IF format = 'marcxml' THEN @@ -136,6 +133,11 @@ BEGIN xml_buf := oils_xslt_process(xml_buf, xfrm.xslt)::XML; END IF; + -- update top_el to reflect the change in xml_buf, which may + -- now be a wholly different type of document (e.g. record -> mods) + top_el := REGEXP_REPLACE(xml_buf, E'^.*?<((?:\\S+:)?' || + layout.holdings_element || ').*$', E'\\1'); + IF axml IS NOT NULL THEN xml_buf := REGEXP_REPLACE(xml_buf, '(.*?)$', axml || '\\1'); @@ -163,6 +165,7 @@ BEGIN output := xml_buf; END IF; + -- remove ignorable whitesace output := REGEXP_REPLACE(output::TEXT,E'>\\s+<','><','gs')::XML; RETURN output; END; -- 2.11.0