Erweiterte XFA-Picture-Clauses

Aktiviere TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript, um diese Pictures in FormCalc-Ereignissen sowie in Calculate- und Validate-Skripten über die mitgelieferte QuickJS-Engine zu nutzen

Format(picture, value) erzeugt Anzeigetext und Parse(picture, text) erzeugt kanonische Werte; Locale-Auswahl, quotierte Literale und Alternativen folgen FormCalc-Locale- und Picture-Funktionen

Numerische Präzision und wissenschaftliche Notation

SymbolVerhalten
EFormatiert einen vorzeichenbehafteten Exponenten zur Basis 10 hinter der Mantisse; die führenden und Nachkommastellen-Positionen bestimmen die Mantissengenauigkeit, wobei Rundungsüberträge angewendet werden, bevor der Exponent ausgegeben wird
8Behält die ausgedrückte Nachkommastellen-Präzision des gelieferten Dezimaltexts bei, einschließlich abschließender Nullen; fehlende Nachkommastellen lassen den Dezimalradix weg, und eine Folge von 8 Symbolen kann mehr gelieferte Nachkommastellen bewahren als ihre Länge

Wissenschaftliche Mantissen nutzen höchstens 15 Ziffernpositionen; Exponentengrößen und Dezimalausdehnung sind auf 10000 begrenzt, und nicht endliche Werte ergeben leeren Text

Präzisions-Pictures bewahren quotierte Literale vor und nach Nachkommastellen-Positionen; Prozent-Skalierung verschiebt den ursprünglichen Dezimaltext, ohne abschließende Nullen durch die binäre Floating-Point-Konvertierung zu verlieren

Übergib Dezimalstrings, wenn ihre ausgedrückte Präzision zählt; numerische JavaScript-Werte haben die binäre Floating-Point-Konvertierung bereits vor der Formatierung durchlaufen

Format("num{99.999E}", 12345)             // 12.345E+3
Parse("num{99.999E}", "12.345E-2")       // 0.12345
Format("num{zzz,zz9.8}", "12345.0000")   // 12,345.0000
Parse("num{zz9.8}", "12.3400")           // 12.3400
Format("num{zz9.8%}", "0.1250")          // 12.50%

Ordinal- und Wochendaten

SymbolVerhalten
J, JJJTag des Jahres, von 1 bis 366; JJJ padet auf drei Stellen, und das Parsing validiert Schaltjahre
ENumerischer Wochentag von 1 für Sonntag bis 7 für Samstag; EEE und EEEE verwenden weiterhin abgekürzte und volle Locale-Wochentagsnamen
eISO-Wochentag von 1 für Montag bis 7 für Sonntag
WWISO-Woche von 01 bis 53; Woche 01 enthält den 4. Januar, und ein Jahr in diesem Picture ist das ISO-Wochenjahr
wMonatswoche von 0 bis 5, beginnend am Sonntag; die erste Woche muss mindestens vier Tage des Monats enthalten

Das Parsen von Ordinal- oder Wochendaten liefert das entsprechende ISO-Kalenderdatum; widersprüchliche Tages-, Monats-, Wochentags- oder Wochenwerte liefern leeren Text

Vierstellige frühe Jahre werden ohne die JavaScript-Jahrhundertanpassung konstruiert, einschließlich der Jahre 0000 bis 0099; historische Alternativ-Ären bleiben außerhalb dieser Pictures

Format("date{YYYY-JJJ}", "2024-02-29")   // 2024-060
Parse("date{YYYY-WW-e}", "2020-53-5")    // 2021-01-01
Format("date{w}", "2004-07-03")          // 0

Weitere Uhr-Varianten

k und kk drücken eine 0–11-Stunde innerhalb des Meridiems aus; K und KK drücken eine 1–24-Stunde innerhalb des Tages aus, wobei 24 für Mitternacht steht

Verwende A mit k-Uhren zur Unterscheidung von AM und PM; kleines z formatiert einen ISO-Offset ohne Doppelpunkt, zz verwendet einen Doppelpunkt, und großes Z gibt GMT oder GMT mit explizitem Offset aus

Globale Picture-Symbole

SymbolEingabeparsenAusgabeformatierung
?Verbraucht einen Unicode-CodepointErzeugt ein Leerzeichen
*Verbraucht null oder mehr umbrechbare Whitespace-ZeichenErzeugt ein Leerzeichen
+Verbraucht ein oder mehr umbrechbare Whitespace-ZeichenErzeugt ein Leerzeichen

Diese Symbole funktionieren in Date-, Time-, Datetime-, Number- und Text-Pictures; quotierte Symbole bleiben literale Zeichen, supplementäre Unicode-Zeichen zählen als ein Zeichen, und geschützte Leerzeichen sind vom Whitespace-Matching ausgeschlossen

Zusammengesetztes Eingabeparsen

Zusammengesetzte Date- und Time-Clauses kombinieren sich zu kanonischem ISO-Datums-Zeit-Text; wiederholte Darstellungen desselben Werts müssen übereinstimmen, und literale Trenner werden vor der Annahme der Eingabe geprüft

Wiederholte Scalar-Clauses müssen dieselbe kanonische Zahl oder denselben kanonischen Text erzeugen; inkompatible Kategoriekombinationen, widersprüchliche Werte, unvollständiger Verbrauch oder mehrfach unterschiedliche kanonische Ergebnisse liefern leeren Text

Zusammengesetztes Parsen erlaubt 64 Teile, 8192 UTF-16-Eingabeeinheiten und 8192 Parse-Versuche und teilt sich die Runtime-Operations- und Ablaufzeit-Budgets; das Überschreiten dieser Grenzen lässt die Ereignistransaktion fehlschlagen

Parse("date{YYYY-MM-DD} time{HH:MM:SS}", "2024-02-29 12:34:56")
// 2024-02-29T12:34:56
Parse("date{YYYYMMDD}time{HHMMSS}", "20240229123456")
// 2024-02-29T12:34:56

Laufzeitverhalten und aktuelle Grenzen

Berechnete Felder und Ereignisse nutzen dieselbe Implementierung und Locale-Metadaten; fehlgeschlagene Skripte stellen Dokumentwerte und committeten JavaScript-Zustand wieder her, und gespeicherte XDP-Daten behalten erfolgreiche Ergebnisse

Kalender mit alternativen Ären, ideographische und Fullwidth-Darstellungen, lokalisierte reine Anzeigesymbole und vollständige Grouping-Policys bleiben separate Ziele

Siehe Interactive XFA Widget Runtime für Transaktions-, Replay- und Operations-Budget-Verhalten