Получение данных XML внутри пользовательской функции XPath - PullRequest
4 голосов
/ 16 сентября 2008

Есть ли способ получить текущие данные 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.

Ответы [ 2 ]

1 голос
/ 16 сентября 2008

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

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

1 голос
/ 16 сентября 2008

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

<xsl:value-of select="ourFunction($data)" />
...