Solved

XML vALIDATION

Posted on 2008-10-08
5
261 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
ID: 22667076
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
ID: 22667707
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
ID: 22667783
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
ID: 22690217
Is meta character \S not defined in XSD regexp pattern?
0
 
LVL 60

Expert Comment

by:Geert Bormans
ID: 22718711
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

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Developer tools in browsers have been around for a while, yet they are still heavily underused by developers. Developers still fix html or CSS then refresh page to see effect, or they put alert or debugger in JavaScript and then try again and again …
What is Node.js? Node.js is a server side scripting language much like PHP or ASP but is used to implement the complete package of HTTP webserver and application framework. The difference is that Node.js’s execution engine is asynchronous and event…
The viewer will learn the benefit of using external CSS files and the relationship between class and ID selectors. Create your external css file by saving it as style.css then set up your style tags: (CODE) Reference the nav tag and set your prop…
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…

713 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