Announcement

Collapse
No announcement yet.

Wert aus externem XML-File bestimmen

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

  • Wert aus externem XML-File bestimmen

    Ich habe zwei XML-Files.
    File1 enthält eine GUID, File2 enthält die GUID sowie einen zugehörigen Namen.

    Nun möchte ich File1 per XSLT transformieren, um den Namen der GUID auszugeben.

    Beispiel:
    File1:
    <Job>
    <TemplateGuid>7fb66320-b8ab-4642-a6c1-6042712e2676</TemplateGuid>
    </Job>


    File2:

    <Globals>
    <GlobalInfo>
    <GlobalName>name1</GlobalName>
    <GlobalType>T1</GlobalType>
    <GlobalNetworkID>4a2e8353-ec77-4777-9c83-f6a72595cc40</GlobalNetworkID>
    </GlobalInfo>
    <GlobalInfo>
    <GlobalName>name2</GlobalName>
    <GlobalType>T2</GlobalType>
    <GlobalNetworkID>9688e346-0f30-4b72-9e81-18e5babbbeb8</GlobalNetworkID>
    </GlobalInfo>
    <GlobalInfo>
    <GlobalName>name3</GlobalName>
    <GlobalType>T1</GlobalType>
    <GlobalNetworkID>b44341ca-bb93-42e0-a2d7-aa8c4ad9087d</GlobalNetworkID>
    </GlobalInfo>
    </Globals>


    Mein Ansatz sieht bisher so aus:

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xslutput method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:variable name="paramDoc" select="document('c:\Connector\ProfilesList.xml')"/>
    <xsl:variable name="templGuid" select="/Job/TemplateGuid"/>
    <xsl:template match="/">
    <xsl:for-each select="$paramDoc/Globals/GlobalInfo">
    <xsl:if test="GlobalNetworkID = $templGuid">
    <xsl:value-of select ="GlobalName"/>
    </xsl:if>
    </xsl:for-each>
    </xsl:template>
    </xsl:stylesheet>


    Allerdings funktioniert der if-Test anscheinend nicht.

    Was mach ich falsch?


    Danke für die Hilfe,

    Sebastian

  • #2
    Im Beispiel kommt die TemplateGuid aus File 1 nicht in File 2 vor!

    Wenn die Guid-Elemente eindeutig sind, dann sollte reichen:

    Code:
    <xsl:template match="/">
      <xsl:value-of select="$paramDoc/Globals/GlobalInfo[GlobalNetworkID=$templGuid]/GlobalName"/>
    </xsl:template>
    Schreibe den Pfad besser URI-konform als 'file:///c:/Connector/ProfilesList.xml'.

    Comment

    Working...
    X