2013-10-24 3 views
2

У меня проблема. Мне нужно проверить сопоставление для приложения. У нас разные схемы для входящих и исходящих сообщений. По какой-то причине мне нужно получить строки результата в двух запросах xpath (один для входящих, один для исходящих). Запросы на участках очень просто: //*:effectiveDate/* Но я не могу сравнивать строки, потому что у меня ниже resulstsКак удалить схемы из результатов запроса xpath?

Входящие сообщения:

<unadjustedDate xmlns="http://www.fpml.org/2010/FpML-4-9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">2013-10-24</unadjustedDate> 

Исходящее сообщение:

<unadjustedDate xmlns="http://www.fpml.org/FpML-5/reporting" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">2013-10-24</unadjustedDate> 

Таким образом, вы можете увидеть, что диф только в схемах. Как создать запрос xpath, который будет возвращаться:

<unadjustedDate>2013-10-24</unadjustedDate> 

Спасибо за помощь.

+0

Не могли бы вы пояснить. Таким образом, у вас есть приложение, которое возвращает два ответа, два XML. Эти XML определены в разных пространствах имен. И вам нужно сравнить даты с этими ответами. Я прав? –

+0

Приложение trasform одно сообщение другому. Message1 -> Message2 с некоторыми правилами преобразования. Но вы правы в целом, мне нужно сравнить этот раздел с правильно перенесенными датами в аналогичный раздел. Он может содержать несколько дат (например: unadjustedDate, unadjustedDate1, unadjustedDate2 и т. Д.), Поэтому мне нужно проверить, что все элементы перемещены с правильными значениями. Я могу сравнить только значения тегов: normalize-space (data (// *: effectiveDate)). Но также мне нужно сравнить имена тегов –

ответ

0

XPath может выбирать только узлы, он не может их изменить. Если ваши два элемента находятся в разных пространствах имен (правильное имя для того, что вы называете «схемами»), тогда они будут приглашающе выходить по-другому, когда вы выберете их с помощью XPath. Если вы хотите изменить данные, вам нужно будет использовать XSLT или XQuery. В качестве альтернативы вам нужно будет найти более сложный способ сравнения результатов.

+0

Мне не нужно его менять, просто чтобы получить результаты с дополнительной фильтрацией –

+0

Изменение пространства имен узла очень сильно изменилось, и удаление объявления пространства имен изменяет пространство имен узла. –

Смежные вопросы