XSLT: Dynamische Generierung von (globalen) Variablen möglich?

Guten Morgen Zusammen,

ich habe hier eine interessante XSLT Problemstellung:

Ich folgendes machen:

Ich habe Texte (20 Stück) in einer Datenbank liegen. Statische Texte. Die verwende ich in meinem Stylesheet. Diese Texte würde ich gerne in Variablen ablegen zu Beginn der Verarbeitung von meinem Stylesheet damit ich dann im Verlauf meines Stylesheets nur die Variablen aufrufen muss.

Ziel ist es die Stylesheets für Mehrsprachigkeit fit zu bekommen. Ich haue zu Beginn die Texte in der richtigen Sprache in die immer gleich benannten Variablen rein. Somit brauch im Stylesheet nur die Variablen aufzurufen (wenig Code) und zu Beginn sorge ich dafür, dass die Texte in der richtigen Sprache in die einzelnen Variablen geschoben werden.

Frage: Wie mache ich das möglichst elegant?

Meine Hoffnung war es nur eine Datenbank Abfrage absetzen zu müssen und dann die Variablenname (steht in der DB) dynamisch erstellen zu können und den zugehörigen Wert in der richtigen Sprache dann gleich in der Variable zu speichern. Die misslingt mir allerdings, da ich die Datenbankabfragen in einem Template ausführen muss und wenn ich dort eine Variable erstelle ist sie ja nur in diesem Template verfügbar.

Bleibt mir also nur der Weg über das Konstrukt:

Code:
<xsl:variable name="language" select="de" />

<xsl:variable name="ErsterText">
	<xsl:call-template name="getValueStatischerText">	
		<xsl:with-param name="key" select="ErsterText"/>
		<xsl:with-param name="language" select="$language"/>
	</xsl:call-template>
</xsl:variable>

...

<xsl:variable name="ZweiterText">
	<xsl:call-template name="getValueStatischerText">	
		<xsl:with-param name="key" select="ZweiterText"/>
		<xsl:with-param name="language" select="$language"/>
	</xsl:call-template>
</xsl:variable>

<!-- and so on ... 20 x -->
...

<xsl:template name="getValueStatischerText">
	<xsl:param name="key" />
	<xsl:param name="language" />
	<!--
		Select value from statische_text where language = $language and key = $key;
	-->
	
	<xsl:value-of select=" value FromDatabaseResultSet "/>
	
</xsl:template>

Dann habe ich 20 SQL Abfragen.

Was denkt ihr? Jemand kapiert was ich will? :) Seht ihr evtl. eine einfachere Möglichkeit, die ich vielleicht übersehen habe?

Oder denkt ihr das obige Code Konstrukt ist das maximum was ich rausholen kann?

Viele Grüße
Krusty
 

Neue Beiträge

Zurück