首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从XLST生成低阶不可打印字符

从XLST生成低阶不可打印字符
EN

Stack Overflow用户
提问于 2009-07-09 10:19:13
回答 2查看 1.8K关注 0票数 1

我尝试使用XSLT文本输出来生成一个文件(以一种我无法控制的文件格式),虽然它主要是文本,但它包括低阶不可打印字符作为标志,包括在XLST文件中无效的字符(根据XSLT规范)。

我希望像下面这样的东西可以工作,但它不是有效的XSLT文件,因为它包含XSLT文件中不允许的字符:

代码语言:javascript
复制
<?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="/">&#1;</xsl:template>
</xsl:stylesheet>

我得到以下错误:

代码语言:javascript
复制
[Fatal Error] :4:35: Character reference "&#1" is an invalid XML character.
ERROR:  'Character reference "&#1" is an invalid XML character.'
FATAL ERROR:  'Could not compile stylesheet'

我也尝试过使用实际的字符1,无论有没有CDATA部分、xsl:text元素、xslt-2字符映射、几种不同的编码,但我不知道如何获得二进制代码=1的ascii字符。

我不得不对我的输出进行后处理,这并不理想。

有没有办法从XSLT生成一个低阶的不可打印字符输出?

环境:Java6,内置XSL Transformer。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-09 12:56:44

您可以从XSLT调用Java类的静态方法。例如,使用以下hack将0x01写入您的输出流:

代码语言:javascript
复制
<?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>
票数 3
EN

Stack Overflow用户

发布于 2009-07-12 08:16:29

我提出的另一个选择是使用xsl:param,调用环境将其设置为字符0x01。

这意味着样式表在所有环境中都需要环境支持,但在所有环境中都可以不变地工作,而不是总是在java环境中工作,并需要在其他任何地方进行更改。

我还不确定这种权衡的哪一方对我正在做的事情更可取。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1103045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档