Pracuję nad dodaniem internacjonalizacji do mojego XSL. Widziałem mnóstwo przykładów tworzenia pliku dictionary.xml i ładowania go do mojego XSL za pośrednictwem dokumentu ("dictionary.xml"). Chcę zrobić coś podobnego, ale nie chcę tworzyć i przechowywać pliku dictionary.xml na dysku, wolałbym go skompilować z SQL podczas uruchamiania serwera i przechowywać obiekt Document w pamięci w Javie. Chciałbym następnie przekazać dokument słownikowy jako parametr do transformatora, aby moja funkcja tłumaczenia XSL mogła z niego korzystać. Wydaje się jednak, że nie działa.Przekaż dokument jako parametr do tłumaczenia XSL w Javie
odpowiedniego kodu Java:
Document dictionary = TranslationDictionary.getDictionaryDocument();
transformer.setParameter("dictionary", dictionary);
Słownik treści dokumentu:
<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>
Plik 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>
Ale ja nic. Próbowałem po prostu zrobić kopię $ dokumentu/dokumentu, aby potwierdzić, że nie mam problemu z xpath, a to nie jest to, ponieważ to daje mi kopię pełnego dokumentu. To tak, jakby XSL widział słownik $ jako ciąg zamiast węzła. Jakieś wskazówki?
Używam Saxon9 jako mojego XSLT, jeśli to pomaga –
To pomaga i wskazuje na fakt, że to pytanie jest specyficzne dla procesora XSLT i jako takie należy do znacznika "xsltprocessor". –