2017-04-05 2 views
0

Ich brauche Datei in ASCII-Text-Format bekommen ich Code unten bin mitXSLT ASCII-Textformat

<xsl:output method="xml" indent="yes" encoding="US-ASCII"/> 

aber keine Idee zu funktionieren scheint, wie kann ich es funktioniert?

+4

genauer sein: was bedeutet „es nicht zu funktionieren scheint“ bedeuten? –

+1

Ich bin gespannt auf die Motivation für die Anforderung von ASCII. Fast sicher, ein nachgeschalteter Prozess, der eine Datei als XML behandelt, wäre in der Lage, eine Dokumentencodierung von beispielsweise UTF-8 zu verwenden, da jedes XML-Dokument eine Folge von Unicode-Zeichen ist. Und ein nachgelagerter Prozess, der XML nicht versteht, sollte in der Lage sein, eine Binärdatei zu verarbeiten. Was ist dein Szenario? –

Antwort

1

Es ist möglich, dass Ihre XSLT-Engine ASCII für die Ausgabemethode xml nicht unterstützt und dann automatisch auf UTF-8 oder UTF-16 umschaltet. Sie können es mit diesem minimalen XSLT-Stylesheet versuchen:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:output method="xml" indent="yes" encoding="US-ASCII"/> 
    <xsl:template match="/"> 
    <root>ä</root> 
    </xsl:template> 
</xsl:stylesheet> 

Wenn Sie es durch Ihren Prozessor ausführen, z. Saxon:

$ saxonb-xslt -s:test.xsl -xsl:test.xsl 

das Ergebnis sollte wie folgt aussehen, wenn ASCII unterstützt:

<?xml version="1.0" encoding="US-ASCII"?> 
<root>&#228;</root> 

Wenn das nicht der Fall ist, müssen Sie einen Nachbearbeitungsschritt. Ein halbwegs aktuelle Version von xmllint kann das tun:

xmllint --encode US-ASCII intermediate.xml > final.xml 
+0

Wo heißt die Spezifikation, dass nur UTF-8 und UTF-16 erlaubt sind? https://www.w3.org/TR/xslt-xquery-serialization/#XML_ENCODING verbietet keine anderen Kodierungen. –

+1

Genau an der Stelle, an die ich mich angeschlossen habe, Kapitel 20 "Serialisierung". Beachten Sie, dass die Frage mit "xslt-2.0" gekennzeichnet ist. Dies ist also die relevante Spezifikation. Zitat: "Der Standardwert ist implementation-defined, aber im Falle der' xml' und 'xhtml' Methoden muss es entweder UTF-8 oder UTF-16 sein." – Boldewyn

+0

Eigentlich scheint es mir beim Lesen Ihres Links genau dasselbe zu sagen, vorausgesetzt, dass die spezifische Implementierung, die OP verwendet, ASCII möglicherweise nicht unterstützt. – Boldewyn