题
我试图使用XSLT文本输出,以产生一个文件(在我不是在控制下的文件格式),而它主要是文本,它包括低位不可打印的字符作为标志,包括(根据XSLT规范)是无效的XLST文件内的字符。
我想的东西像下面的工作,而是它不是因为它有效的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:文本元素,XSLT-2字符映射,几个不同的编码,但我无法弄清楚如何获得ASCII字符与二进制代码= 1。
我不得不求助于后期处理我的输出,这是不理想的。
是否有任何方式来生成从XSLT单个低阶非打印字符输出?
环境:Java 6中,内置于XSL变压器
。解决方案
您可以打电话从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它调用环境设置为字符0×01
这意味着不用的Java环境中一直在努力,并且无需更改任何其他地方的样式表要求在所有环境中的环境支持,但在他们所有的工作不变。
我还不知道哪个是权衡的侧优选的是,什么我的工作。
不隶属于 StackOverflow