Das Problem ist, dass "/"
der Stamm ist, nicht das Stammelement (oder "Dokumentelement").
Hierarchisch ist "/"
eine Ebene über das Dokumentelement ( <Address>
, in Ihrem Fall). Also das:
würde tatsächlich funktionieren. Merken Sie den winzigen kleinen Unterschied? Schöner wäre das:
%Vor%Nur um etwas zu erweitern und zu verdeutlichen, was Tomalak geschrieben hat: Der Stamm eines XML-Dokuments befindet sich in der DOM-Hierarchie oberhalb des obersten Elements . Es ist ungewöhnlich, die beiden verwirrt zu sehen. Betrachten Sie dieses XML-Dokument:
%Vor% Der Stamm dieses Dokuments hat drei untergeordnete Knoten: einen Kommentarknoten, einen Elementknoten und einen weiteren Kommentarknoten. Das Element auf oberster Ebene heißt root
, weil jeder, der XML-Instanzdokumente erstellt, dies tut, um die Verwechslung zwischen dem Dokumentenstamm und dem Element der obersten Ebene aufrechtzuerhalten. (Vor allem, wenn sie immer noch an dem Punkt in ihrer XML-Ausbildung sind, wo sie "Knoten" verwenden, wenn sie "Element" bedeuten.)
Dies bringt uns zu einem der Gründe, dass die Vorlage, die Tomalak als "netter" beschreibt, schöner ist. Wenn Sie die Identitätstransformation erweitern, ändert XSLT in Ihrem Dokument nur die Elemente, für die Sie Vorlagen erstellt haben. Jeder andere Knoten im Dokument wird unverändert kopiert. Wenn also Ihr Eingabedokument wie im obigen Beispiel Kommentare um das Element der obersten Ebene enthält, werden sie nicht aus der Ausgabe entfernt, wie wenn Sie einfach eine Vorlage implementiert hätten, die dem Element Address
entspricht.
Natürlich, wenn Sie wollen Ihre Ausgabe, um Kommentare auszuschließen, das ist auch leicht zu erreichen; Implementiere die Identitätstransformation einfach nicht.
Tags und Links xml asp-classic xslt