menu di navigazione del network

Schema_VFPR12.xsd versione 1.2.1 e Validazione PECDestinatario

Buongiorno,

a qualcuno risultano problemi nella validazione contro lo schema xsd per il campo PECDestinatario in ambiente *unix?

Una email con un trattino, per esempio:

name@domain-test.it

non è validata né con xmlstarlet, né con xmlint.
L’errore è

The value 'name@domain-test.it' is not accepted by the pattern '([!#-'*+/-9=?A-Z^-~-]+(\.[!#-'*+/-9=?A-Z^-~-]+)*|"(\[\]!#-[^-~ \t]|(\\[\t -~]))+")@([!#-'*+/-9=?A-Z^-~-]+(\.[!#-'*+/-9=?A-Z^-~-]+)*|\[[\t -Z^-~]*\])'

mentre se tolgo il trattino ( name@domaintest.it ) il comando valida correttamente.

La regular expression è valida in altri contesti (per esempio in alcuni validatori JavaScript online). Credo che manchi qualcosa (forse l’escape di qualche caratttere) che renda qualche istruzione non ambigua.

Nel caso dove è possibile segnalare la cosa?

Sia xmllint che xmlstarlet usano libxml2 quindi credo che si tratti di un bug in libxml2.
In particolare sembra che gli dia fastidio il carattere ^ tra le parentesi quadre, che quando si trova all’inizio indica che sono validi tutti i caratteri tranne quelli specificati, mentre se si trova nel mezzo, non ha nessun significato speciale (corrisponde al carattere stesso).
Negli elenchi tra parentesi quadre compare la sequenza ^-~, che corrisponde ai caratteri Unicode (e ASCII) da 94 a 126. Se provi a modificare l’espressione regolare sostituendo ^ con il carattere successivo, ovvero _ (underscore) (tranne dove compare all’inizio delle parentesi quadre), vedrai che la validazione funziona.

Facendo esperimenti, anche una semplice espressione regolare come [A-Z^-~-]+ (che dovrebbe accettare una stringa del tipo Pippo-Pluto, non funziona se c’è il trattino. Se tuttavia la modifichi in [A-Z_-~-]+, funziona.

Detto questo, potrebbe anche essere che libxml2 funziona correttamente e tutti gli altri no. Le espressioni regolari negli schema xml seguono regole leggermente diverse da altri tipi di espressioni regolari. Per esempio i caratteri ^ e $ (al di fuori delle parentesi quadre) non hanno nessun significato speciale, perché tutte le espressioni regolari sono implicitamente ancorate all’inizio e alla fine della stringa. Bisognerebbe leggersi con attenzione lo standard.

Grazie.

Ho trovato la segnalazione del bug di libxml2

corretto però solo due mesi fa, probabilmente ancora non è entrato in una distribuzione ufficiale.

Il problema ora è che dobbiamo procedere con la modifica dell’xsd ufficiale per la validazione preliminare.

1 Mi Piace