Поддерживает ли ExtractData в MySQL пространства имен? - PullRequest
1 голос
/ 23 августа 2011

У меня есть очень большой xml-файл, который я сохранил в длинном текстовом поле с именем xml в таблице с именем import.

Затем я сохраняю сегодняшнюю xml-строку в пользовательской переменной с именем @xml, например так.

SELECT xml FROM imports WHERE DATE(updated_at) = DATE(NOW()) INTO @xml;

Я могу проверить пользовательскую переменную, и длина данных там, как и ожидалось.

SELECT LENGTH(@xml);

Проверка позиции моего целевого тега xml также работает, как и ожидалось.

SELECT LOCATE('sm:ProductCode>', @xml);

Однако, когда я пытаюсь использовать ExtractValue с запросом XPath, который содержит пространство имен, я получаю нулевое значение.Этот запрос XPath протестирован и отлично работает в моей программе изучения XPath.

SELECT ExtractValue(@xml, '//sm:ProductCode');

1 Ответ

1 голос
/ 23 августа 2011

Поддерживается с 5.1.10:

Начиная с MySQL 5.1.10, выражения XPath, передаваемые в качестве аргументов ExtractValue () и UpdateXML (), могут содержать двоеточие («:») в селекторах элементов, что позволяет использовать их с разметкой с использованием нотации пространств имен XML.

Если ваша версия старше, вы ничего не можете сделать, функция XPath namespace-uri(), которую вы могли бы использовать в качестве обходного пути, не поддерживается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...