[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: IP address pattern matching

  • From: Rick Jelliffe <ricko@a...>
  • To: xml-dev@l...
  • Date: Mon, 17 Sep 2001 19:37:44 +1000

xml schema ip address
 From: "Matt Loryman" <matt.loryman@v...>

> Just for your interest this is what i decided to go with for providing a
> pattern match for IP addresses.
> Essentially this means "four groups of one to three numbers between zero and
> nine separated by periods".
> Doesn't cover all eventualities i know, but then again it doesn't stop
> somebody providing a perfectly valid
> but inaccurate IP address!
> 
> 
>          <simpleType>
>             <restriction base="string">
>               <pattern
> value="[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"/>
>             </restriction>
>           </simpleType>
 
If you validate with Schematron you can have something like

<rule context="...">
  <assert test="number(substring-before(., '.'))&lt; 256 and
            number(substring-before(substring-after(., '.'), '.'))&lt; 256 and
            number(substring-after(substring-after(., '.'), '.')) &lt; 256" 
        >An IP address is made of three numbers each less than 256 
        separated by "." .</assert>
  <assert test="number(substring-before(., '.'))&gt; 0 and
            number(substring-before(substring-after(., '.'), '.'))&gt; 0 and 
            number(substring-after(substring-after(., '.'), '.')) &gt; 0" 
        >An IP address is made of three numbers each greater than 0
        separated by "." .</assert>
</rule>

You can use this to put in quite intricate rules, I guess.  For example,
you could refactor the 6 tests into three, for each part of the address,
to give very specific diagnostics. Or you could test whether  
two IP addresses were in the same CLASS C network.

If you are using an XML Schema validator that also understands
embedded Schematron schemas (such as the free Topologi Schematron
validator at http://www.topologi.com/  *) you can embed the constraint
above into the XML Schema into an xs:appinfo element, so that
you have a single source for all your constraints.

Cheers
Rick Jelliffe

* This works with MSXML 4 beta April but not the may beta.
We have prepared a new version which should  work with the 
final MSXML 4, when MS releases that.


PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.