私は自分のXSLに国際化を追加しています。私はdictionary.xmlファイルを作成し、それをドキュメント( 'dictionary.xml')を介して私のXSLにロードする例をたくさん見てきました。同様のことをしたいのですが、dictionary.xmlファイルを作成してディスクに保存したくない場合は、サーバーの起動時にSQLから構築してDocumentオブジェクトをJavaのメモリに保持してください。私は次に、私のXSL翻訳機能がそれを使用できるように、トランスフォーマへのパラメータとして辞書文書を渡したいと思います。しかし、それは動作していないようです。ドキュメントをパラメータとしてXSLに翻訳する
関連するJavaコード:
Document dictionary = TranslationDictionary.getDictionaryDocument();
transformer.setParameter("dictionary", dictionary);
辞書文書の内容:
<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>
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>
しかし、私は何も得ます。私は$ document/documentのコピーを試してみましたが、xpathの問題がないことを確認しました。そうでないと、完全なドキュメントのコピーが得られます。これは、XSLがノードの代わりに文字列として$ dictionaryを見ているかのようです。すべての手がかりは?
XSLTとしてSaxon9を使用しています。 –
これは、この質問がXSLTプロセッサ固有のものであり、「xsltprocessor」タグに属しているということを助けて指摘しています。 –