Преобразование типа результата string-join в NodeList - PullRequest
1 голос
/ 27 января 2012

Мне нужно разобраться с устаревшим кодом, который оценивает выражения XPath и ожидает, что результаты будут преобразованы в NodeList. Код использует NodeList для определения количества узлов, выбранных выражением XPath. Код продолжается, только если выбран один узел.

Теперь мне нужно использовать функцию string-join, тип возвращаемого значения - String. Есть ли способ конвертировать String в NodeList с помощью другой функции XPath? В идеале он преобразует String в NodeList с одним элементом, текстовое содержимое которого будет значением String. Я пытался с exsl: node-set (), но безуспешно (процессор Saxon-HE).

Ответы [ 3 ]

1 голос
/ 27 января 2012

Есть ли способ конвертировать String в NodeList с использованием другой функции XPath?

Нет, XPath - это просто язык запросов для документов XML - он не создаетузлы .

Если устаревший код ожидает, что выражение XPath оценивается как NodeList, а результат оценки вашего выражения XPath представляет собой просто строку, а затем повторно использовать этот устаревший код без написания нового кода, вы должныизмените свое выражение XPath, чтобы оно выбирало один или несколько узлов.

Или напишите собственный код, который использует результат оценки выражения XPath.

0 голосов
/ 27 января 2012

Я бы предложил поместить слой Java вокруг Saxon XPath API и выполнить преобразование строки в NodeList на этом уровне Java.Ваш уровень Java может реализовывать интерфейс JAXP XPath и, таким образом, «притворяться» настоящим движком XPath.

0 голосов
/ 27 января 2012

XPath (даже 2.0) не может создавать новые узлы, для этого вам нужен XQuery или XSLT.Саксон поддерживает оба, так что у вас есть выбор.

...