Solved

XML vALIDATION

Posted on 2008-10-08
5
256 Views
Last Modified: 2013-11-18
Hi,

I am preparing XSD for some XML file required in my application. Snap shot of the XML is shown here:

<Roles>

            <Role HomeFolder="All Folders\Sales" />

</Roles>

 

 

Specified XML has one attributes: HomeFolder. While preparing XSD, I want to put constraint that attribute value HomeFolder should have atlest some value in it. It should not just have white spaces only.

 

For example,

 

HomeFolder="All Folders"                       - Valid

HomeFolder="     All   Folders     "           - Valid

HomeFolder="        "                              - Invalid (tab as whitespace character)

HomeFolder="   "                                   - Invalid (space as whitespace character)

HomeFolder=""                                      - Invalid

Would you please let me know whether it is possible to assign such rules (for attribute) in XSD or not?

0
Comment
Question by:dhiraj79
  • 3
5 Comments
 
LVL 60

Expert Comment

by:Geert Bormans
Comment Utility
For me the most flexible way of dealing with this is by restricting the content of the attribute (a named simple type in this case) with a pattern.
The regular expression in the pattern would then be a series of zero or more whitespace. One non whitespace character and then anything
<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="Roles">

    <xs:complexType>

        <xs:sequence maxOccurs="unbounded">

            <xs:element name="Role">

                <xs:complexType>

                    <xs:simpleContent>

                        <xs:extension base="xs:string">

                            <xs:attribute name="HomeFolder" type="myNotEmptyStringType"/>

                        </xs:extension>

                    </xs:simpleContent>

                </xs:complexType>

            </xs:element>

        </xs:sequence>

    </xs:complexType>

</xs:element>

 <xs:simpleType name="myNotEmptyStringType">

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

         <xs:pattern value="\s*[^\s].*"></xs:pattern>

     </xs:restriction>

 </xs:simpleType>

</xs:schema>

Open in new window

0
 

Author Comment

by:dhiraj79
Comment Utility
Hi Gertone,
Thanks for your reply, but there is a problem
  This is for XSD problem
  the regex you give will accept following:
  "       "
  it will accept string which has only white space characters....
  this is what i dont want to accept
I do not want to accept "" or " " or "     " etc
0
 
LVL 60

Accepted Solution

by:
Geert Bormans earned 500 total points
Comment Utility
you are incorrect.
The regex will NOT accept "      ",
because after a series of spaces, at least ONE non-whitespace character is required,
that is what [^\s] does (this means one none whitte-space character)
Have you tested?
I did, and it seems to work with all your examples, as you asked
0
 
LVL 63

Expert Comment

by:Zvonko
Comment Utility
Is meta character \S not defined in XSD regexp pattern?
0
 
LVL 60

Expert Comment

by:Geert Bormans
Comment Utility
to answer zvonko's comment, yes it is. I have a tendency to build character classes the way I did, rather than using \S or other negative build in character classes... just too lazy to change old habbits I assume :-)
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

Introduction Since I wrote the original article about Handling Date and Time in PHP and MySQL (http://www.experts-exchange.com/articles/201/Handling-Date-and-Time-in-PHP-and-MySQL.html) several years ago, it seemed like now was a good time to updat…
It’s a strangely common occurrence that when you send someone their login details for a system, they can’t get in. This article will help you understand why it happens, and what you can do about it.
This video teaches viewers how to create their own website using cPanel and Wordpress. Tutorial walks users through how to set up their own domain name from tools like Domain Registrar, Hosting Account, and Wordpress. More specifically, the order in…
Use Wufoo, an online form creation tool, to make powerful forms. Learn how to selectively show certain fields based on user input using rules to gather relevant information and data from your forms. The rules feature provides you with an opportunity…

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now