Получение данных XML внутри пользовательской функции XPath

Есть ли способ получить текущие XML-данные, когда мы создаем нашу собственную функцию XPath (см. Здесь).

Я знаю, что у вас есть доступ к XPathContext, но достаточно ли этого?

Пример:

Наш XML:

<foo>
  <bar>smang</bar>
  <fizz>buzz</fizz>
</foo>

Наш XSL:

<xsl:template match = "/">
  <xsl:value-of select = "ourFunction()" />
</xsl:template>

Как получить все XML-дерево?

Редактировать: Чтобы уточнить: я создаю пользовательскую функцию, которая в конечном итоге выполняет статический код Java (это функция Saxon). Итак, в этом коде Java я хочу иметь возможность получать элементы из дерева XML, такие как bar и fizz, и их CDATA, такие как smang и buzz.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
0
671
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

А как насчет выберите текущий узел выбора соответствующих данных из текущего узла в параметр XSL и передачи этого параметра функции? Нравиться:

<xsl:value-of select = "ourFunction($data)" />
Ответ принят как подходящий

Попробуйте изменить свой XSL так, чтобы вы вызывали "ourFunction (/)". Это должно передать корневой узел функции. Вы также можете попробовать. или же ..

Предположительно вам нужно будет изменить подпись реализующей функции, я позволю кому-нибудь помочь с этим.

Другие вопросы по теме