Announcement

Collapse
No announcement yet.

msxsl.exe

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • msxsl.exe

    Hallo,
    ich möchte mit msxsl.exe (oder kann mir jemand eine alternative für windows 7 nennen) eine Transformation durchführen, wobei ich neben dem Input xml und dem stylesheet weitere xml files angeben möchte, die zur Bestimmung bestimmter tags des ausgangs-xml dienen (art parameter übergabe). Beispiel:
    Ausgang xml:
    <hugo id="1"></hugo>

    "Hilfs-xml":
    <hugo id="1">Blau</hugo>
    <hugo id="2">rot</hugo>
    etc.

    Bei der Transformation soll dann quasi erst der Wert des Ausgangs xml tag "hugo" bestimmt werden. Im Beispiel "Blau" und anschließend die eigentliche Transformation durchgeführt werden.
    Kann/Wie kann ich das mit msxsl oder msxml (oder???) realisieren?

  • #2
    Verwende die document()-Funktion, um auf das zweite XML-Dokument zuzugreifen. Ansatz:
    test.xml
    [Highlight=xml]<?xml version="1.0" encoding="UTF-8"?>
    <test>
    <hugo id="1"></hugo>
    </test>[/Highlight]
    param.xml
    [Highlight=xml]<?xml version="1.0" encoding="UTF-8"?>
    <param>
    <hugo id="1">Blau</hugo>
    <hugo id="2">rot</hugo>
    </param>[/Highlight]
    test.xsl
    [Highlight=xml]<?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="test">
    <xsl:value-of select="document('param.xml')/param/hugo[@id = current()/hugo/@id]"/>
    </xsl:template>
    </xsl:stylesheet>[/Highlight]
    Ergebnis (test.xml + test.xsl): Blau
    Über Abfragen auf den jeweils erhaltenen Wert lassen sich weitere Template-Aufrufe steuern.

    Das sollte auch mit msxsl.exe funktionieren, die Nutzung von Saxon wurde gerade hier genannt.

    Comment

    Working...
    X