2013-09-25 4 views
0

Tentative de génération d'un nombre aléatoire à l'aide de la classe Java UUID.Appel de méthodes Java dans XSLT

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    exclude-result-prefixes="xs" xmlns:uuid="java:java.util.UUID"> 
<xsl:template match="/"> 
<xsl:variable name="uid" select="uuid:randomUUID()"/> 
<ClientPK><xsl:value-of select="$uid"/></ClientPK> 

Erreur

Cannot find a matching 0-argument function named {java:java.util.UUID}randomUUID(). 
    Note that direct calls to Java methods are not available under Saxon-HE 

Répondre

2

Voir http://saxonica.com/documentation/index.html#!extensibility, si vous voulez utiliser Saxon 9 et ont cette caractéristique (appelées fonctions d'extension réflexifs) vous avez besoin d'une licence pour PE ou EE.

+0

Alors, n'y a-t-il pas d'autre moyen d'appeler les fonctions Java lors d'une transformation XSLT que de payer les droits de licence (élevés) de Saxon? – Black

+0

Cela dépend du processeur XSLT que vous voulez utiliser, il y a le XSLT 1.0 Xalan processeur qui je pense a des mécanismes similaires pour appeler en Java, il y a Saxon 6.5, également un processeur XSLT 1.0, puis il existe différentes versions de Saxon 9, Saxon 9.1 B était la dernière version du produit open source pour permettre d'appeler directement en Java. Depuis 9.2 si vous voulez ce que la matrice de fonctionnalités http://saxonica.com/documentation/index.html#!extensibility appelle "fonctions d'extension réflexives" alors vous avez besoin de PE ou EE, mais l'open source HE prend en charge une nouvelle fonctionnalité appelée " fonctions d'extension intégrées ". –

+0

merci pour la grande info. J'utilisais Saxon 6.5, mais j'ai trouvé que lorsque vous mettez à jour Java vers la version 8, il y a des bugs avec le vieux Saxon qui ne peuvent être corrigés qu'en mettant à jour :(Je vais vérifier ce que cette nouvelle fonctionnalité de HE – Black

Questions connexes