2013-02-20 13 views
7
<events> 
    <main> 
     <action>modification</action> 
     <subAction>weights</subAction> 
    </main> 
</events> 
<SeriesSet> 
    <Series id="Price_0"> 
     <seriesBodies> 
      <SeriesBody> 
       <DataSeriesBodyType>Do Not Copy</DataSeriesBodyType> 
      </SeriesBody> 
     </SeriesBodies> 
    </Series> 
</SeriesSet> 

Wie kopiere ich alle xml und schließen die DataSeriesBodyType ElementXSLT Kopieren Sie alle Knoten außer 1 Element

+1

[? Was haben Sie versucht] (http://whathaveyoutried.com) –

Antwort

17

Sie müssen nur die Identität Vorlage verwenden (wie Sie verwendet) und dann eine Vorlage DataSeriesBodyType passend zu benutzen, die tut nichts.

würde der Code sein:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 


    <xsl:output method="xml" encoding="utf-8" indent="yes"/> 

    <!-- Identity template : copy all text nodes, elements and attributes --> 
    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()" /> 
     </xsl:copy> 
    </xsl:template> 

    <!-- When matching DataSeriesBodyType: do nothing --> 
    <xsl:template match="DataSeriesBodyType" /> 

</xsl:stylesheet> 

Wenn Sie die Ausgabe zu leeren Datentextknoten zu entfernen, fügen Sie dann zum vorherigen Sheet die folgende Vorlage normalisieren wollen:

<xsl:template match="text()"> 
    <xsl:value-of select="normalize-space()" /> 
</xsl:template> 
+0

Ich habe versuchte das, aber es gibt das Element ohne einen Wert zurück. Ich möchte nicht, dass das Element überhaupt angezeigt wird. – user2092096

+0

Der von Ihnen gepostete XML-Code ist nicht der vollständige XML-Code und enthält einige Fehler (z. B. seriesBody mit einem abschließenden Tag SeriesBody). Daher habe ich meinen Code mit einer korrigierten Version Ihres XML-Codes überprüft (der möglicherweise nicht derselbe ist). Überprüfen Sie, dass der Name, wenn die Übereinstimmung = "DataSeriesBodyType" genau übereinstimmt (Groß- und Kleinschreibung eingeschlossen), und wenn es nicht funktioniert, buchen Sie Ihr komplettes XML. –

+0

Und welches Element möchten Sie DataSeriesBodyType oder SeriesBodyType ausschließen? Ersetzen Sie einfach den den Übereinstimmungsattributwert durch den XML-Elementnamen, der ausgeschlossen werden soll. –

4

Es ist auch ein toller Eintrag auf XMLPlease.com über diese Fragen. Es enthält viele Beispiele für Elemente ohne Attribute, Elemente umbenennen etc. etc.

nächste Webseite: http://www.xmlplease.com/xsltidentity