2017-01-24 23 views
0

私はXSLT 2.0を使用しています。出力データはcsvファイルでなければなりません。電話番号欄には、それは次のようにXMLからの簡単な選択である:私はcsvファイルに出力を表示するとXSLT2.0での電話番号の書式設定

<xsl:value-of select="ns:phone[ns:is_primary = 'true']/ns:phone_number"/> 

、いくつかの数字は、「9.12234E + 11」として来ます。私はこれを次のような文字列に変更しようとしました:

<xsl:value-of select="ns:phone[ns:is_primary = 'true']/format-number(ns:phone_number,'############')"/> 

これは問題を解決するものではありません。どうすればこの作品を作れますか?

+0

問題を再現できるように、使用されているXSLTプロセッサに関する情報とともに、最小限で完全なXML入力ドキュメント、XSLTスタイルシートを投稿してください。なぜ入力がそうでなければ ''が指数形式を出力するのかわかりません。 –

+0

ガイドを読み進めてください:_ [ask] _あなたのお手伝いをするために質問に含めるべきものについてたくさんの有益な情報が含まれています – mike510a

+1

どのようにCSVファイルを見ていますか?おそらく、それをMicrosoft Excelで表示していますか?これは、自動的に長い数値を指数関数的にフォーマットすることです。市外局番の後にスペースがあるように電話番号をフォーマットすることでこれを解決することができます。 –

答えて

0

具体的な情報がない場合は、スキーマ対応トランスフォーメーションを実行しており、スキーマはphone_numberフィールドを数値として定義していると思います。

ここで、数値は電話番号フィールドにとって悪い選択です。電話番号の検証では問題ありませんが、意味は間違っています。たとえば数値として定義すると、先行ゼロ(または先頭の「+」記号)は重要ではありません。そしてあなたが見たように、それは間違ったフォーマットにつながります。

電話番号は、\+?[0-9]+のようなパターンの文字列としてスキーマに定義する必要があります(これは、データを知っていればより許容的またはより制限的にすることができます)。

スキーマを変更できない場合は、プロセッサによっては、ns:phone-number/text()を使用して元の字句表現を復元できます。

関連する問題