2017-10-09 8 views
1

私の上司はそれについて確かに言いました。キャラクターが「solución」の出力「soluci & 3n」のような奇妙な出力を得る可能性が小さいためです。xsl変換でアクセント記号を付ける最も安全な方法はどれですか?

アクセントをする必要があるいくつかの単語は、それはとても簡単です、それはXSLで元のコードですが、あります。

<table:table-cell table:style-name="TablaIkus.FXI" office:value-type="string"> 
        <text:p text:style-name="PIntBodyLeft">Fecha inicio cómputo intereses</text:p> 
       </table:table-cell> 

事は出力が最終.odtファイルに正しく単語が表示されていることを、次のとおりです。

enter image description here

しかし、念のために... は奇妙な出力を回避するためにアクセントをエスケープする機能はありますか?

+0

のような構文を使用して撮影しましたもしこれがうまくいくならば、 – jvillegas

+0

あなたは何を求めているのかはっきりしていませんXMLはあらゆる文字の意味的に等価な表現を複数提供しますあなたはソース文書でどの表現を使うべきか尋ねていますか?どのような表現が結果の文書に現れているのか? –

+0

こんにちは、英語のネイティブではありません。私ができる最善の方法について質問しました。私はすべてのアクセントについて話していますáàéèììóòúù、同じこれらのアクセント付き文字は大文字で、出力を.odtドキュメントに表示する最善の方法は、起こりうる問題を避けるために同じ 'ààéèììóòúù'を正確に表示することです。 – jvillegas

答えて

2

しかし、念のために... は奇妙な出力を回避するためにアクセントをエスケープする機能はありますか?

XMLは、実質的にすべてのUnicodeをその文字セットとして使用します。アクセント記号付き文字は特別な取り扱いを必要とせず、XMLや一般的にはXSLTでは特にそうではありません。したがって、いいえ、アクセントやアクセント付きの文字をエスケープする機能はなく、必要なものはありません。

あなたの質問には誤解があります。コメントで書いたように、XMLは、同じ文字を表すために複数の、意味的に同等の方法を提供します。これは、XML入力文書、スタイルシート文書、および出力メソッド "xml"の結果文書に適用されます。例えば、文書のエンコーディングがそれをサポートしている場合、文字ó(Unicodeの名前である「ラテン小文字O」)は、文書の文字エンコーディングの表現を介して直接伝えることができますが、同等に表現することもできますXML文字エンティティとして&#xf3;または&#243;の2つの形式のいずれかになります。

XSLTプロセッサは、入力で使用されているものとは異なる文字の表現を含むXMLを出力すると、エラーをコミットしません。状況によっては、実際にそうする必要があるかもしれません。それが実際にそのような変換を実行する場合、それによってドキュメントの意味が変更されることはありません。このようなコンバージョンを避けたいように思えますが、それは心配する必要はありません。

ただし、入力およびスタイルシート文書で、XML宣言で文字エンコーディングが正確に宣言されていることを確認してください。それはエンコーディングを宣言しない場合は、あなたの文書がXML宣言を負担しない場合、または例えば、

<?xml version="1.1" encoding="UTF-8"?> 

は、それらがXMLのデフォルトエンコーディング、UTF-8を使用してエンコードされていることを確信します。あなたのXMLツールへのエンコーディングを誤解させることは、あなたの文書の文字をスクランブルすることができる方法です。

0

アクセント付きの文字で間違っていることは間違いありません。ウェブベースのフォームではアクセント付きの文字、電子メールではアクセント付きの文字で問題は解決しています。すべてが正しく構成されていればすべて動作しますが、すべてを制御するとは限らず、状況が悪くなる機会がたくさんあります。

&#243;のような数字の参照は、誤ったトランスコードに対する1つの防御ですが、XSLT変換(または他の多くのXML処理操作)で生き残れないという問題があります。(およびJavaScriptでそのことについては)XSLTコードでは私は知らない」アップデートを取得しようとすると、最新の質問に表示されるように、このコメントを書く

<xsl:variable name="nbsp" select="codepoints-to-string(160)"/>

関連する問題