Java XSLT TransformerException: не удалось найти функцию: существует - PullRequest
1 голос
/ 23 февраля 2012

Google обнаружил ноль, вот и я.

Я работаю над XSLT в Java.Это не единственный XSLT в проекте, остальные отлично работают.Моя проблема заключается в следующем:

Я получаю исключение javax.xml.transform.TransformerException с сообщением об ошибке «Не удалось найти функцию: существует».Мой XSLT выглядит следующим образом:

<?xml version="1.0"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:xpath="http://www.w3.org/2005/xpath-functions" xmlns:java="java" 
xmlns:url="http://whatever/java/java.net.URLEncoder"
exclude-result-prefixes="url">

    <xsl:template match="User">
        <user>
            <id><xsl:value-of select="id"/></id>
            <xsl:if test="exists(first)"><first><xsl:value-of select="first"/></first></xsl:if>
        </user>
    </xsl:template>

</xsl:stylesheet>

Ввод XML правильно сформирован, и если я удаляю строку <xsl:if test="exists(first)">, все работает хорошо.хорошо работают, в том числе те, которые используют функцию exists.Я проверил пространства имен на обоих, и они идентичны.

Есть идеи, что может происходить?

Ответы [ 2 ]

3 голосов
/ 24 февраля 2012

exist () - это функция XPath 2.0, поэтому сообщение об ошибке означает, что вы используете процессор XSLT 1.0. Если вы работаете в Java, на самом деле нет причин не переходить на XSLT 2.0 - это сэкономит вам огромное количество времени.

3 голосов
/ 23 февраля 2012

Я думаю, что вы можете проверить существование узла, как это

 <xsl:if test="first">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...