I've been using PyXB to generate XML code from XSD templates for a while,
and it works most of the time.
But today I've found a pretty serious bug in Pattern validation.
<xs:simpleType name="tpEmail">
<xs:annotation>
<xs:documentation>Tipo E-mail.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:minLength value="0" />
<xs:maxLength value="75" />
<xs:whiteSpace value="collapse" />
<xs:pattern
value="([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})"
/>
</xs:restriction>
</xs:simpleType>
The pattern above failed to validate the email [email protected], because
of the underscore. The problema is: the pattern allows an underscore, and
I've tested it directly on a python shell:
>>> m =
re.match("([0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})",
"[email protected]")
>>> m.group()
'[email protected]'
Digging the code, it seems that the problem is the XMLToPython, that is
supposed to translate an XML pattern to a Python Pattern.
The _PatternElement class uses it to build the python regexp object
(facets.py, line 388). When I removed this conversion, everything worked.
Can someone help to understand if this is really a bug?
Tks
Miguel Galves - Engenheiro de Computação
"Não sabendo que era impossível, ele foi lá e fez..."
"Stay hungry, stay foolish"
------------------------------------------------------------------------------
_______________________________________________
pyxb-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyxb-users