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? Re: Allowing Either a patter or a null value in an Element?To: NULL Date: 6/1/2006 10:29:00 AM
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 | Mobile | Full Site | |||
|
