Haftungsausschluss: Folgendes ist eine Sünde gegen XML. Deshalb versuche ich es mit XSLT zu ändern :)Attribut-Whitespace beibehalten
Meine XML sieht derzeit wie folgt aus:
<root>
<object name="blarg" property1="shablarg" property2="werg".../>
<object name="yetanotherobject" .../>
</root>
Ja, ich bin alle Textdaten in Attribute setzen. Ich hoffe, dass XSLT mich retten kann; Ich möchte zu etwas bewegen:
<root>
<object>
<name>blarg</name>
<property1>shablarg</name>
...
</object>
<object>
...
</object>
</root>
Ich habe tatsächlich all dies habe bisher funktioniert, mit der Ausnahme, dass meine Sünden gegen XML gewesen mehr ... außergewöhnlich. Einige der Tags wie folgt aussehen:
<object description = "This is the first line
This is the third line. That second line full of whitespace is meaningful"/>
ich xsltproc unter Linux verwenden bin, aber es scheint keine Optionen zu haben Leerzeichen zu erhalten. Ich habe versucht, xsl: preserve-space und xml: space = "preserve" vergebens zu verwenden. Jede Option, die ich gefunden habe, scheint zu gelten, Whitespace innerhalb der Elemente selbst zu behalten, aber nicht die Attribute. Jedes einzelne Mal, wird die oben geändert:
This is the first line This is the third line. That second line full of whitespace is meaningful
Die Frage ist also, ich kann das Attribut Leerzeichen bewahren?
Sie sollen Ihre weiß-Räume mit Entitätsverweise für innerhalb des attribe Wertes ersetzen, wie ersetzen '' mit ' '. Die Attributwertnormalisierung (3.3.3) hängt dann vom Attributtyp ab, von dem ich denke, dass er "CDATA" defatult ist. Ich denke jedoch, dass Sie es mit ' '>' erzwingen können - kann oder auch nicht korrekt sein. Wenn Sie eine XSL-Datei haben, müssen Sie sicherstellen, dass Sie mit Ihrem White-Space manuell arbeiten. Dies geschieht ähnlich wie bei 'string-join()' und 'tokenize()'. –
n611x007
*** Es kann getan werden. *** Sie können ein vollständiges Beispiel ([SSCCE] (http://www.sscce.org/ "Kurz, unabhängig, korrekt (kompilierbar), Beispiel")) aus meine Antwort auf eine andere Frage: http://stackoverflow.com/a/29780972/611007 (Wie ich oben erklärte, ist es nicht die Art, wie Sie es versuchen, aber am Ende wird es funktionieren, wie Sie möchten.) – n611x007
bezogen werden: https://stackoverflow.com/questions/449627/ - bezogen werden: https://stackoverflow.com/questions/2004386/ - bezogen werden: https://stackoverflow.com/questions/1289524/ – n611x007