2009-05-07 9 views
1

Ich benutze XSLT um einige XML umzuformatieren, um (a) Elemente in Attribute umzuwandeln und (b) alles alphabetisch zu sortieren. Es funktioniert, außer die Attribute sind alle in einer Zeile. Ich verstehe, dass dies normalerweise vorzuziehen ist, aber in diesem Fall muss jedes Attribut in einer separaten Zeile erscheinen, wenn ich die Datei in Notepad ++ (oder was auch immer) öffne.XSLT und Line Feeds

Ich kann XML-Stil Linefeeds mit Xsl: Text hinzufügen, aber das ist nicht was ich will. Das Attribut value-separator funktioniert nicht (dies ist unter XSL-Bibliothek von .NET). Ich möchte "Nicht-XML" -Zeilen-Feeds z. die Art, die ein nicht XML-fähiger Editor interpretiert, um jedes Attribut in seiner eigenen Zeile anzuzeigen. Irgendwelche Ideen?

+0

http://stackoverflow.com/questions/2004386/how-to-save-newlines-in-xml-attribute – batbaatar

Antwort

1

Ich glaube nicht, dass Sie dies mit XSLT tun können. Was Sie suchen, ist ein hübscher Drucker für XML. Warum postest du nicht die Ausgabe von XSLT? Ich übertrage solche Sachen normalerweise durch "xmllint --format -", aber das tut nicht die Formatierung, die Sie wollen. Wie schwer kann es sein, selbst zu rollen? Vor allem, wenn es nur die Teilmenge von XML, die Sie verwenden, tun muss (dieses Zeug wird einfacher, wenn Sie sich nicht um Namespaces etc. kümmern).

+0

Ja, ich denke, Sie haben Recht. Nicht so schwer ... es ist nur so, dass XSL so ziemlich alles unterstützt, ich hatte gehofft, dass es das auch tun würde! Prost und danke. –

0

Es ist nicht klar, was Sie mit „XML“ bedeuten vs. „Nicht-XML“ Zeilenvorschübe, aber ist das, was Sie wollen:

<?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" indent="yes"/> 

    <xsl:template match="/"> 
     <node> 
     <xsl:text>&#010;</xsl:text> 
     </node> 
    </xsl:template> 
</xsl:stylesheet> 
+0

Danke, aber das bringt tatsächlich die # 010 in die Ausgabe. Während ich in der Ausgabe ein CRLF-Zeichen haben möchte, gibt es Zeilenumbrüche, wenn ich die Datei in einem nicht XML-fähigen Editor öffne. –

+0

eigentlich, das ist nicht das, was er will - er will verwenden und diese in einer neuen Zeile beginnen lassen, anstatt mit derselben Zeile wie der Knoten zu beginnen, an den sie angehängt sind ... –

0

Beziehen Sie sich auf Zeilenumbrüche zwischen Attribute oder innerhalb Attributwerte? Wenn letzteres der Fall, kann es einfach nicht getan werden, due to the XML attribute normalization requirements:

Dies liegt daran, XML 1.0 Zeilenumbrüche in Attributwerte erfordert in Räume normalisiert werden, sondern erfordert Zeichenreferenzen Zeichen Newline nicht normalisiert werden. Die Attributwerte im Datenmodell repräsentieren den Attributwert nach der Normalisierung. Wenn eine Newline, die in einem Attributwert in der Struktur vorkommt, als Newline-Zeichen und nicht als Zeichenreferenz ausgegeben wird, enthält der Attributwert in der durch Reparieren der XML-Datei erstellten Struktur ein Leerzeichen und keine neue Zeile, was bedeuten würde, dass die Struktur vorhanden ist wurde nicht korrekt ausgegeben.

+0

I Ich beziehe mich auf zwischen, also erscheinen die Attribute in einem generischen Editor mit einem Attribut pro Zeile. –