Wir verwenden JAXB 1.0.6 (das Projekt hat mit JDK1.4 begonnen und dies ist die letzte kompatible Version), um XML-Dateien aus einer XSD-Spezifikation zu erstellen. Die XSD definiert ein Attribut "email" mit dem folgenden regexp-Muster.Jeder hat auch Probleme mit der JAXB-Validierung, wenn XSD die reguläre Ausdruckszeichenklasse w enthält.
<xs:simpleType name="EmailAddress">
<xs:restriction base="xs:string">
<xs:minLength value="0"/>
<xs:maxLength value="60"/>
<xs:pattern value="([\w%\.\-][email protected][\w%\.\-]+\.[a-zA-Z]{2,6})?"/>
</xs:restriction>
</xs:simpleType>
wenn Sie versuchen, eine E-Mail [email protected] die Validierung mit der folgenden Meldung fehl ein:
attribute "email" has a bad value: the value does not match the
regular expression "([\w%\.\-][email protected][\w%\.\-]+\.[a-zA-Z]{2,6})?
IMHO, die Zeichenklasse \ w entspricht [a-zA-Z0-9_]
Also [email protected] erfüllt den Ausdruck. Wenn Sie den Unterstrich weglassen, wird die Validierung erfolgreich durchgeführt. Warum passiert dies?
Grüße
Ich war so naiv zu glauben, Regexp-Implementierung ist immer identisch. Jetzt sehe ich, dass das XSD-Muster \ w eine andere Bedeutung hat als das gleiche in JAVA. Danke. – huo73
http://txt2re.com kann für solche Situationen nützlich sein. Es scheint nicht "XML Schema" als eine seiner Sprachen zu haben, aber vielleicht ist eine der Sprachen, die es hat, ähnlich ... – MatrixFrog