Я работаю с версией процессора Saxon XSLT с открытым исходным кодом «Saxon 9.0.0.2J от Saxonica» и впервые пытаюсь использовать расширяемость Java. Я столкнулся с проблемой, которая, как я подозреваю, может быть ограничением версии с открытым исходным кодом, но я хотел сначала проверить, может ли быть что-то, что я просто упускаю здесь.
Из фрагмента ниже мой вывод состоит в том, что окончательное значение $c1 не изменяется в результате вызова greg:setTime() - т. е. переменная $c1 в Saxon кажется отсоединенной от базового объекта Java, и существует нет очевидного способа получить доступ к объекту, обновленному вызовом setTime().
ОБРАТИТЕ ВНИМАНИЕ, что весь код во фрагменте проверен и работает иначе, т. е. экземпляр $c1 правильно создается вызовом getInstance(), $startdate имеет правильный формат, а экземпляр $d1 создается правильно.
Мысли?
<xsl:transform
.....
xmlns:sql="java:java.sql.Date"
xmlns:greg="java:java.util.GregorianCalendar"
.....
>
....
<xsl:element name="JobExpireDate">
<xsl:variable name="c1" select="greg:getInstance()" />
<xsl:variable name="d1" select="sql:valueOf($startdate)" />
<xsl:variable name="void" select="greg:setTime($c1,$d1)" />
<xsl:value-of select="$c1" />
</xsl:element>