Нам необходимо широко использовать функцию 'xml_is_well_formed', предоставляемую модулем XML2.
Тем не менее, в документации сказано, что модуль xml2 устарел, поскольку "проверка синтаксиса XML и запросы XPath"
обеспечивается функциональностью, связанной с XML, на основе стандарта SQL / XML на главном сервере, начиная с PostgreSQL 8.3 и далее.
Однако основная функция XMLPARSE не обеспечивает эквивалентную функциональность, поскольку, когда она обнаруживает недопустимый документ XML,
он выдает ошибку, а не возвращает значение истинности (это то, что нам нужно и в настоящее время есть с помощью функции 'xml_is_well_formed').
Например:
select xml_is_well_formed('<br></br2>');
xml_is_well_formed
--------------------
f
(1 row)
select XMLPARSE( DOCUMENT '<br></br2>' );
ERROR: invalid XML document
DETAIL: Entity: line 1: parser error : expected '>'
<br></br2>
^
Entity: line 1: parser error : Extra content at the end of the document
<br></br2>
^
Есть ли какой-нибудь способ использовать новую, базовую XML-функциональность, чтобы просто вернуть значение истинности
так, как нам нужно?
Спасибо,
- Майк Берроу