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 errors saying what happened and where......
is it possible to do that ?
for eg. if the Attribute is missing or invalid in the following element <Watch ID="999d999">
then it should say ID attribute invalid for "Watch" Element.
Right now the validation works but the error returning our very vague, I need a way where I can customize the error or at least let the user know where the error is at what element and which attribute.
thanks,
Shailendra Batham 3 6032
What language do you use? Below is the sample code in C++:
Validating an XML Document Against an XML Schema Using C++
To validate an XML document file with an XML Schema definition language (XSD) schema file using C++, you load XML and XSD documents and create a schema cache as in the following example.
#include "stdio.h"
#import <msxml4.dll>
using namespace MSXML2;
int checkParseError(IXMLDOMParseErrorPtr pError);
void dump_com_error(_com_error &e);
int main(int argc, char* argv[])
{
CoInitialize(NULL);
try{
IXMLDOMParseErrorPtr pError;
// load the XML file
// ****** you need to use IXMLDOMDocument2 interface *********
IXMLDOMDocument2Ptr pXMLDoc;
HRESULT hr = pXMLDoc.CreateInstance(__uuidof(DOMDocument40));
pXMLDoc->async = VARIANT_FALSE;
hr = pXMLDoc->load("books.xml");
//check on the parser error
if(hr!=VARIANT_TRUE)
{
return checkParseError(pXMLDoc->parseError);
}
//load the XSD file
IXMLDOMDocumentPtr pXSDDoc;
hr = pXSDDoc.CreateInstance(__uuidof(DOMDocument40));
pXSDDoc->async = VARIANT_FALSE;
hr = pXSDDoc->load("books.xsd");
//check on the parser error
if(hr!=VARIANT_TRUE)
{
return checkParseError(pXSDDoc->parseError);
}
//create schemacache
IXMLDOMSchemaCollectionPtr pSchemaCache;
hr = pSchemaCache.CreateInstance(__uuidof(XMLSchemaCach e40));
pXMLDoc->schemas = pSchemaCache.GetInterfacePtr();
//hook it up with XML Document
hr = pSchemaCache->add("urn:books", pXSDDoc.GetInterfacePtr());
//call validate
pError = pXMLDoc->validate();
if(pError->errorCode != S_OK)
{
_bstr_t parseError = _bstr_t("Error code: ")+ _bstr_t(pError->errorCode) +_bstr_t("\n") + _bstr_t("Reason: ")+ pError->Getreason();
MessageBox(NULL, (char*)parseError, "Parse Error",MB_OK);
return -1;
}
else
MessageBox(NULL,"Valiation succeeded", "Results",MB_OK);
}
catch(_com_error &e)
{
dump_com_error(e);
}
return 0;
}
int checkParseError(IXMLDOMParseErrorPtr pError)
{
_bstr_t parseError =_bstr_t("At line ")+ _bstr_t(pError->Getline()) + _bstr_t("\n")+ _bstr_t(pError->Getreason());
MessageBox(NULL,parseError, "Parse Error",MB_OK);
return -1;
}
void dump_com_error(_com_error &e)
{
printf("Error\n");
printf("\a\tCode = %08lx\n", e.Error());
printf("\a\tCode meaning = %s", e.ErrorMessage());
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
printf("\a\tSource = %s\n", (LPCSTR) bstrSource);
printf("\a\tDescription = %s\n", (LPCSTR) bstrDescription);
}Input file: books.xml
<?xml version="1.0"?>
<x:catalog xmlns:x="urn:books">
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications with XML.</description>
</book>
</x:catalog>
Input file: books.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:books" xmlns:b="urn:books">
<xsd:element name="catalog" type="b:CatalogData"/>
<xsd:complexType name="CatalogData">
<xsd:sequence>
<xsd:element name="book" type="b:bookdata" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="bookdata">
<xsd:sequence>
<xsd:element name="author" type="xsd:string"/>
<xsd:element name="title" type="xsd:string"/>
<xsd:element name="genre" type="xsd:string"/>
<xsd:element name="price" type="xsd:float"/>
<xsd:element name="publish_date" type="xsd:date"/>
<xsd:element name="description" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string"/>
</xsd:complexType>
</xsd:schema>"Shailendra Batham" <sh********@sitesystems.com> wrote in message news:OA**************@TK2MSFTNGP11.phx.gbl...
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 errors saying what happened and where......
is it possible to do that ?
for eg. if the Attribute is missing or invalid in the following element <Watch ID="999d999">
then it should say ID attribute invalid for "Watch" Element.
Right now the validation works but the error returning our very vague, I need a way where I can customize the error or at least let the user know where the error is at what element and which attribute.
thanks,
Shailendra Batham
Hi Shailendra,
If you are coding in .Net,
Look at these:
System.Xml.Schema
ValidationEventHandler
ValidationEventArgs
XmlTextReader xmlreader = new XmlTextReader("test.xml");
XmlValidatingReader valid = new XmlValidatingReader(xmlreader);
valid.ValidationType = ValidationType.Schema;
Cheers.
"Shailendra Batham" wrote: 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 errors saying what happened and where......
is it possible to do that ?
for eg. if the Attribute is missing or invalid in the following element <Watch ID="999d999"> then it should say ID attribute invalid for "Watch" Element.
Right now the validation works but the error returning our very vague, I need a way where I can customize the error or at least let the user know where the error is at what element and which attribute.
thanks, Shailendra Batham
Thanks for the reply guys.
hey chua I am using C# and I am using the ValidationEventHandler, it works
fine but this is what error it returns
"The 'ID' attribute has an invalid value according to its data type. An
error occurred at , (2, 9)." string
can we do custom errors like what node's attribute had an error.
"Chua Wen Ching" <ch************@nospam.hotmail.com> wrote in message
news:FA**********************************@microsof t.com... Hi Shailendra,
If you are coding in .Net,
Look at these:
System.Xml.Schema
ValidationEventHandler ValidationEventArgs
XmlTextReader xmlreader = new XmlTextReader("test.xml"); XmlValidatingReader valid = new XmlValidatingReader(xmlreader); valid.ValidationType = ValidationType.Schema;
Cheers.
"Shailendra Batham" wrote:
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 errors saying what happened and where......
is it possible to do that ?
for eg. if the Attribute is missing or invalid in the following element <Watch ID="999d999"> then it should say ID attribute invalid for "Watch" Element.
Right now the validation works but the error returning our very vague, I need a way where I can customize the error or at least let the user know where the error is at what element and which attribute.
thanks, Shailendra Batham This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Will |
last post by:
I have been having problems validating an XForms document against the
XForms schema located at
http://www.w3.org/MarkUp/Forms/2002/XForms-Schema.xsd.
I have reduced the XForm to its bare bones...
|
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...
|
by: Christian |
last post by:
Hi,
I load an Xml-file "customers.xml" into a DataSet (works fine) but then how
do I validate it against a schema (e.g. customers.xsd) ?
my customers.xml:
<?xml version="1.0"...
|
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...
|
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...
| |
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...
|
by: srujana |
last post by:
Hi
I am validating an xml document against schema .
when i am passing the xml file location as an input to the parse method
String XmlDocumentUrl="E:/books.xml";
parser.parse(XmlDocumentUrl);...
|
by: =?Utf-8?B?Q29kZVJhem9y?= |
last post by:
I wrote a method to validate and xml file against a schema.
If the file does not conform to the schema, it throws an error. It works
fine except for one curious thing.
If I try to validate an...
|
by: agda.karlberg |
last post by:
Hello,
I need to remove the DTD reference from an xml document, the reason
for this is that we want to validate against a schema instead (which
we have locally). It takes up to a minute to fetch...
|
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...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
| |
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,...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
|
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...
| |