Estoy trabajando en la internacionalización de la adición a mi XSL. He visto muchos ejemplos de cómo crear un archivo dictionary.xml y cargarlo en mi XSL a través de un documento ('dictionary.xml'). Quiero hacer algo similar, pero no quiero crear y almacenar el archivo dictionary.xml en el disco, prefiero construirlo desde SQL al inicio del servidor y mantener el objeto Document en la memoria en Java. Me gustaría pasar el documento del diccionario como un parámetro al transformador para que mi función de traducción XSL pueda usarlo. Sin embargo, no parece estar funcionando.Pase el documento como parámetro a la traducción XSL en Java
Relevante código Java:
Document dictionary = TranslationDictionary.getDictionaryDocument();
transformer.setParameter("dictionary", dictionary);
El contenido diccionario documento:
<dictionary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<translatedString dictionaryId="BASIC_DETAILS">
<language id="es" value="Detalles Básicos"/>
</translatedString >
<translatedString dictionaryId="VEHICLE_INFORMATION">
<language id="es" value="Información del Vehículo"/>
</translatedString >
<translatedString dictionaryId="STRUCTURE">
<language id="es" value="Estructura"/>
</translatedString >
<translatedString dictionaryId="DRIVER_INFORMATION">
<language id="es" value="Información del Conductor"/>
</translatedString >
<translatedString dictionaryId="MAINTENANCE_AND_FEUL">
<language id="es" value="Mantenimiento & Combustible"/>
</translatedString >
<translatedString dictionaryId="PURCHASING">
<language id="es" value="Compra"/>
</translatedString >
</dictionary>
El archivo XSL:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://www.test.com">
<xsl:param name="dictionary"/>
<xsl:param name="language" select="'es'"/>
<xsl:template match="/">
<xsl:message>
<xsl:copy-of select="$dictionary/dictionary/translatedString[@dictionaryId='BASIC_DETAILS']/language[@id='es']/@value"/>
</xsl:message>
</xsl:template>
Pero no consigo nada. Intenté simplemente hacer una copia de $ documento/documento para confirmar que no estoy teniendo un problema xpath, y no es eso, porque eso me da una copia del documento completo. Es como si el XSL estuviera viendo $ dictionary como una cadena en lugar de un nodo. ¿Alguna pista?
Estoy usando Saxon9 como mi XSLT, si eso ayuda –
Eso ayuda y señala el hecho de que esta pregunta es específica del procesador XSLT y, como tal, pertenece a la etiqueta "xsltprocessor". –