XML validate by XSD schema with C#

I am validating XML files on a server which has no internet access and
the validadation in C# does not work. Schema with which I am validating
has namespaces like: xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#".

I have these schemas all locally on the disk, but it does not work. If
I try on a computer with internet access then it works just fine. Does
someone know what to do. Function with which I validate looks like
this:

private bool ValidXml(string XmlFile, string XSDLoc, string tns)
		{
		// . . .
		string targetNamespaceURI = tns;    // put the target namespace URI
of your schema here.
		//XmlValidatingReader vr = new XmlValidatingReader( new
XmlTextReader( new StringReader( doc ) ) );
		XmlValidatingReader vr = new XmlValidatingReader( new
XmlTextReader(XmlFile) );
		vr.XmlResolver = new XmlUrlResolver();
        MessageBox.Show(vr.NamespaceURI);
		vr.Schemas.Add( targetNamespaceURI, XSDLoc);
		vr.ValidationEventHandler += new ValidationEventHandler
(ValidationHandler);
		vr.ValidationType = ValidationType.Schema;
		_ValidationErrorsCount = 0;
		_ValidationErrorsMsgs = "";
		while(vr.Read());
		vr.Close();
		if (_ValidationErrorsCount > 0)
		  return false;
		else
		  return true;

}

Thanks for any help ...

0
gmocnik (8)
3/31/2006 1:57:23 PM
dotnet.xml 7266 articles. 0 followers. Follow

10 Replies
1467 Views

Similar Articles

[PageSpeed] 22


gmocnik@gmail.com wrote:

> I am validating XML files on a server which has no internet access and
> the validadation in C# does not work. 

What exactly "does not work" mean in your case? Do you get any error 
mesage when you run your code, which exactly, for what line?

> Schema with which I am validating
> has namespaces like: xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
> xmlns:xenc="http://www.w3.org/2001/04/xmlenc#".

Namespaces declarations could mean that the XML document contains 
elements in different namespace and with the W3C XML schema language 
that means there needs to be at least one schema module per namespace. 
So perhaps your schema has an xs:import or xs:include referencing a 
reosurce on a public internet HTTP server?


> private bool ValidXml(string XmlFile, string XSDLoc, string tns)
> 		{
> 		// . . .
> 		string targetNamespaceURI = tns;    // put the target namespace URI
> of your schema here.
> 		//XmlValidatingReader vr = new XmlValidatingReader( new
> XmlTextReader( new StringReader( doc ) ) );
> 		XmlValidatingReader vr = new XmlValidatingReader( new
> XmlTextReader(XmlFile) );
> 		vr.XmlResolver = new XmlUrlResolver();
>         MessageBox.Show(vr.NamespaceURI);
> 		vr.Schemas.Add( targetNamespaceURI, XSDLoc);

What exactly is the value of XSDLoc when your code fails?

-- 

	Martin Honnen --- MVP XML
	http://JavaScript.FAQTs.com/
0
mahotrash (1778)
3/31/2006 3:31:49 PM
Sorry that I was so deficient.

So perhaps your schema has an xs:import or xs:include referencing a
reosurce on a public internet HTTP server?

Yes, I have xs:import for both http://www.w3.org/2000/09/xmldsig#" and
http://www.w3.org/2001/04/xmlenc#.
Import looks like this:
<xsd:import namespace="http://www.w3.org/2001/04/xmlenc#"
schemaLocation="xenc-schema.xsd"/>
<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="xmldsig-core-schema.xsd"/>

Upper schema locations are relative, I've tired with absolute and it
didn't work.

So enc-schema.xsd and xmldsig-core-schema.xsd are in the same folder as
my XSD Schema.

What exactly "does not work" mean in your case? Do you get any error
mesage when you run your code, which exactly, for what line?

Huh ... yes I do get an error message, but I can't tell you exactly
what it is, because I am not at the right computer at the moment. The
error accours in this line vr.Schemas.Add( targetNamespaceURI, XSDLoc);


XSDLoc = Server.MapPath("myschema.xsd");

The error message says that it can not find EncryptedData. It is
defined in xenc-schema.xsd.

I have tried to replace xmlns with local locations but no luck.

Is there some trick ... that XML validation in dot net does not go to
internet while validaiting?

Thanks for the help ...

0
gmocnik (8)
4/1/2006 6:45:26 PM

gmocnik@gmail.com wrote:


> Yes, I have xs:import for both http://www.w3.org/2000/09/xmldsig#" and
> http://www.w3.org/2001/04/xmlenc#.
> Import looks like this:
> <xsd:import namespace="http://www.w3.org/2001/04/xmlenc#"
> schemaLocation="xenc-schema.xsd"/>
> <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#"
> schemaLocation="xmldsig-core-schema.xsd"/>
> 
> Upper schema locations are relative, I've tired with absolute and it
> didn't work.
> 
> So enc-schema.xsd and xmldsig-core-schema.xsd are in the same folder as
> my XSD Schema.

If those schemas are available locally then those xs:import should not 
be a problem I think as that way the parser should look for a local schema.


> Huh ... yes I do get an error message, but I can't tell you exactly
> what it is, because I am not at the right computer at the moment. The
> error accours in this line vr.Schemas.Add( targetNamespaceURI, XSDLoc);
> 
> 
> XSDLoc = Server.MapPath("myschema.xsd");
> 
> The error message says that it can not find EncryptedData. It is
> defined in xenc-schema.xsd.

Do you get a .NET exception thrown that aborts your .NET code? Or is 
that a validation error message your validation event handler reports?

-- 

	Martin Honnen --- MVP XML
	http://JavaScript.FAQTs.com/
0
mahotrash (1778)
4/2/2006 1:49:54 PM
> >
> > XSDLoc = Server.MapPath("myschema.xsd");
> >
> > The error message says that it can not find EncryptedData. It is
> > defined in xenc-schema.xsd.
>
> Do you get a .NET exception thrown that aborts your .NET code? Or is
> that a validation error message your validation event handler reports?
>

So the exact error message is: The
'http://www.w3.org/2001/04/xmlenc#:EncryptedData' element is not
declared. An error occurred at file:///d:/My
Documents/webservice/myschema.xsd, (46, 6).

I handle the exception - the code:

try{
	if (ValidXml(XmlLoc.Text, ShemaLoc.Text, TNS.Text))
	  MessageBox.Show("XML OK.");
	else
	  MessageBox.Show("Error:\n" + _ValidationErrorsMsgs);
}catch (Exception ex){
  MessageBox.Show("Error:\n" + ex.Message);
}

_ValidationErrorsMsgs is variable I fill in ValidationHandler function:

public static void ValidationHandler(object sender, ValidationEventArgs
args)
{
    _ValidationErrorsMsgs += "\tSeverity:" + args.Severity + "\t" +
args.Message + "\n";
    _ValidationErrorsCount++;
}


The error message I get is in ex.Message.

Any ideas?

Thank you Martin for dealing with my problem.

0
gmocnik (8)
4/3/2006 5:52:04 AM
Is the problem maybe something with the XmlResolver class ... I don't
understand what exactly this class is it about ... but it could resolve
my problem :)))))

Can someone explain what is XmlResolver about?

0
gmocnik (8)
4/5/2006 8:02:09 AM
XmlResolver is used to resolve external XML resources, such as entities, 
document type definitions (DTDs), or schemas. It is also used to process 
include and import elements found in Extensible StyleSheet Language (XSL) 
style sheets or XML Schema definition language (XSD) schemas.

More information about it:
http://msdn2.microsoft.com/en-us/library/system.xml.xmlresolver(VS.80).aspx

-- 
Stan Kitsis
Program Manager, XML Technologies
Microsoft Corporation

This posting is provided "AS IS" with no warranties, and confers no rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm
<gmocnik@gmail.com> wrote in message 
news:1144224129.814966.12080@t31g2000cwb.googlegroups.com...
> Is the problem maybe something with the XmlResolver class ... I don't
> understand what exactly this class is it about ... but it could resolve
> my problem :)))))
>
> Can someone explain what is XmlResolver about?
> 


0
skits (68)
4/5/2006 7:08:18 PM
Thanks Stan, but I still don't know how use this XmlResolver in the way
that would solve my problem ...

Now I've tried like this:
Line1: FileStream fs = new FileStream("d:\\My
Documents\\xmldsig-core-schema.xsd", FileMode.Open);
Line 2: XmlSchema dsigSchema = XmlSchema.Read(fs, new
ValidationEventHandler(ValidationHandler));

In the line 2 there is an exception. The error message is:
The underlying connection was closed: The remote name could not be
resolved.

xmldsig-core-schema.xsd is schema from
http://www.w3.org/2000/09/xmldsig# and as you can see it's localy on my
computer.

It comes to this exception just in case that I am offline, when I plug
in my network cable and connect to internet ... the exception
disappers.

What should I do? Please help.

0
gmocnik (8)
4/6/2006 8:24:03 AM
So nobody had such problem ... well I was unable to solve it ... so I
used MSXML 4.0 functions in .NET and that works fine.

0
gmocnik (8)
4/9/2006 8:52:45 AM
I am having same issue as your please see my posting

http://groups.google.com/group/microsoft.public.dotnet.xml/browse_thread/thread/5d64d92db5d419e5/33cc947c6ca93c83?hl=en#33cc947c6ca93c83

I am connected to internet so not sure why import will not get the
relevent schema. 

Can you please post your solution.

0
4/29/2006 4:39:43 PM
I've just added reference to msxml4.dll and called functions to
validate xml by xsd.

0
gmocnik (8)
5/8/2006 12:55:11 PM
Reply:

Similar Artilces:

XML Header
Hi, I have some XML doc loaded in a C# Web Service. XmlDocument doc = new XmlDocument(); doc.LoadXml(myDoc); Code Missing to manipulate header (I would like to replace or manupulate all these XXXXX): <mso-XXXXXX productversion="XXXXXX"> <mso-application progid="XXXXX"?> doc.Save(myNewDoc); Any idea on how to access and manipulate data within the doc header? Thanks vbdev vb6dev2003 wrote: > I have some XML doc loaded in a C# Web Service. > XmlDocument doc = new XmlDocument(); > doc.LoadXml(myDoc); > > Code Missing to manipulate header ...

Read XHTML into XML
Hi all, I need to read/parse XHTML aspx pages and look for certain tokens and content. How can I use a XmlTextReader for this? If not, any other ideas? Thanks in advance, JA Reyes. Jose Antonio Reyes wrote: > I need to read/parse XHTML aspx pages and look for certain tokens and > content. How can I use a XmlTextReader for this? If not, any other ideas? If the pages are well-formed XHTML then it is possible to use XmlReader (in .NET 2.0/3.0) or XmlTextReader (in .NET 1.x) to parse the XHTML documents. You can also use the other XML APIs .NET provides so using XPathNavigator and/o...

How to invoke the xml editor?
I installed vs2005 on a new xp pro machine, and installed everything except C++. When I click on a file with a ".xml" extension it is opened with IE. When I click file/Edit with XML Editor, it opens it with Notepad. If I click File/Open With and select XML Editor, it opens it with IE. So, where is the xml editor? Can it be invoked from withing VS? Where? Bill * billsahiker@yahoo.com wrote in microsoft.public.dotnet.xml: >I installed vs2005 on a new xp pro machine, and installed everything >except C++. When I click on a file with a ".xml" extension it is >opened ...

Validation List not showing external source.
I have a external reference on a Data Validation but the list will not show up unless I have the external reference spreadsheet open. I can manually type in the exact selection and it works fine. Unless I have the refernced spread sheet open, I can not see the list options. Is there a fix for this or is this a limitation on Excel? Any work arounds? David, Did you find the answer? --- Message posted from http://www.ExcelForum.com/ ...

show XML schema and values
I have an XML document that looks like the following: <record> <Field1>value1</Field1> <Field2>value2</Field2> <Field3>value3</Field3> </record> What I'm aiming to do is to show the data in a report as in the following example: record: Field1 value1 Field2 value2 Field3 value3 The "Field1-3"-elements can have any name, so I'm trying to get a table that has in one result column the element name, and in the second colum...

Offline synch using XML web-services
This is a bit long-winded. Can somebody read thru these 2 use cases, and tell me if it is feasible ? :- Use Case : Replication before Offline Synch Scenario 1 : Oracle Server , MSDE client 1. User clicks on 'Go Offline'. System creates a MSDE SQL database in laptop (client), gets the schemas of the tables in Oracle, creates corresponding tables in client's MSDE SQL (mapping Oracle datatypes to SQL datatypes). 2. Offline replication program reads in the tables of the server into a typed datasets, converts the typed datasets into XML, and stores the XML in the client. (XML serial...

XML Serialization ... how to truncate <?xml...
While xml serializing object how can I truncate <?xml ...?> this line alone? I need to send the serialized xml data to a web method ... since SOAP already have <?xml tag there was some confusion Any help would be greatly appreciated Thank you Regards Raj Raj wrote: > While xml serializing object how can I truncate <?xml ...?> this line alone? Serialize to an XmlWriter created with XmlWriterSettings where you set OmitXmlDeclaration to true. -- Martin Honnen --- MVP XML http://msmvps.com/blogs/martin_honnen/ ...

error adding new Schema Field 04-21-04
Hi, When I attempt to add a new schema field to the "Lead" object in the Deployment Manager, I get the following error: "An error occured during the addtion of the new field. The addition failed." In the event log, I there are two relevant entries: "dmLog: Failed to add new Picklist attribute (CFPsolution) to Lead entity" and "dmLog: sp_repladdcolumn failed. - Timeout expired" I've previously successfully added a pickup list called "Sector" with 9 values. Therefore I don't think I've exceeded the 8000 char row limit. Apart from...

String to xml document
Hi there, I was hoping someone can help me with a little problem I can't seem to find any answers to. I've got a form wich will be posted. On receiving the post I would like to parse a formvar to a xml document. The contents of this formvar (string) will be a valid xhtml document. Can someone give me a startertip (or more :-)) on how to achieve this? tnx in advance, James van der Veen Sjeems wrote: > I was hoping someone can help me with a little problem I can't seem to find > any answers to. > > I've got a form wich will be posted. On receiving the p...

Beginner of XML
I am a beginner of XML. I want to group some files together with a xml file. (it includes a text file, and an image file and a video file) Can someone show me some guidelines? Please help. ...

Usage example for BigInteger and C++
One of the new additions to the .NET 4.0 framework is System.Numerics.BigInteger. Please can someone give a simple usage example? Thank you. "GeorgCantor" <GeorgCantor@discussions.microsoft.com> wrote in message news:5D42AABF-96E2-4E95-A537-3739C677C438@microsoft.com... > Please can someone give a simple usage example? http://tinyurl.com/yf4qpzl -- Mark Rae ASP.NET MVP http://www.markrae.net GeorgCantor schrieb: > One of the new additions to the .NET 4.0 framework is > System.Numerics.BigInteger. > > Please can someone give ...

Valid xml to read from an xml file?
I'm using vb.net, i get an error at the reader line saying the remote server can't be found. Is the below even valid? dim reader as XmlTextReader reader = new XmlTextReader ("http://www.mysite.com/my.xml") do while (reader.Read()) 'do some action here response.write(reader) loop thanx chumley XmlTextReader uses System.Net.WebRequest under the covers -- see if you can figure out how to create a connection that way. Usually there's some proxy server information missing that you can enable if you use WebRequest directly, and then pass the result of GetResponse()...

Example eConnect XML documents
MSDN says the following: Installing eConnect schema When you include the schemas component of the eConnect install, the installer places schema files in a schemas folder on your computer. The following schema resources are available: The install places the .xsd schema files in the directory c:\Program Files\Microsoft Great Plains\eConnect9\XML Schema\Incoming XSD Individual Schemas. The files in the directory contain the schema for each eConnect XML document. The install places a file named eConnect.xsd that contains the schema definition for all eConnect XML documents. The install typicall...

Saving DataSet as XML in ADO format using VB.NET
Hi, I am trying to convert a lot of web reports from ASP/VB to ASP.NET/VB.NET. I would like to save my dataset in XML and then use XSLT to transform the XML. The catch is I would like to have the XML in the format that ADO uses versus the default format in which ADO.NET uses. Currently, I am using ADO within .NET, but I am concerned about the performance and it might improve if I used the native data providers for .NET. I am not sure if I am missing something but how do I save the .NET DataSet to XML in the OLD ADO format? Thanks for you help in advance and it is most appreciated. In the ...

XML variable for description on receipt?
Hi, I would like to add a description (actually all of those 3 extended descriptions) to display on the printed receipt under the main description. What is the variable to do that? Entry.Item.Description Entry.Item.ExtendedDescription Entry.Item.SubDescription1 Entry.Item.SubDescription2 Entry.Item.SubDescription3 R. "Zorian" <Zorian@discussions.microsoft.com> wrote in message news:F4425EAC-62B6-46FE-826A-D8BA2AA75DBB@microsoft.com... > Hi, I would like to add a description (actually all of those 3 extended > descriptions) to display on the printed receipt un...

data validation list from two columns
I have a list of every county, parish and borough in the US in a worksheet, like this: A B 1 HI Kauai County 2 HI Maui County 3 ID Ada County 4 ID Adams County 5 KY Adair County 6 KY Harlan County I would like to create a data validation list so that a user can quickly lookup county level data--accessed by an Index and Match formula. I hope to accomplish two things: 1) not force the user to scroll through all 3,000 county names 2) keep seperate Washington County in TN from Washington County in GA, IL, KY, etc. Assuming your list is sorted by state, you could use ...

Validation and Lookup
Im am creating a Price Inquiry tool... I am just having problems when it comes to the lookup for the prices... I have A1 as the Item Category drop down and B1 as the Item drop down... I want C3 to return the price of the item once B1 already has the exact item to lookup... I created the A1 and B1 as dependent drop down list. A B C 1 Gardening Water Hose Price Need help.. Please advise From what i understand is that you want column C to return the price of the item if column A is selected and column B, you select 'price' from t...

Notes Schema Name
Hi all, Can anyone please tell me what is the notes schema name and whether or not I can apply a java script on it - in the onload or onsave options in the form. Tnx alot.. Hi, The schema name is Annotation. However it is not possible to customize the onload/onsave event the way you can do it with the other entities. However a callout is supported. You can write code for Create, Update, Delete and Assign. Hope this helps, Merijn van Mourik http://crmerijn.blogspot.com "Guy Shokrani" wrote: > Hi all, > > Can anyone please tell me what is the notes schema name a...

Valid Headers for Exchange 5.5 Export
Hi, I need to Export all permissions on all mailboxes in a specific container in Exchange 5.5. Does anybody know the correct headers used for this? Thanks in advance! ...

xml to SQL
Hey we have a project in which a company produces a XML page in reply to actions on it's site. I see that SQL 2000 works well with XML so Can someone point me in the right direction, I would like to take the XML from thier SQL and have it "post" to own sql server (add,create, data, modifity and delete data on the fly). I was looking at doing XML to HTML and then passing to some a ASP but if we can grab from the responsetext then we could save time and headaches. Now I really know next to nothing about XML but I am reading all the newsgroups and pulled now TONS of xml / sql stuff ...

Cannot find mfcs42d.pdb for C++ 6.0 on Windows XP at runtime
I'm getting Find Symbols pop-up window while running C++ 6.0 saying "Please enter the path for mfcs42d.pdb". After I specify the file location at VC98\MFC\Lib (1,092 KB from 7/15/2000), I'm getting a note that the file is found but is not the correct one. I didn't have this problem working on Windows NT. Now I'm trying to run the recompiled version of the same code on Windows XP. Service pack 5 is installed. Please advise what to do. Thanks. ...

How can I save a Publisher file so anyone with an email address c.
I want to send a 4 page file to a group of people who all have different types of PC's. I want to be able to send my file in a format that everyone can open no matter what type of hardware or software they have. Any suggestions would be appreciated. Thank you. A small child turns to Ed, and exclaims: "Look! Look! A post from Steve Larry <Steve Larry@discussions.microsoft.com>!"... > I want to send a 4 page file to a group of people who all have > different types of PC's. I want to be able to send my file in a > format that everyone can open no matter wh...

new xml file is larger than the original
i'm working on a windows application that will edit and create xml files from another application. the original file is 83k, the one created by my vb.net program is 153k but all i add is a new xmlelement when i use the other program and add a xmlelement is only increased the file to 85k. how come my application increased 70k in size and also added the <?xml version="1.0"?> when i didn't tell it to. how do i duplicated a xml file and only add the xml element that i want to insert. where did the extra 70k come from. thanks here is my code: Dim newEvtEnr...

What is the latest version of C#
I have seen several books referring to C# 3.0. Is the same as C# 2008. I was going to buy some reference material and want to make sure it is for the latest version. I've have always seen it referred to as C# 20xx GregNga wrote: > I have seen several books referring to C# 3.0. Is the same as C# 2008. No. C# 3.0 is the language included with Visual Studio 2008 and Visual C# 2008. The latter is one edition of Visual Studio 2008 Express that includes only the C# components. The language isn't called "C# 2008", though it's easy to see where the confusion co...

xml data in excel
I have designed an excel template with tabular format (row by row input) for user input. I have to make the validation for those input. My question is that is it possible to use XML schema as the input format template and use it for the data validation like normal XML validation. Could anyone suggest me how to do that?? Million thanks. ...