473,404 Members | 2,179 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,404 software developers and data experts.

validating IP addresses using XML Schema

Hi,

I am looking for a way to validate IP addresses using XML Schemas. The
following is what i used:

<xsd:simpleType name="IPType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="(([1-9]?[0-9] | 1[0-9][0-9] | 2[0-4][0-9] |
25[0-5])\.){3}
([1-9]?[0-9] | 1[0-9][0-9] |
2[0-4][0-9] | 25[0-5])"/>
</xsd:restriction>
</xsd:simpleType>

I think the regular expression is correct, however an XML document with a
valid IP address doesn't pass the validation test.

Can anyone tell me what I can do to solve this?

Many Thanks
Jul 20 '05 #1
8 13486
In article <6g*****************@newsfe6-gui.ntli.net>,
UndoMiel <un*******@hotmail.com> wrote:
<xsd:pattern value="(([1-9]?[0-9] | 1[0-9][0-9] | 2[0-4][0-9] |
25[0-5])\.){3} ([1-9]?[0-9] | 1[0-9][0-9] | 2[0-4][0-9] | 25[0-5])"/>


Try removing the spaces.

-- Richard
Jul 20 '05 #2
i did, wont work...

"Richard Tobin" <ri*****@cogsci.ed.ac.uk> wrote in message
news:ce***********@pc-news.cogsci.ed.ac.uk...
In article <6g*****************@newsfe6-gui.ntli.net>,
UndoMiel <un*******@hotmail.com> wrote:
<xsd:pattern value="(([1-9]?[0-9] | 1[0-9][0-9] | 2[0-4][0-9] | 25[0-5])\.){3} ([1-9]?[0-9] | 1[0-9][0-9] | 2[0-4][0-9] | 25[0-5])"/>


Try removing the spaces.

-- Richard

Jul 20 '05 #3

"UndoMiel" <un*******@hotmail.com> wrote in message
news:6g*****************@newsfe6-gui.ntli.net...
Hi,

I am looking for a way to validate IP addresses using XML Schemas. The
following is what i used:

<xsd:simpleType name="IPType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="(([1-9]?[0-9] | 1[0-9][0-9] | 2[0-4][0-9] |
25[0-5])\.){3}
([1-9]?[0-9] | 1[0-9][0-9] |
2[0-4][0-9] | 25[0-5])"/>
</xsd:restriction>
</xsd:simpleType>

I think the regular expression is correct, however an XML document with a
valid IP address doesn't pass the validation test.

Can anyone tell me what I can do to solve this?

Many Thanks

I used the regular expression tester at
http://www.roblocher.com/technotes/regexp.aspx

to check how well your pattern worked and it seems that for some reason the
order matters (despite what you'd think...)

this
[1-9]?[0-9]|1[0-9][0-9]

is not the same as this
1[0-9][0-9]|[1-9]?[0-9]

Anyway my tests showed that if you reorder it like this
((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0
-9][0-9]|[1-9]?[0-9])
it will work just fine.

Some regular expression expert can tell you why A|B != B|A

So try that, making sure you have no blanks to the left of the alternation
symbol '|' else it will try and match a blank there instead of the previous
digit...

HTH,
Johnny
Jul 20 '05 #4
In article <uDiQc.6675$Uh.4292@fed1read02>,
Johnny Kent <re*****************@hotmail.com> wrote:
this
[1-9]?[0-9]|1[0-9][0-9]

is not the same as this
1[0-9][0-9]|[1-9]?[0-9]


It is, according to the XML Schema specification, and other regular
expression languages I'm familiar with.

The operator | binds less tightly than any other operator, including
concatenation.

Which strings did the tester give different results for? And what browser
were you using (it tests the browser's Javascript regular expressions).

And what validator is the original poster using?

-- Richard
Jul 20 '05 #5

"Richard Tobin" <ri*****@cogsci.ed.ac.uk> wrote in message
news:ce**********@pc-news.cogsci.ed.ac.uk...
In article <uDiQc.6675$Uh.4292@fed1read02>,
Johnny Kent <re*****************@hotmail.com> wrote:
this
[1-9]?[0-9]|1[0-9][0-9]

is not the same as this
1[0-9][0-9]|[1-9]?[0-9]
It is, according to the XML Schema specification, and other regular
expression languages I'm familiar with.


Agreed.
Sorry, instead of "(Despite what you'd think)" I should have said "contrary
to the rules of regular expressions"
in my post.


The operator | binds less tightly than any other operator, including
concatenation.

Which strings did the tester give different results for?
try entering 199 using the patterns above,
none of the 3 browsers I tried (although 2 are really mozilla though they
don't act the same) match 199
using the first pattern [1-9]?[0-9]|1[0-9][0-9]
but all 3 matched 199
using the second pattern 1[0-9][0-9]|[1-9]?[0-9]
And what browser
were you using (it tests the browser's Javascript regular expressions).


Same result for both IE5, Mozilla (1.7) and Firefox(0.8.0+)
Guess the tester must be what's bad 'cos it sure ought to work both ways.

Looks like the OP has moved on and left us to keep this alive... :-)


Jul 20 '05 #6
Hi,

I just used XMLSpy and the Topologi validator to validate the XML
document...

I've also tried another regular expression cause i couldnt get the the other
one working... Here it comes:

<xsd:restriction base="xsd:string">

<xsd:pattern
value="(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-
5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0
-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{
1 }[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])"/>

</xsd:restriction>

It's a bit longer and complicated but it worked fine....

Thanks for ur time guys...
"Johnny Kent" <re*****************@hotmail.com> wrote in message
news:ZBEQc.10034$Uh.655@fed1read02...

"Richard Tobin" <ri*****@cogsci.ed.ac.uk> wrote in message
news:ce**********@pc-news.cogsci.ed.ac.uk...
In article <uDiQc.6675$Uh.4292@fed1read02>,
Johnny Kent <re*****************@hotmail.com> wrote:
this
[1-9]?[0-9]|1[0-9][0-9]

is not the same as this
1[0-9][0-9]|[1-9]?[0-9]
It is, according to the XML Schema specification, and other regular
expression languages I'm familiar with.


Agreed.
Sorry, instead of "(Despite what you'd think)" I should have said

"contrary to the rules of regular expressions"
in my post.


The operator | binds less tightly than any other operator, including
concatenation.

Which strings did the tester give different results for?


try entering 199 using the patterns above,
none of the 3 browsers I tried (although 2 are really mozilla though they
don't act the same) match 199
using the first pattern [1-9]?[0-9]|1[0-9][0-9]
but all 3 matched 199
using the second pattern 1[0-9][0-9]|[1-9]?[0-9]
And what browser
were you using (it tests the browser's Javascript regular expressions).


Same result for both IE5, Mozilla (1.7) and Firefox(0.8.0+)
Guess the tester must be what's bad 'cos it sure ought to work both ways.

Looks like the OP has moved on and left us to keep this alive... :-)

Jul 20 '05 #7
I just downloaded and installed an eval copy of xmlspy.
I put the following code snippets into two files, checked that they
validated with wrox.validate then loaded into xmlspy and it works and
validates just fine:

file "ip.xml"
<?xml version="1.0"?>
<IPtest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ip.xsd">
<IP>192.168.255.1</IP>
</IPtest>

file "ip.xsd"
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:simpleType name="IPType">
<xsd:restriction base="xsd:string">
<xsd:pattern
value="(([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-
9][0-9]|2[0-4][0-9]|25[0-5])"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="IPtest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="IP" type="IPType" maxOccurs="unbounded">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
I'm using XMLSPY on windows 2000 sp2, it seems to be using the xmlspy
internal validator and is working just fine.
I think you need to check either your syntax (it won't work with spaces
within the ip , or before or after and also won't work if you leave spaces
around the | in the pattern but as I have it above (like your original but
without the spaces) it validates.
HTH,
Johnny
"UndoMiel" <un*******@hotmail.com> wrote in message
news:It**************@newsfe2-gui.ntli.net...
Hi,

I just used XMLSpy and the Topologi validator to validate the XML
document...

I've also tried another regular expression cause i couldnt get the the other one working... Here it comes:

<xsd:restriction base="xsd:string">

<xsd:pattern
value="(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0- 5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0 -9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1 ]{ 1 }[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])"/>

</xsd:restriction>

It's a bit longer and complicated but it worked fine....

Thanks for ur time guys...
"Johnny Kent" <re*****************@hotmail.com> wrote in message
news:ZBEQc.10034$Uh.655@fed1read02...

"Richard Tobin" <ri*****@cogsci.ed.ac.uk> wrote in message
news:ce**********@pc-news.cogsci.ed.ac.uk...
In article <uDiQc.6675$Uh.4292@fed1read02>,
Johnny Kent <re*****************@hotmail.com> wrote:

>this
>[1-9]?[0-9]|1[0-9][0-9]
>
>is not the same as this
>1[0-9][0-9]|[1-9]?[0-9]

It is, according to the XML Schema specification, and other regular
expression languages I'm familiar with.


Agreed.
Sorry, instead of "(Despite what you'd think)" I should have said

"contrary
to the rules of regular expressions"
in my post.


The operator | binds less tightly than any other operator, including
concatenation.

Which strings did the tester give different results for?


try entering 199 using the patterns above,
none of the 3 browsers I tried (although 2 are really mozilla though they don't act the same) match 199
using the first pattern [1-9]?[0-9]|1[0-9][0-9]
but all 3 matched 199
using the second pattern 1[0-9][0-9]|[1-9]?[0-9]
And what browser
were you using (it tests the browser's Javascript regular
expressions).
Same result for both IE5, Mozilla (1.7) and Firefox(0.8.0+)
Guess the tester must be what's bad 'cos it sure ought to work both ways.
Looks like the OP has moved on and left us to keep this alive... :-)


Jul 20 '05 #8
"UndoMiel" <un*******@hotmail.com> writes:
Hi,

I am looking for a way to validate IP addresses using XML Schemas. The
following is what i used:

<xsd:simpleType name="IPType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="(([1-9]?[0-9] | 1[0-9][0-9] | 2[0-4][0-9] |
25[0-5])\.){3}
([1-9]?[0-9] | 1[0-9][0-9] |
2[0-4][0-9] | 25[0-5])"/>
</xsd:restriction>
</xsd:simpleType>

I think the regular expression is correct, however an XML document with a
valid IP address doesn't pass the validation test.


Note that valid IP addresses may not conform to the pattern you're
going for. Most notably, IPv6 patterns take a radically different
form.

Also, although I think almost everybody uses the 127.0.0.1 format
nowadays, traditionally you could shorten the IP address (e.g., 127.1
is the same thing as 127.0.0.1). I don't know what RFC defines that,
though, and people using IPv4 can always convert to the long form, so
that's not so important. You do need to think about the IPv6
situation, though (even if you simply decide not to handle it).
Jul 20 '05 #9

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: Mike:o | last post by:
I need to validate XML documents (orders) against their schema before processing. The PurchaseOrder schema that we use references 3 other schemas using the <imports ...> element. Here is the...
6
by: Iain | last post by:
I've got a system which takes an XML file, translates it into an update gram and then loads it into my database with SQLXML3 (all in dot net). But it's fragile. And the SQLXML 3 error reporting...
6
by: Robert Reineri | last post by:
Hello, New to the XML world and .NET. I have what I believe to be a simple problem, but I have read the .NET docs till I'm blue in the face and still can't locate a simple example of how to...
1
by: Andy | last post by:
I am having some trouble validating XML using the XmlValidatingReader. I have created some xml and used the visual studio to generate the schema. So I am confident that the xml and schema match. ...
2
by: Joris Janssens | last post by:
I'm trying to write a program for validating XHTML 1.1-documents against the XHTML 1.1 DTD (which is actually the same as validating an XML-file) but I always get a "(404) Not found" error. This...
3
by: Shailendra Batham | last post by:
hi guys I need your suggestions / opinion for doing this the right way. I have a XML and a Schema for the same What I want is when its validated against the schema, it should give custom...
1
by: Craig Beuker | last post by:
Hello, I am experimenting with this XmlValidatingReader and have a question about how it is working (or not working as would be the case) The sample documents and code are included at the end...
1
by: Wallace | last post by:
Hi all, I have a problem on validating a xml fragment using a single namespace schema which spread across multiple schema files using include in the master schema file. No matter how I change...
1
by: Chris Lieb | last post by:
I have an XML Schema file that I know is correct becuase I currently use it in a VB6 program to validate XML documents. Also, if I load an XML file into VS2005 that is not valid against this...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.