Hi,
<xs:pattern value="[\p{IsBasicLatin}\p{IsLatin-1Supplement}-[ \t\r\n]][\p{IsBasicLatin}\p{IsLatin-1Supplement}-[\t\r\n]]*"/>
http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/datatypes.html#charcter-classes
Ich kann dort nicht erkennen, dass eine Character Class Expression innerhalb einer Character Class Expression erlaubt (bzw. sinnvoll) wäre.
Nächstes Mal genauer hinschauen ;-)
11 charClass ::= charClassEsc | charClassExpr | WildcardEsc
Da nehmen wir die charClassExpr
12 charClassExpr ::= '[' charGroup ']'
weiter mit der charGroup
13 charGroup ::= posCharGroup | negCharGroup | charClassSub
da nehmen wir die charClassSub
16 charClassSub ::= ( posCharGroup | negCharGroup ) '-' charClassExpr
hier nehmen wir posCharGroup - charClassExpr
Für posCharGroup
14 posCharGroup ::= ( charRange | charClassEsc )+
diesen Teil könnte man jetzt Regel für Regel weiter zerlegen (über charClassEsc -> catEsc ...), aber kurz gesagt deckt der das
\p{IsBasicLatin}\p{IsLatin-1Supplement}
ab.
bleibt also noch das - und charClassExpr. - als Literal braucht nicht weiter aufgelöst zu werden. Bleibt charClassExpr.
12 charClassExpr ::= '[' charGroup ']'
charGroup könnte ich wieder nach den Regeln weiter zerlegen (charRange -> XmlCharIncDash ..., charClassEsc->SingleCharEsc ...), aber kurz gesagt deckt das die 4 Whitespace-Zeichen ab.
Diese charClassExpr deckt also [ \t\r\n] ab.
Gehen wir wieder zurück: davor war das literale -, also -[ \t\r\n]
Weiter zurück: posCharGroup-[ \t\r\n]
Noch weiter: [posCharGroup-[ \t\r\n]]
Und posCharGroup war ja das \p{IsBasicLatin}\p{IsLatin-1Supplement}, womit die erste [] aus dem Originalausdruck komplett abgedeckt ist.
cu,
Andreas
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.