Andreas: XML Dokument kopieren und ergänzen

Hallo,

Ich hab folgendes Problem. Gegeben sei folgendes XML Dokument :

<?xml version="1.0" encoding="UTF-8"?>
<mb-datenbank>
 <abteilung>
    <name>
        IT-Abteilung
    </name>
    <angehoerige>
        <mitarbeiter>
            <nachname>Meier</nachname>
            <telefon>3421</telefon>
        </mitarbeiter>
        <mitarbeiter>
            <nachname>Müller</nachname>
            <telefon>5564</telefon>
        </mitarbeiter>
        <mitarbeiter>
            <nachname>Hinkelstein</nachname>
            <telefon>3456</telefon>
              </mitarbeiter>
      </angehoerige>
 </abteilung>
</mb-datenbank>

Jetzt möchte ich diese XML Datei kopieren und mit neuen Attributen anreichern z.B. soll im neuen XML Dokument jeder Mitarbeiter-Elementknoten noch ein entsprechendes Alter haben

....
<mitarbeiter alter="20">
    <nachname>Meier</nachname>
            <telefon>3421</telefon>....

Wie kann ich denn mittels XSL ein XML Dokument kopieren ( also inklusive den ganzen Tags) ?

Ich kann bisher nur Text-bzw. Attribute kopieren; aber die Tags verschwinden.

Vielen Dank im voraus !

  1. Hallo,

    Wie kann ich denn mittels XSL ein XML Dokument kopieren ( also inklusive den ganzen Tags) ?

    Ich kann bisher nur Text-bzw. Attribute kopieren; aber die Tags verschwinden.

    Probiere es so:

      
    <?xml version="1.0" encoding="UTF-8"?>  
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
    <xsl:output method="xml"/>  
      
    <xsl:template match="*">  
      <xsl:copy>  
         <xsl:apply-templates select="@*|node()"/>  
      </xsl:copy>  
    </xsl:template>  
      
    <xsl:template match="mitarbeiter">  
      <xsl:copy>  
        <xsl:attribute name="alter"></xsl:attribute>  
          <xsl:apply-templates select="@*|node()"/>  
      </xsl:copy>  
    </xsl:template>  
      
    </xsl:stylesheet>
    

    Die mitarbeiter-Elemente besitzen danach ein leeres alter-Attribut, welches noch mit einem konkreten Wert zu belegen waere:

      
    <mitarbeiter alter="">...</mitarbeiter>
    

    MfG, Thomas

    1. Sehr herzlichen Dank !!

      Hat mir sehr geholfen !