From: Bill Erickson Date: Fri, 17 Jan 2014 19:55:14 +0000 (-0500) Subject: LP#1053397 unapi.mmr() repairs X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=aef79b05b570b4b6df3e366d690eb20aa71ba4f9;p=working%2FEvergreen.git LP#1053397 unapi.mmr() repairs Signed-off-by: Bill Erickson --- 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;