2009-07-09 10 views
1

XSLTテキスト出力を使用してファイルを生成しようとしていますが、それは主にテキストですが、 XLSTファイル内で有効でない文字(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="/">&#1;</xsl:template> 
</xsl:stylesheet> 

私は次の取得エラー:テキスト要素、XSLT-2文字のマップ、異なるエンコーディングのカップルが、私は理解することはできません。

[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' 

私は、またはCDATAセクションなくて、あまりにも実際の文字1とXSLを試してみましたバイナリコード= 1でASCII文字を取得する方法を教えてください。

出力を後処理する必要がありましたが、これは理想的ではありません。

XSLTから下位の印刷不可能な文字出力を生成する方法はありますか?

環境:Java 6、XSL Transformerに組み込まれています。

答えて

3

Javaクラスの静的メソッドをXSLTから呼び出すことができます。あなたの出力ストリームには0x01を書き込むために、たとえば、以下のハックを使用します。PARAM呼び出し元の環境には文字が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> 
+0

ありがとうございます - 私の環境のために動作します。純粋なXSLTソリューションはありませんか? –

+0

私は、XSLTの本来の意図は、バイナリデータではなく「読み取り可能な」出力を生成することだと思います。バイナリ形式は、XSL-FOのドメインです。 「実際の」バイナリ形式の場合、XSLは選択の道具ではありません。 – ftl

+0

私の出力は大部分が判読可能なテキストです。もともとhtmlを生成するように設計された既存のxsltスタイルシートを適合させています。非常に小さな変更を加えて、私は必要なときにほぼ正確に作業しています。 –

0

私が作ってみた別のオプション、XSLを使用することです。

これは、常にJava環境内で作業し、他の場所で変更を必要とするのではなく、スタイルシートがすべての環境で環境サポートを必要としますが、すべて変更されないことを意味します。

私は、そのトレードオフのどちら側が私が取り組んでいるものにとって好ましいのかまだ分かりません。

関連する問題