DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Andreas Rauch Artikel Drucken
        
Aus 2 mach 1 oder wie kombiniere ich 2 XML Dateien

Es kommt oft vor, daß Daten auf verschieden XML Dateien verstreut sind. Bestullungen hier, Kundedaten da. Desöfteren höre ich dann die Frage, wie man in einer XSL mit zwei XML Dateien arbeiten kann. Denken wir daran, daß beispw. die XSL Datei aus einer XML Datei aufgerufen wird.

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="bestell.xsl"?>

Dann ist es gut zu wissen, daß eine einfache Methode gibt, um 2 XML Daten für eine Abfrage zu kombinieren.

Es geht einfacher als Sie glauben. Das Stichwort heißt hier <xsl:variable>.  Wir weisen zu Beginn des XSL FIles ein anderes XML File als Varable hinzu.

Fertig? Variablen? Eigentlich schon...


Bereits in einem früheren Artikel http://www.developer-training.de/news.asp?artnr=461 habe ich auf die Möglichkeiten mit Variablen beschrieben. Neu ist heute, daß sie einer Variablen um ein weiteres XML Dokument zuweisen.

Unser Beispiel soll folgendes machen. Wir habe eine Bestelliste im XML Format mit Kunden IDs und eine XML Datei mit Kundendaten.

Kunden mit XSL-Verweis

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="members.xsl"?>
<root>
 <members>
  <name kdid="1">Tobi Terror</name> 
 </members>
 <members> 
  <name kdid="3">Berny Sesam</name>
 </members>
 <members> 
  <name kdid="2">Wolle Knolle</name> 
 </members>
</root>

Die Bestellungen dazu:

<?xml version="1.0" encoding="UTF-8"?>
<root>
 <order kdid="1">
  <art>70</art>
  <art>44</art>
  <art>234</art>
 </order>
 <order kdid="2">
  <art>73</art>
  <art>45</art>
  <art>2323</art>
 </order>
 <order kdid="3">
  <art>72</art>
  <art>46</art>
  <art>2323</art>
 </order>
</root>

Nun passen wir unsere XSL Datei an, um mit beiden XML Dateien arbeiten zu können. Durch den

<xsl:variable name="Texts" select="document('mitglieder.xml')"/>

Tag belegen wir die Varable mit unserem 2-ten XML Dokument- unseren Kundendaten.

Nun wollen wir beispielsweise alle Namen von Kundenhaben, die auch in einer Bestelliste vorkommen. Mit Hilfe einer for each Anweisung und einem geeigneten pattern finden wir alle übereinstimmenden Namen.

< TD> <xsl:for-eachselect="(//members[name/@id=$Texts//Bestellung/@id])">

Unsere gesamte XSL Datei:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:variable name="Texts" select="document('mitglieder.xml')"/> 
   <xsl:template match="/">
    <html><body>< BR>    <table><BR>        <xsl:for-eachselect="(//members[name/@kdid=$Texts//order/@kdid])">
            <tr>
               <td bgcolor="red"><xsl:value-of select="name"/></td>    
            </tr>
         </xsl:for-each>  
    </table>   
    </body></html>
</xsl:template> 
</xsl:stylesheet>

Ergebnis:

Tobi Terror
Berny Sesam
Wolle Knolle

Viel Spaß damit!


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine Links vorhanden

  Erfasst am: 21.11.2001
  Gültig bis: 21.12.2001
12 Ratings
Bewertung: 43,3%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG