XML-Technologien

XML-Technologien

Posts 1-3 of 3
  • User photo
    Natalia Lyundysheva
    The company name is only visible to registered members.
    Attributname in einer Variable übergeben
    Hallo,

    hat jemand eine Idee, wie man den Attributnamen mit einer Variable übergeben kann?

    Folgende Code gibt leider bei der Transformation eine Fehlermeldung (Erwartet wird QName)aus:

    <xsl:attribute name="{$merkmal}"><xsl:value-of select="$value"/></xsl:attribute>

    Vielen Dank!

    Natalia
  • Peter-Josef Meisch
    Peter-Josef Meisch
    The company name is only visible to registered members.
    Re: Attributname in einer Variable übergeben
    Hallo Natalia,

    das sollte prinzipiell gehen. Ich habe gerade mal das folgende Primitivbeispiel getestet:


    test.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <attribut>einAttribut</attribut>


    test.xsl:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="xml"/>
    <xsl:template match="/">
    <xsl:variable name="attrName"><xsl:value-of select="."></xsl:value-of></xsl:variable>
    <EinTag>
    <xsl:attribute name="{$attrName}">mitWert</xsl:attribute>
    </EinTag>
    </xsl:template>
    </xsl:stylesheet>


    das Ganze in Java 6 folgendermassen verarbeitet:

    import java.io.File;

    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.stream.StreamResult;
    import javax.xml.transform.stream.StreamSource;

    public class TransformationTest {

    public static void main(String[] args) {
    try {
    Transformer transformer = TransformerFactory.newInstance().newTransformer(new StreamSource("test.xsl"));
    transformer.transform(new StreamSource(new File("test.xml")), new StreamResult(System.out));
    } catch (Throwable t) {
    t.printStackTrace();
    }
    }
    }


    erzeugt auf meinem Rechner die Ausgabe:

    <?xml version="1.0" encoding="UTF-8"?><EinTag einAttribut="mitWert"/>

    Das Ganze mit den Standardklassen, die bei Mac-Java 6 dabei sind. Ich weiss nicht ob diese Antwort wirklich hilft, aber zumindest die Info, dass die Syntax korrekt ist, könnte bei der weiteren Suche helfen.

    Viele Grüße
    Peter
  • Post visible to registered members