- - PR -
XSL - 特殊文字を入れるには?
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-03-02 14:01
XSLTで特殊文字を含んだ文書を生成したいと思っています。
具体的に使用しなければならない文字はUnicodeの0007のBELです。ネットで調べたところ、
のように書けば使えると書かれていましたが、実際に処理してみるとエラーが出ます。エラーの内容は以下のとおりです。使用しているXSLTプロセッサはsaxonです。
ご存知の方がいらっしゃいましたらよろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2006-03-02 15:37
提示の コードは無関係では
エラーメッセージを無料翻訳サイトに投げ込みます、からだを動かす。 file:/C:/0/x.xsl の 3行の4カラム の上のエラー XMLパーザによって報告されたエラー:予期されたコメントあるいはCDATAセクション(「D」を見つけた) 変形は失敗しました: スタイル・シート を解析するに失敗されました。 結論:スタイル・シートをよく見る | ||||||||||||
|
投稿日時: 2006-03-03 07:50
MMXさん、返信ありがとうございます。
そうですね。いろいろ試しすぎて混乱していました。 エラーが出ていた3行目の部分は"<!DOCTYPE test ["なのですが、これを以下のようにしてみましたが、これでもまだ同じエラーが出ます。
また、DOCTYPEで宣言するのをやめて、以下のように直接指定してみたところ別のエラーが出ました。
このエラーは理由が分かりません。U+7は意図したBELマークのはずなのですがなぜ不正な文字と言われるのか・・・ | ||||||||||||
|
投稿日時: 2006-03-03 09:29
細木数子のように言います
「からだを動しなさい、そうしないと地獄に落ちるわよ」 翻訳サイトに 被害者の ダイイング・メッセージを 投げ込みます。 Error reported by XML parser: illegal XML character reference U+7 ↓ とは? XMLパーザによって報告されたエラー:不法なXML人物証明書 U+、7 訳語のエラー、character reference → 人物証明書 では、次の賢者(翻訳サイト)に聞きに行きます 誤りはXMLパーサで報告しました: 不法なXML 文字参照 U+7 では、XMLに使える文字コード を調べる旅に 出発です。 続く | ||||||||||||
|
投稿日時: 2006-03-03 14:27
XMLは全てのUnicodeを使えるわけではないのでしょうか?
以下のページには「JavaやXMLは、基本コードとして、Unicodeを採用しています。」と書かれていますし、また、「UTF-8は、UnicodeとASCIIコードを混在させるための規格です。Unicodeでは、0x0000-0x007Fの文字コードは、ASCIIコードの0x00-0x7Fと同じとなっていることを利用して変換します。」とも書かれています。 http://ash.jp/code/code.htm 問題のBELマークはUnicodeでU+0007であることは以下のページで確認しました。 http://www.unicode.org/charts/PDF/U0000.pdf | ||||||||||||
|
投稿日時: 2006-03-03 15:26
弁護士のように 確認,確認
やさしく読む「XML 1.0勧告」 http://www.atmarkit.co.jp/fxml/indexes/index_col.html#xe13 5.「整形式」のXML文書と文字の定義 http://www.atmarkit.co.jp/fxml/rensai/w3cread05/w3cread05.html ■XMLで定める「文字」とは? さて、文字のEBNFによる定義は以下のようになっている。 そのようになった理由は 第1回 XMLの仕様書によると、XMLの目標とは…… http://www.atmarkit.co.jp/fxml/rensai/w3cread01/w3cread01.html 文書指向の「軸」があるのがわかります。(歴史と言うもの) データ指向の人々は XML1.1を立てました。 XML 1.1では、文字参照を使うことで文書の中に制御文字を持てるようになっています。これらは #x1 から #x1F までの制御文字ですが、XML 1.0ではその大部分が禁止されています。 パーサーが1.1仕様で動作可能なら 使えます。 ただし、他にそのxmlデータを持って行くときは知りません。 ================= 生の [BEL] は置けないが 文字符号化(BASE64など)したり MIME で外部の実体にすると バイナリは置けます。 ================ 以上、からだを1時間ていど動かすと、理解できます [ メッセージ編集済み 編集者: MMX 編集日時 2006-03-03 15:39 ] | ||||||||||||
|
投稿日時: 2006-03-06 08:57
教えていただいたページを読んでやっと特定の文字が使えない理由が分かってきました。
Base64でエンコードする方法も考えてみましたが、XSLTで生成されたデータはPHPに渡してさらに処理する予定なので、特殊文字の部分だけPHPで変換させることにします。 今まで何気なく使っていましたが、思いもかけず改めてXMLの勉強ができて為になりました。ありがとうございました。 |
1