2011-10-25 4 views
1

私は、たとえば、文字エンティティ°をソースxmlに使用していましたが、翻訳後には常に°として出力されて正常に動作しました。しかし、私は最近、xalanプロセッサーをsaxonに切り替えなければなりませんでした。そして現在、キャラクターはhtmlの実際の度合いの文字(°)として出力されており、ブラウザーはこれを¬∞と表示しています。xsltの間に文字エンティティを保持する

それはXalanの中で働いていたが、私の周り探していたと文字マップは、私がこのページで見つけたものから解決策になるだろうと思った理由を私は本当にわからない:

http://www.xmlplease.com/xmltraining/xslt-by-example/examples/character-map_1.html

しかし、私はやるとき同じことが無視されているように見えますが、私はまだ∞を見ています。

再び、私はsaxon9をjava6のantでxsltタスクとともに使用しています。 htmlに変換するときに、xmlの°文字を保存する(または°に変更する)ことをお勧めします。なにか提案を?

+0

保存文字エンティティと一般的実体は、主要な痛みで見る - 文字表現は:

あなたはどのようサクソンserialisesサクソンを使用してHTML出力方法で特殊文字をより細かく制御を得ることができます。私はまた、この質問をしばらく前に投稿した:http://stackoverflow.com/questions/5985615/preserving-entity-references-when-transforming-xml-with-xslt幸運を! –

+0

DevNull:ええ、あなたの投稿を見ましたが、それはテキストエンティティであり、私は文字を扱っています。あなたは、文字エンティティを文字マップを使って保存する必要があると言いますか?私はそれを試して、それが動作しなかったので、行方不明のリンクに何かがありますか? – rjcarr

答えて

3

新しい出力がUTF-8としてマークされていないようですか?

ほとんどの場合、1つの文字が2になると、UTF-8を別のエンコーディング(つまりISO-8859-1、win-1512など)しているブラウザに送信するためです。 HTMLヘッダーにUTF-8エンコーディングを配置するだけでは不十分な場合があります。おそらく、HTTP応答のヘッダーとして配置する必要があります。

°を使用すると、XSLTパーサーがすべてのエンティティを変換する場合に役立ちません。

それ以外の場合は、エンティティの変換を避けるために設定できるフラグがありますか?

+0

応答のおかげで、私はutf-8全体を維持しようとするが、私は100%確実ではない。私は '<!DOCTYPE xhtml PUBLIC" - // W3C // DTD XHTML 1.0 Transitional // EN ">'を持っていて、 'を頭に入れます。私は応答に何があるのか​​を確かめることはできませんが、私はそれについて作業します。 – rjcarr

+0

また、ブラウザはエンコードをUTF-8として報告しています。私はhtml5 doctype '<!DOCTYPE html>に変更しましたが、違いはありませんでした。そして、明らかにするために、htmlのソースを見ると度数(°)が表示されますが、レンダリングされたhtmlは¬∞として表示されます。 – rjcarr

+0

問題がエンコードに関連していたことが分かります。私を助けてくれてありがとう! – rjcarr

2

入力エンティティを強制的に保存することはできませんが、出力encoding = "us-ascii"を使用して非ASCII文字がエンティティまたは文字参照として出力されるようにすることができます。

ブラウザが度数記号を正しく表示しないという事実は、文書が間違ったエンコードで提供されていることを意味します。 us-asciiを使用することでこれを回避することはできますが、どこかの設定に何か問題があるという根底にある問題を解決することはできません(どこを見つけるのが難しいかもしれません)。

文字マップが無視される理由はわかりません。正しくコーディングしたと仮定すると、シリアライゼーションはXSLTプロセッサではなく他の何かによって行われている可能性が最も高いです。たとえば、DOMに変換してDOMをシリアル化するなどです。 http://saxonica.com/documentation/extensions/output-extras/character-representation.xml

+1

お返事ありがとうございます。マップは無視されず、エンティティを保存していない、つまりエンティティではなくhtmlに文字を書き込んでいたことが判明しました。とにかく、あなたが正しいです、問題は私のエンコーディングです。私は別々のページをまとめていますが、それらのすべてが正しくエンコードされているわけではありません(あなたが言ったように、それは伝えるのが難しい)。申し訳ありませんが、前の答えはまた、これを言ったので、私は彼に信用を与える必要があります。しかし、時間のためにそんなにありがとう! – rjcarr

+0

私はこのサイトでブラウニーポイントを獲得することに気を配っている人の一人ではないことを心配しないでください。実際、私はすべての特権とポイントを馬鹿げた幼いものとみなしています。 –

関連する問題