привязать мою Java-функцию к саксонскому XSLT-процессору - PullRequest
2 голосов
/ 29 ноября 2011

У меня есть собственная статическая функция Java в классе:

package com.test;

public class A {

    public static void returnSameNodes(Object nodes){
        return nodes;
    }


}

Я пытался привязать эту функцию к XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:ext="java:com.test.A" >
    <xsl:template match="root">
        <xsl:apply-templates select="ext:returnSameNodes(//child::*)"></xsl:apply-templates>
    </xsl:template>
</xsl:stylesheet>

, но со следующей ошибкой:

Невозможно найти подходящую функцию с 1 аргументом и т. Д.

Я знаю, что я делаю неправильно - я должен сказать Саксону (9B), что мой класс находится в определенном месте, но я не знаю, как это сделать. Какие-либо предложения?? В том числе например Math.sqrt () прекрасно работает. Спасибо

РЕДАКТИРОВАТЬ: Проблема в настройке пути к классам Java, кто-нибудь знает, как сделать это для этого конкретного случая? В следующей ссылке есть примечание об установке переменной classpath, но как? http://www.saxonica.com/documentation/extensibility/functions.xml Спасибо за предложения

1 Ответ

1 голос
/ 29 ноября 2011

Если вы работаете из командной строки, тогда

(a) используйте опцию -TJ для улучшения диагностики проблем с функциями расширения

(b) убедитесь, что класс содержитваш метод находится на пути к классам, например

java -cp mycode; saxon9ee.jar net.sf.saxon.Transform -TJ -xsl: xxx.xsl -s: yyy.xml

где mycode - это каталог, содержащий ваш скомпилированный класс

(c) убедитесь, что вы используете релиз Saxon, который поддерживает рефлексивные функции расширения (Saxon-HE нет).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...