- - PR -
saxonの日本語出力について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-03-05 19:22
はじめて投稿します。ご無礼の際は平にご容赦ください。
現在、xhtmlをhtmlに変換するというプログラムをxsltで組んでいます。 プロセッサはsaxson 6.5.1(たぶん最新)を使用しており、そのsaxonの サイトによると、出力は日本語はUTF-8をサポートしているとの事でした。 出力の方法としては、xslt 1.1でサポートされたばかりの、<xsl:document> を使った別ファイルへの書き出し、というものです。 この<xsl:document>および<xsl:output>で、method="xml"を指定すると、 確かにUTF-8で日本語が出力されるのですが、method="html"だと、日本語が 数値文字参照「あ のような形式」になります。 これでブラウザでは普通に表示できるのですが、ファイルは重くなります。 saxsonのサイト http://saxon.sourceforge.net/saxon6.5.1/xsl-elements.html では、method="html"を指定した時の結果については特に説明がなかったよう なので(私が見落としてるだけかもしれませんが)、そこが気になります。 皆さんの中で、似たような事を経験された方はおられますでしょうか。 ご助言いただけると幸いです。 | ||||||||
|
投稿日時: 2002-03-06 10:53
DocBookを書いていて私も同様の問題を抱えていましたが、スタイルシートに以下のように設定することで解決しました。
| ||||||||
|
投稿日時: 2002-03-07 16:27
miki様
さっそくのご返答ありがとうございます。 ご教授いただいた方法は、グローバルパラメタを定義し、それに 何らかの定数を渡すという事はなんとなくわかったのですが、思 った通り、それだけではうまくいかなかったので、色々調べてみ たところ、saxonシリアライザ(「XSLTバイブル」p740)というもの がありました。 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:saxon="http://icl.com/saxon" (追加) version="1.1" extension-element-prefixes="saxon" (追加) exclude-result-prefixes="xhtml"> <xsl:output method="html" encoding="UTF-8" indent="yes" saxon:character-representation="native;entity" (追加) /> これがご教授いただいた方法と近い指定のため、試してみたところ、 うまく日本語が出力されました。 当初、saxonを選んだのも、「プロセッサの実装依存はなるべく避け たい」という前提があったからなのですが、結果的にはsaxon独自の 機能を使う事になりました。 なので、miki様の方法が本来は理想とも思われるのですが、グローバ ルパラメタの他に何が必要なのか、ご提示いただけると幸いです。 まったく初心者な質問で恐縮ですが。 | ||||||||
|
投稿日時: 2002-03-07 19:03
dozaさん、
docbookのパラメタの指定方法だけではわかるはずないですよね。 舌足らずですみませんでした。 以下が私のスタイルシートの全文です。 docbookをimportして変更するパラメタだけ上書きしています。
chunk.xslをざっとながめてみるとdozaさんの指定したのと同じ方法で、xsl:outputのsaxon:character-representation属性に上で指定したパラメタを渡しているだけです。 ちなみに、chunk.xslのヘッダの部分は次のように指定されています。
というわけで、これもsaxon依存の方法でした。 saxonを使った別の方法として、コマンド引数としてXML parserを渡す方法があります(-x classname)。これでXercesを指定すれば、UTF-8以外のエンコーディングでもOKです。 でも、最初からXalanを使うのが最も簡単だと思います。 Xalanでは駄目ですか? | ||||||||
|
投稿日時: 2002-03-08 17:41
miki様
ありがとうございます。 saxonを使う事にした理由というのが、まず、一つのxhtml(xml)から 章や節ごとに別のファイルに出力する必要があって、その手段とし てXSLT1.1で提案された仕様をサポートしているのがsaxonだったか らです。 XSLT1.1も決定ではないものの、やはりそれに従った作りにしておく のがベターかと考えていました。 その上でこの問題が出て、試行錯誤していたのですが、Xalanで日本 語が出力でき、別ファイル書き出しの方法も似ているようなので、 この方法でだめならXalanで、という事も考えていました。 結果的には、プロセッサ依存の部分が出てしまったわけですが、どう も避けられない事だったようですね。 たまたま読んだ「saxonシリアライザ」という仕様がmikiさんの方法と 似ていなかったら、何も気づかなかった事でしょう。 methodが"xml"か"html"かで同じencodeの出力のされ方が違うなど考え てもいなかったのですが、熟練されている方には当たり前の事なので しょうか。この点には非常に興味があります。 | ||||||||
|
投稿日時: 2002-03-09 01:02
saxonのことならsaxonのメーリングリストを探した方が効率的でしたね。
質問の答えが以下のURLに書いてありました。Mike Kay本人からの回答です。 http://sourceforge.net/mailarchive/message.php?msg_id=77069 御参考まで。 |
1