![]() |
![]() | ![]() | ![]() | Altova Mailing List Archives>Archive Index >microsoft.public.xml Archive Home >Recent entries >Thread Prev - Re: Allowing Either a patter or a null value in an Element? [Thread Next] Re: Allowing Either a patter or a null value in an Element?To: NULL Date: 6/2/2006 5:21:00 PM XMLSpy">XMLSpy has their own XML Schema validator that in my experience has a lot of areas where it is not conformant with the standard. I would trust MSXML, Xerces or Saxon as validators, and just use XMLSpy">XMLSpy for editing. If you really want it to validate in XMLSpy">XMLSpy, I would suggest using the union type example from my previous mail - that should work. Hope that helps, Priscilla ------------------------------------------------------------------------- Priscilla Walmsley http://www.datypic.com Author, Definitive XML Schema / XML in Office 2003 XQuery (coming in 2006 from O'Reilly) ------------------------------------------------------------------------- "Thomas Malia" <tommalia@w...> wrote in message news:OAAFfWZhGHA.1276@T...... > Actually... I take that back.... turns out that at least in XML spy, even > the pattern="" is allowing pretty much any value to be entered. > > What a pain in the back side! I hate "standards" that don't seem to be > "standard" across products. > > "Priscilla Walmsley" <nospam@d...> wrote in message > news:ek6ObfYhGHA.1276@T...... >> Hi, >> >> The validators I'm using (Xerces and Saxon) treat a zero-length regular >> expression (which is what you have after the "|") as only matching a >> zero-length string, so it shouldn't negate the validation of requiring >> digits. >> >> You could also try >> <xs:simpleType name="DfltAddrPhone_Type"> >> <xs:restriction base="xs:string"> >> <xs:pattern value="\d{10,15}"/> >> <xs:pattern value=""/> >> </xs:restriction> >> </xs:simpleType> >> >> which also should match either pattern. Maybe your processor handles >> this one correctly. >> >> If that doesn't work, you can use a union type, as in: >> >> <xs:simpleType name="SizeType"> >> <xs:union> >> <xs:simpleType> >> <xs:restriction base="xs:string"> >> <xs:pattern value="\d{10,15}"/> >> </xs:restriction> >> </xs:simpleType> >> <xs:simpleType> >> <xs:restriction base="xs:string"> >> <xs:enumeration value=""/> >> </xs:restriction> >> </xs:simpleType> >> </xs:union> >> </xs:simpleType> >> >> Hope that helps, >> Priscilla >> >> ------------------------------------------------------------------------- >> Priscilla Walmsley http://www.datypic.com >> Author, Definitive XML Schema / XML in Office 2003 >> XQuery (coming in 2006 from O'Reilly) >> ------------------------------------------------------------------------- >> "Thomas Malia" <tommalia@w...> wrote in message >> news:eG2KwMYhGHA.1792@T...... >>> Thanks, >>> >>> I tried leaving everything after the | blank... the problem is this >>> seems to negate the validation of reqiring digits. With what you >>> descibed here, I did not get a validation error if the field had a value >>> of say "THOMAS"... it took that as a valid value. >>> >>> The rule I wanted was, either you give me 10 to 15 digits OR you leave >>> the thing blank... nothing else is allowed. >>> >>> So far, the only solution I've come up with is to set the nillable >>> attribute to true and make the pattern: ="\d{10,15}". This doesn't >>> result in exactly what I want because the XML document has to explicitly >>> set the elements nil attribute for it to pass, but that's not the worst >>> thing in the world. >>> >>> >>> "Priscilla Walmsley" <nospam@d...> wrote in message >>> news:euenGdZgGHA.4976@T...... >>>> Hi, >>>> >>>> The "^" character as an anchor is not supported by XML Schema. You can >>>> just leave off everything after the | character, though, as in: >>>> >>>> <xs:simpleType name="DfltAddrPhone_Type"> >>>> <xs:restriction base="xs:string"> >>>> <xs:pattern value="\d{10,15}|"/> >>>> </xs:restriction> >>>> </xs:simpleType> >>>> >>>> (I also slightly simplified the 10-15 digit part and took out the >>>> length constraints because they were redundant.) >>>> >>>> Hope that helps, >>>> Priscilla >>>> >>>> ------------------------------------------------------------------------- >>>> Priscilla Walmsley http://www.datypic.com >>>> Author, Definitive XML Schema / XML in Office 2003 >>>> XQuery (coming in 2006 from O'Reilly) >>>> ------------------------------------------------------------------------- >>>> >>>> "Thomas Malia" <tommalia@w...> wrote in message >>>> news:%237nimVpfGHA.5100@T...... >>>>>I want to create an XML Schema Type definition that will either allow >>>>>the XML document to level the element blank or if they supply any data >>>>>it must match a pattern. >>>>> >>>>> The one example I'm currently working on is a Phone number field. >>>>> >>>>> I'd like to have something like: >>>>> <xs:simpleType name="DfltAddrPhone_Type"> >>>>> >>>>> <xs:restriction base="xs:string"> >>>>> >>>>> <xs:maxLength value="15"/> >>>>> >>>>> <xs:minLength value="0"/> >>>>> >>>>> <xs:pattern value="(\d{10})(\d)*|^*"/> >>>>> >>>>> </xs:restriction> >>>>> >>>>> </xs:simpleType> >>>>> >>>>> >>>>> >>>>> When I use the above definition in XMLSpy">XMLSpy it works fine. The regular >>>>> expression in the patter allows the creation of an element that has at >>>>> least 10 digit (\d{10}) with up to 5 more digits allowed for the >>>>> extention (\d)* OR (|) NOT anything at all (^*). >>>>> >>>>> However, when use this schema to validate a XML file with MSXML it >>>>> flags an empty phone number as violating the retstriction. Also, if I >>>>> try to generate java classes from the schema using XMLBeans it says my >>>>> regular expression is invalid. They both seem to not like the (^*) >>>>> aspect. >>>>> >>>>> Is there some other way I can achieve what I'm after besides putting >>>>> it in the regular expression for the pattern? Or is there a better >>>>> way to build the regular expression? (I'm DEFINATELY no RegExp expert) >>>>> >>>>> >>>>> >>>>> Thanks in advance, >>>>> >>>>> Tom Malia >>>>> >>>>> >>>> >>>> >>> >>> >> >> > > | ![]() | ![]() | ![]() |
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | |||||
|
