[英]Generate low-order non-printable characters from XLST
我正在尝试使用XSLT文本输出来生成文件(采用我无法控制的文件格式),虽然它主要是文本,但它包含低阶不可打印字符作为标志,包括那些在XLST文件中无效(根据XSLT规范)。
我希望像下面这样工作,但是它不是有效的XSLT文件,因为它包含XSLT文件中不允许的字符:
<?xml version="1.0" encoding="US-ASCII" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" encoding="US-ASCII"/>
<xsl:template match="/"></xsl:template>
</xsl:stylesheet>
我收到以下错误:
[Fatal Error] :4:35: Character reference "" is an invalid XML character.
ERROR: 'Character reference "" is an invalid XML character.'
FATAL ERROR: 'Could not compile stylesheet'
我也尝试过使用实际字符1,带有或不带有CDATA部分,xsl:text元素,xslt-2字符映射,几种不同的编码,但是我不知道如何使用二进制来获取ascii字符。代码= 1。
我不得不求助于我的输出的后处理,这是不理想的。
有什么方法可以从XSLT生成单个低阶不可打印字符输出吗?
环境:Java 6,内置在XSL Transformer中。
您可以从XSLT调用Java类的静态方法。 以下面的例子为例,将0x01写入输出流:
<?xml version="1.0" encoding="US-ASCII" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:char="java.lang.Character" version="1.0">
<xsl:output method="text" encoding="US-ASCII" />
<xsl:template match="/">
<xsl:value-of select="char:toString(1)"></xsl:value-of>
</xsl:template>
</xsl:stylesheet>
我想到的另一种选择是使用xsl:param,调用环境将其设置为字符0x01。
这意味着样式表不是始终在Java环境中工作并且需要在其他地方进行更改,而是在所有环境中都需要环境支持,但是在所有环境中都可以保持不变。
我尚不确定这种权衡的哪一方面适合于我正在研究的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.