473,387 Members | 1,495 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,387 software developers and data experts.

Validation problem: is it a bug?

Hi to all,
I've written a simple XML file and I'm trying to validate it using
XMLValidatingReader and ValidationEventHandler event.

This is my code:

Imports System.Xml
Imports System.Xml.Schema

Module Module1
Dim IsValid As Boolean = True
Sub main()
Dim filename As String = "Example.xml"
Dim TReader As New XmlTextReader(filename)
Dim VReader As XmlValidatingReader = New
XmlValidatingReader(TReader)
VReader.ValidationType = ValidationType.DTD
AddHandler VReader.ValidationEventHandler, AddressOf
myValidationEventHandler

While VReader.Read()
End While

TReader.Close()
VReader.Close()
MsgBox(IsValid.ToString)
End Sub
Private Sub myValidationEventHandler(ByVal Sender As Object, ByVal args
As ValidationEventArgs)
IsValid= False
End Sub
End Module
This is the file Example.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!--DTD-->
<!DOCTYPE Books [
<!ELEMENT Books (Book)+>
<!ELEMENT Book (author, summary)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT summary (#PCDATA | %reference;)*>
<!ELEMENT ref (#PCDATA)>
<!ATTLIST Book
title CDATA #REQUIRED

<!--entities-->
<!ENTITY % reference "ref">
]>
<!--End Of DTD-->
<Books>
<Book title="The Hound of the Baskerville">
<author>Arthur Conan Doyle</author>
<summary>It's a tale of Sherlock Holmes by Sir <ref>Arthur Conan
Doyle</ref>, was first published in serial form in 1901, then in book form
in 1902. It's the story of an age-old curse and it's ramifications to the
Bakerville family. <ref>Sherlock Holmes</ref> and <ref>Dr. Watson</ref> are
on the case!</summary>
</Book>
<Book title="Murders on the Rue Morgue">
<author>Edgar Allan Poe</author>
<summary>In <ref>Poe</ref>'s "Murders on the Rue Morgue," his
fictional detective <ref>C. Auguste Dupin</ref>, together with Dupin's
friend and narrator, read in the newspaper of two particularly gruesome
murders.</summary>
</Book>
</Books>

This file is valid and my procedure's result is "True". But if you remove
the end tag </ref>, for example, the file will not be valid but my
procedure's result will be "True"!!!!
Why? Is it perhaps a bug? Has someone any ideas?
Thanks in advance,
Fede.
Nov 12 '05 #1
3 1200
Fede wrote:
This file is valid and my procedure's result is "True". But if you remove
the end tag </ref>, for example, the file will not be valid but my
procedure's result will be "True"!!!!


Removing end tag makes XML non-wellformed. Nothing can be done with
non-wellformed XML, XmlReader just throws an exception prior to
XmlValidatingReader can validate.
--
Oleg Tkachenko
XML Insider
http://www.tkachenko.com/blog

Nov 12 '05 #2
>Oleg Wrote:
Removing end tag makes XML non-wellformed. Nothing can be done with
non-wellformed XML, XmlReader just throws an exception prior to
XmlValidatingReader can validate.


So I have to read my file twice: one with a XMLTextReader (to verify if my
file is well-formed) and one with a XmlValidatingReader.
Is it possible to read the file only once?
If it is, can you give me an example?

Thanks in advance.
Fede
Nov 12 '05 #3
Fede wrote:
So I have to read my file twice: one with a XMLTextReader (to verify if my
file is well-formed) and one with a XmlValidatingReader.


Well, not really. XmlValidatingReader works on top of XmlTextReader.
XmlTextReader parses XML syntax, verifies well-formdness and
XmlValidatingReader validates information reported by XmlTextReader.
Probably you probllem is that you don't catch the exception
XmlTextReader throws in the case of ill-formed XML.

--
Oleg Tkachenko
XML Insider
http://www.tkachenko.com/blog

Nov 12 '05 #4

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

Similar topics

21
by: Stefan Richter | last post by:
Hi, after coding for days on stupid form validations - Like: strings (min / max length), numbers(min / max value), money(min / max value), postcodes(min / max value), telefon numbers, email...
41
by: Gérard Talbot | last post by:
Cross-posted to: comp.infosystems.www.authoring.html and alt.html Followup-to: comp.infosystems.www.authoring.html 1- One day, I stumbled across a website that offers to validate webpages. What...
3
by: Kent Ogletree | last post by:
I am porting a Java XML Validation class over to C# and I am having a problem finding exactly what I need to acomplish the task. First I need to test for well formedness. I know this is usually...
4
by: | last post by:
Hello Guys, I am using the validation controls to validate my data. But the problem is "The page is still being posted to server". I want to get rid of the round trips to server. Are there...
4
by: usl2222 | last post by:
Hi folks, I appreciate any assistance in the following problem: I have a form with a bunch of dynamic controls on it. All the controls are dynamically generated on a server, including all...
3
by: john morales | last post by:
Hi guys, I have a problem and i know there must be a solution for this as it is such a basic common practice in asp.net development. Scenario: i have many webforms in a site, most with two...
5
by: Chris | last post by:
Based upon some prevoius postings on what to do for adding a 'add' row to a datagrid I utilize the footer to create the 'add' row. The only issue is that I have it sharing the 'UpDate_Command' and...
4
by: David Colliver | last post by:
Hi all, I am having a slight problem that hopefully, someone can help me fix. I have a form on a page. Many items on the form have validation controls attached. Also on this form are...
9
by: Bill Long | last post by:
I have a control that simply displays a list of links. Following one of the links doesn't post back or redirect to another page, it simply hides the current panel and shows the one you selected......
2
by: dustbort | last post by:
I recently had a problem where my required field validator stopped working. But, the page still posted back and tried to insert a record into the database without performing server-side validation....
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
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?
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,...

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.