Kai: Externes Stylesheet

Beitrag lesen

Hallo,

ich möchte mein xml über eine Transformation (über Java) in eine anderes xml konvertieren. das mache ich folgendermaßen:

TransformerFactory tFactory    = TransformerFactory.newInstance();
Transformer        transformer = tFactory.newTransformer(new StreamSource(args[1]));
transformer.transform(new StreamSource(args[0]), new StreamResult(new FileOutputStream(args[2]));

args[0] ist hierbei die Eingabe-XML-Datei
args[1] ist das Stylesheet
args[2] die Ausgabe-XML-Datei

Ich habe in dem Stylesheet (nenne es mal test.xsl damit man weiß von welchem Stylesheet ich spreche) ein externes Stylesheet, wo nur Variablen definiert sind.

das externe Stylesheet ist folgendermaßen aufgebaut:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:variable name="v1">Title</xsl:variable>
<xsl:variable name="v2">List</xsl:variable>
<xsl:variable name="v3">Help</xsl:variable>
</xsl:stylesheet>

Ich möchte in test.xsl den Wert einer Variable zusammensetzen, der dann dem Attribut name im externen Stylesheet entsprechen soll, um dann den Inhalt auszulesen, d.h. also in test.xsl den Wert der Variable auf "v1" zB bestimmen und dann "Title" zurückzubekommen.

Hier der bisher entsprechende Teil aus der test.xsl:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="iso-8859-1" version="1.0" indent="yes" omit-xml-declaration="no"/>

<xsl:import href="info.xsl"/>

<xsl:template match="/">
    <xsl:apply-templates select="*"/>
  </xsl:template>

<xsl:template match="TEST">
    <mod>
      <xsl:apply-templates select="*"/>
    </mod>
  </xsl:template>

<xsl:template match="HEAD">
    <xsl:variable name="vAkt" select="/TEST/DMN/@DN"/>
    <xsl:variable name="vInfo" select="concat('$v',substring($vAkt,2,1))"/>
    <status>
      <addres>
        <title>
          <info><xsl:copy-of select='$vInfo'/></info>
        </title>
      </addres>
    </status>
  </xsl:template>
</xsl:stylesheet>

Nur schreibt er mir in die transformierte XML-Datei immer den Wert der Variablen vInfo, aber ich möchte doch den Inhalt der Variablen aus der externen Datei. Wenn ich den zusammengesetzten String per Hand eintrage, also <xsl:variable name="vInfo" select="v1"/> dann macht ers richtig, aber so nicht.

Ich hoffe ihr versteht mein Problem und könnt mir helfen. Sonst muss ichs wohl über Java machen :(
Grüße
Kai