Advanced XFA Picture Clauses

Zapněte TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript, chcete-li tyhle picture klauzule používat ve FormCalc událostech, calculate i validate skriptech přes dodávaný engine QuickJS

Format(picture, value) vytvoří zobrazovaný text a Parse(picture, text) kanonické hodnoty; výběr locale, citované literály i alternativy řídí FormCalc Locale a Picture funkce

Číselná přesnost a vědecká notace

SymbolChování
EFormátuje znaménkový exponent základu 10 za mantisou; pozice úvodní i zlomkové číslice určují přesnost mantisy, přičemž carry při zaokrouhlování se aplikuje, dřív než se exponent emituje
8Zachová vyjádřenou zlomkovou přesnost dodaného desetinného textu, tedy i závěrečné nuly; chybějící zlomkové číslice vynechají desetinný radix a série 8 symbolů může zachovat víc dodaných zlomkových číslic, než je její délka

Vědecké mantisy použijí nejvýše 15 číselných pozic; velikosti exponentů i desetinná expanze jsou ohraničené na 10000 a nekonečné hodnoty vytvoří prázdný text

Picture přesnosti zachovají citované literály před i za zlomkovými pozicemi; procentuální škálování posune původní desetinný text, aniž by ztratil závěrečné nuly konverzí přes binární plovoucí řád

Předávejte desetinné řetězce, když na jejich vyjádřené přesnosti záleží; číselné hodnoty JavaScriptu už před formátováním prošly konverzí na binární plovoucí řád

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%

Ordinální a týdenní datumy

SymbolChování
J, JJJDen v roce, od 1 do 366; JJJ doplní na tři číslice a parsování validuje přestupné roky
EČíselný den v týdnu od 1 pro neděli do 7 pro sobotu; EEE a EEEE dál používají zkrácené i celé lokální názvy dnů
eISO den v týdnu od 1 pro pondělí do 7 pro neděli
WWISO týden od 01 do 53; týden 01 obsahuje 4. ledna a rok v té picture je ISO week year
wTýden v měsíci od 0 do 5, začínající nedělí; první týden musí obsahovat alespoň čtyři dny z měsíce

Parsování ordinálních či týdenních datumů vrátí odpovídající ISO kalendářní datum; rozporné hodnoty dne, měsíce, dne v týdnu či týdne vrátí prázdný text

Čtyřčíselné rané roky se postaví bez JavaScript úpravy století, tedy i roky 0000 až 0099; historické alternativní éry zůstávají mimo tyhle picture klauzule

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

Dodatečné varianty hodin

k a kk vyjadřují hodinu 0–11 v rámci meridiemu; K a KK hodinu 1–24 v rámci dne, přičemž 24 reprezentuje půlnoc

Použijte A s hodinami k k odlišení AM a PM; malé z formátuje ISO offset bez dvojtečky, zz s dvojtečkou a velké Z emituje GMT či GMT s explicitním offsetem

Globální picture symboly

SymbolParsování vstupuFormátování výstupu
?Konzumuje jeden Unicode code pointVytvoří jednu mezeru
*Konzumuje nula či víc zlomitelných bílých znakůVytvoří jednu mezeru
+Konzumuje jedna či víc zlomitelných bílých znakůVytvoří jednu mezeru

Ty symboly fungují v picture klauzulích data, času, datetime, čísla i textu; citované symboly zůstávají literálními znaky, supplementární Unicode znaky se počítají jako jeden znak a nezlomitelné mezery se z porovnávání bílých znaků vylučují

Složené parsování vstupu

Složené klauzule data i času se zkombinují na kanonický ISO date-time text; opakované reprezentace téže hodnoty se musí shodovat a literální oddělovače se kontrolují, dřív než se vstup přijme

Opakované skalární klauzule musí vytvořit stejné kanonické číslo či text; nekompatibilní kombinace kategorií, rozporné hodnoty, nekompletní konzumace či víc odlišných kanonických výsledků vytvoří prázdný text

Složené parsování dovolí 64 částí, 8192 vstupních UTF-16 jednotek a 8192 pokusů o parse, při sdílení rozpočtů operací i uplynulého času runtime; jejich překročení zhatí transakci události

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

Runtime chování a aktuální hranice

Calculated pole i události použijí tutéž implementaci i locale metadata; neúspěšné skripty obnoví hodnoty dokumentu i potvrzený JavaScript stav a uložená XDP data zachovají úspěšné výsledky

Kalendáře alternativních ér, ideografické i full-width reprezentace, lokalizované jen-zobrazovací symboly i kompletní seskupovací politiky zůstávají samostatnými cíli

Chování transakcí, replay i rozpočtů operací popisuje Interactive XFA Widget Runtime