2017-01-24 2 views
0

Ich verwende XSLT 2.0. Die Ausgabedaten müssen eine CSV-Datei sein. Für die Telefonnummer Spalte, ist es ein einfaches Wählen von XML in der folgenden Art und Weise:Formatieren der Telefonnummer in XSLT2.0

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

Wenn ich die Ausgabe in einer CSV-Datei zu sehen, ein paar Zahlen kommen als „9.12234E + 11“. Ich habe versucht, dies in eine Zeichenfolge wie folgt zu ändern:

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

Dies ist jedoch nicht hilfreich. Wie kann ich das schaffen?

+0

Bitte senden Sie ein minimales, aber vollständiges XML-Eingabedokument, XSLT-Stylesheet zusammen mit Informationen über den verwendeten XSLT-Prozessor, damit wir das Problem reproduzieren können. Ich verstehe nicht warum '' würde ein exponentielles Format ausgeben, außer die Eingabe hat das. –

+0

Nehmen Sie sich eine Minute Zeit, um den Leitfaden zu lesen: _ [ask] _ enthält viele nützliche Informationen darüber, was in Fragen enthalten sein sollte, damit wir Ihnen helfen können. – mike510a

+1

Wie sehen Sie die CSV-Datei? Sehen Sie es beispielsweise in Microsoft Excel? Dadurch könnten lange Zahlen automatisch exponentiell formatiert werden. Sie können dies möglicherweise lösen, indem Sie die Telefonnummer so formatieren, dass hinter der Ortsvorwahl ein Leerzeichen steht. –

Antwort

0

Meine Vermutung ist, dass Sie in Ermangelung spezifischer Informationen eine schemabewusste Transformation durchführen und das Schema das Feld phone_number als numerisch definiert.

Nun, numerische ist eine schlechte Wahl für ein Telefonnummer Feld. Es kann in Ordnung sein, eine Telefonnummer zu validieren, aber die Semantik ist falsch: Wenn Sie sie beispielsweise als numerisch definieren, werden führende Nullen (oder führende "+" - Zeichen) bedeutungslos. Und es führt zu einer falschen Formatierung, wie Sie gesehen haben.

Eine Telefonnummer sollte im Schema als Zeichenfolge mit einem Muster wie \+?[0-9]+ definiert werden (Sie können dies variieren, um mehr freizügig oder restriktiver zu sein, wenn Sie Ihre Daten kennen).

Wenn Sie das Schema nicht ändern können, können Sie (abhängig vom Prozessor) die ursprüngliche lexikalische Darstellung unter Verwendung von ns:phone-number/text() wiederherstellen.

Verwandte Themen