2017-03-22 2 views
0

Ich habe die folgenden Daten, die ich transformieren möchte, aber meine Transformationsfähigkeiten sind nicht sehr gut.XML mit Kinddaten transformieren

<anchorSet key="1"> 
    <explodeAble>1</explodeAble> 
    <set key="MuS" name="NaW"/> 
    <standard key="HOLDING DOWN BOLTS"/> 
    <diameter>24.000</diameter> 
    <material key="8.8" name="8.8"/> 
    <item class="Anchor" diameter="24.000"> 
     <material key="8.8" name="8.8"/> 
     <standard key="HOLDING DOWN BOLTS" name="HOLDING DOWN BOLTS"/> 
     <denotation>M24 x 450 HD BOLT</denotation> 
     <weight>1700.00</weight></item> 
    <item class="Washer" diameter="24.000"> 
     <material key="S355JR" name="S355JR"/> 
     <standard key="Flat anchor" name="Flat anchor"/> 
     <denotation>Flat anchor M24 - 100 x 100 x 6</denotation> 
     <weight>450.00</weight></item> 
    <item class="Washer" diameter="24.000"> 
     <material key="8.8" name="8.8"/> 
     <standard key="Flat" name="Flat"/> 
     <denotation>M24 Plain Washer - 8.8</denotation> 
     <weight>32.00</weight></item> 
    <item class="Nut" diameter="24.000"> 
     <material key="GR8" name="GR8"/> 
     <standard key="HEX" name="HEX"/> 
     <denotation>M24 Hexagonal Nut - GR8</denotation> 
     <weight>104.00</weight></item> 
</anchorSet> 

würde Ich mag die Daten von Denotation geordnetes Elemente mit dem Standardschlüssel Knoten kopieren, die in dem Item Class="anchor" Bereich existiert.

zum Beispiel aus der oben würde:

<anchorSet key="1"> 
    <explodeAble>1</explodeAble> 
    <set key="MuS" name="NaW"/> 
    <standard key="M24 x 450 HD BOLT"/> <<--This has been modifed 
    <diameter>24.000</diameter> 
    <material key="8.8" name="8.8"/> 
    <item class="Anchor" diameter="24.000"> 
     <material key="8.8" name="8.8"/> 
     <standard key="HOLDING DOWN BOLTS" name="HOLDING DOWN BOLTS"/> 
     <denotation>M24 x 450 HD BOLT</denotation> <<--By this Data from Here 
     <weight>1700.00</weight></item> 
    <item class="Washer" diameter="24.000"> 
     <material key="S355JR" name="S355JR"/> 
     <standard key="Flat anchor" name="Flat anchor"/> 
     <denotation>Flat anchor M24 - 100 x 100 x 6</denotation> 
     <weight>450.00</weight></item> 
    <item class="Washer" diameter="24.000"> 
     <material key="8.8" name="8.8"/> 
     <standard key="Flat" name="Flat"/> 
     <denotation>M24 Plain Washer - 8.8</denotation> 
     <weight>32.00</weight></item> 
    <item class="Nut" diameter="24.000"> 
     <material key="GR8" name="GR8"/> 
     <standard key="HEX" name="HEX"/> 
     <denotation>M24 Hexagonal Nut - GR8</denotation> 
     <weight>104.00</weight></item> 
</anchorSet> 

Ich schätze diese Hilfe.

+0

Ist die Quelle immer 'class =" Anchor "' oder das erste Element innerhalb des 'anchorSet'? Kannst du deine aktuelle XSLT auch posten? –

+0

Ja, die Quelle ist immer Anker – user6628265

Antwort

1

Wenn, wie es scheint, nur der key Attribut des set Elements ändern möchten, dass das Kind des Wurzel anchorSet Element ist, und lassen Sie alles andere wie es ist, dann tun:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<!-- identity transform --> 
<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="/anchorSet/standard/@key"> 
    <xsl:attribute name="key"> 
     <xsl:value-of select="../../item[@class='Anchor']/denotation"/> 
    </xsl:attribute> 
</xsl:template> 

</xsl:stylesheet> 
Verwandte Themen