Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSLT ASCII文本格式_Xslt_Xslt 2.0 - Fatal编程技术网

XSLT ASCII文本格式

XSLT ASCII文本格式,xslt,xslt-2.0,Xslt,Xslt 2.0,我需要得到ASCII文本格式的文件,我使用下面的代码 <xsl:output method="xml" indent="yes" encoding="US-ASCII"/> 但是它似乎不知道如何使它工作?有可能,您的XSLT引擎不支持xml输出方法的ASCII,然后自动切换到UTF-8或UTF-16。您可以尝试使用以下最小XSLT样式表: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" ve

我需要得到ASCII文本格式的文件,我使用下面的代码

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


但是它似乎不知道如何使它工作?

有可能,您的XSLT引擎不支持
xml
输出方法的
ASCII
,然后自动切换到
UTF-8
UTF-16
。您可以尝试使用以下最小XSLT样式表:

<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>
如果支持ASCII,结果应如下所示:

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

更准确地说:“它似乎不起作用”是什么意思?我很好奇ASCII需求的动机。几乎可以肯定,作为XML处理文件的下游进程将能够使用文档编码,例如UTF-8,因为每个XML文档都是Unicode字符序列。而且,不理解XML的下游进程应该能够处理二进制文件。您的场景是什么?规范中哪里说只允许UTF-8和UTF-16?不禁止其他编码。就在我链接的地方,第20章“序列化”。请注意,问题被标记为
xslt-2.0
,因此这是相关的规范。引用:“默认值是实现定义的,但是对于
xml
xhtml
方法,它必须是UTF-8或UTF-16。”规范没有说xml输出方法只允许使用UTF-8和UTF-16。序列化规范只说明,对于不受支持的编码,实现必须引发错误,或者可以退回到那些编码。到目前为止,我们还不知道海报使用的是哪种实现,也不知道“似乎不起作用”是指使用了UTF-8还是16。我同意序列化规范,但XSLT 2本身(我上面的引文)相当明确地说,从
方法=xml
必然遵循
编码=UTF(8 | 16)
,不是吗?不,它说默认值必须是UTF-8或UTF-16。
<?xml version="1.0" encoding="US-ASCII"?>
<root>&#228;</root>
xmllint --encode US-ASCII intermediate.xml > final.xml