|
If I recall correctly, IE does not try to validate XML documents. You need to write a bit of code that sets the DOM's validateOnParse property to true and then loads the XML document into the DOM. Here's a JavaScript sample from the MSXML 4.0 SDK:
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.4.0");<br />
xmlDoc.async = false;<br />
xmlDoc.validateOnParse = true;<br />
xmlDoc.load("books.xml");
Erik Westermann
Author, Learn XML In A Weekend (October 2002)
|
|
|
|
|
You're right, IE doesn't validate the xml s. But you're code is missing the XMLSchemaCache part...
Anyway, you still deserve a !
rechi
|
|
|
|
|
Clearly I'm relatively new to authoring xml documents.
If I have an elment eg CarEngineCompnent and this element can have more CarEngineComponent within it, how do I represent this in an XML Schema? I'm confused as to what the schema should look like.
ASP.NET can never fail as working with it is like fitting bras to supermodels - it's one pleasure after the next - David Wulff
|
|
|
|
|
Senkwe Chanda wrote:
how do I represent this in an XML Schema?
...like this:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="CarEngineComponent">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="CarEngineComponent"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Although technically allowed, having a structure like this undermines one of the the benefits that an XSD (XML Schema) provides, namely, strong types. What this schema essentially says is that a CarEngineComponent is a mixed type element that can contain a value and another element. Although there's noting wrong with that from a purely structural point of view, most XML documents don't use that structure prefering instead ot have elements that contain data or other elements.
A bettter structure could be to have <CarEngineComponents> (note the plural form of the word) that contain one or more <CarEngineComponent> types. The naming convention makes it clear that <CarEngineComponents> is a container for something else.
Erik Westermann
Author, Learn XML In A Weekend (October 2002)
|
|
|
|
|
Thanks Erik. I'm trying to setup a schema for a situation where the level of containment is unknown and/or variable. For example, that CarEngineComponent could have a CarEngineComponent that itself contains another CarEngineComponent.
I'm getting the feeling that perhaps I'm not thinking in an XML-like way (which I've surprisingly found is not as sraight forward as I'd thought)
Thanks again, I'll go and rethink my document.
Regards
Senkwe
ASP.NET can never fail as working with it is like fitting bras to supermodels - it's one pleasure after the next - David Wulff
|
|
|
|
|
I have an XML file that need to be shown as a table.
I know that I can do it by XslTransform, but I need to let the user to edit the data and save it in the XML file.
How can I do it using C# in ASP.NET?
Thank you
Chagit
|
|
|
|
|
I believe the DataGrid (or something similar ) provided by WebForms can be bound to an XML source and is editable.
But I'm just startng with this stuff, so I'm not sure.
Christian
Hey, at least Logo had, at it's inception, a mechanical turtle. VB has always lacked even that... - Shog9 04-09-2002
During last 10 years, with invention of VB and similar programming environments, every ill-educated moron became able to develop software. - Alex E. - 12-Sept-2002
|
|
|
|
|
Chagit wrote:
How can I do it using C# in ASP.NET?
There are many ways, both conventional and unconventional.
As Christian mentioned you can use the power of the DataGrid to do most of the grunt work for you. This article explains how it is done.
You can also do it manually by having a master/detail setup as you would have had in ASP with a SQL data source. Remember XML is just a data source really, not a full query/input technology. You still need processing from ASP or ASP.NET or some other language to get data into an XML source.
So for example you would use XSL to output the HTML which included a FORM element back to a handling ASP page which goes through the FORM child-input-elements writing the changed data back into the XML file.
|
|
|
|
|
Hi there,
I m working on a application that is supposed to get a lot of info thru the web and it s calling a dll on server side thru SOAP..
1)it s working on several server but on one of them it s saying 'Class not registered"(dcom called dirrectly works fine but not soap)
2) when 2 client are accessingin the same times a big piece of work for the server it says send the 5300 error message which mean bad connection.. but it works fine if only one does that job
Anyone has a idea?
Thx
__________________
|
|
|
|
|
I was wondering if anyone has found an elegant solution to find if an xml node (of any XmlNodeType) is a child of another xml node using .NET?
Lol! - and I can't just use (node.Parent == parent) because it may not be a direct desendant
The code I came up with is:
private bool IsChild(XmlNode parent, XmlNode child, bool directDescendantsOnly) {
return ((child.ParentNode == parent)?
(true):
(directDescendantsOnly?
(false):
(((child.ParentNode == child.OwnerDocument)?
(false):
IsChild(parent, child.ParentNode, directDescendantsOnly)))
));
}
But it fails when you query NameSpace nodes, etc. It seems to be getting more and more special case, which is annoying...so please, if anyone has already tackled this one, can you let me know?
Many thankyous,
Ben
|
|
|
|
|
Would recursing though the children work better ( although it would take longer ) ?
Christian
Hey, at least Logo had, at it's inception, a mechanical turtle. VB has always lacked even that... - Shog9 04-09-2002
During last 10 years, with invention of VB and similar programming environments, every ill-educated moron became able to develop software. - Alex E. - 12-Sept-2002
|
|
|
|
|
hm - it might work (it should in theroy), but this code is quite core to the project I'm doing, so it's worth getting it to run as fast as possible. Admittedly getting it to run in the first place is always a good plan, but I think working backwards from the child, rather than forwards from the suggested parent, is a better plan.
Thanks for your help anyway!
Ben
|
|
|
|
|
I'm spending a lot of time with XML nowadays and I'm interested to know if anyone actually uses XSD's in their work situation ?
Christian
Hey, at least Logo had, at it's inception, a mechanical turtle. VB has always lacked even that... - Shog9 04-09-2002
Cats, and most other animals apart from mad cows can write fully functional vb code. - Simon Walton - 6-Aug-2002
|
|
|
|
|
Yes, we use it as the offical schema format.
"If I won't be myself, who will?" Alfred Hitchcock
|
|
|
|
|
Is your schema exposed externally ? I'm just curious because XSD's seem quite complex, the XSD for our format would surely take at least a day to write and I'm not sure I see the benefits for our application.
Christian
Hey, at least Logo had, at it's inception, a mechanical turtle. VB has always lacked even that... - Shog9 04-09-2002
Cats, and most other animals apart from mad cows can write fully functional vb code. - Simon Walton - 6-Aug-2002
|
|
|
|
|
Christian Graus wrote:
Is your schema exposed externally ?
Not to be to evasive but I could answer this either way. For the matter of this discussion yes it is exposed. I.E. an authorized customer or supplier company can (when we open the server access) access the schemas to validate the data as well as us use it to validate what is submited to us.
Christian Graus wrote:
I'm just curious because XSD's seem quite complex, the XSD for our format would surely take at least a day to write and I'm not sure I see the benefits for our application.
Yes any schema will take some time. Especially since you seldom get it right the first time (i.e. do you really cover all of the options you are expecting to. However I think XSD's ar better than DTD's.
So the question is do you need a schema? I strongly recommend doing so if just for documenting your work. If this is all you need using one of the generation tools is good. I am using Authority from Tibco (formerly Extensibility). I think is you just get the schema tool it is only $100 US and is well worth the money. I have the TurboXML suite.
If all of your data transmitals are internal this is not as important as you can include testing to ensure compatiblity. But once you transmite or recieve data from other this is beyond your internal testing limits.
REF: http://www.tibco.com/solutions/products/extensibility/turbo_xml.jsp
I did not see authority listed by itself but you may want to check it out. The one big negative is it is java based so a little slow.
"If I won't be myself, who will?" Alfred Hitchcock
|
|
|
|
|
Michael A. Barnhart wrote:
However I think XSD's ar better than DTD's.
Yes, they appear to be. Internally, for documentation, we just create an empty XML document.
Michael A. Barnhart wrote:
I am using Authority from Tibco (formerly Extensibility).
How do these tools handle things like multiple nodes and minimum/maximum value/counts ? Do they take a number of documents to validate against ?
Michael A. Barnhart wrote:
If all of your data transmitals are internal this is not as important as you can include testing to ensure compatiblity. But once you transmite or recieve data from other this is beyond your internal testing limits.
Yes, that's basically what I thought. I'm asking from the perspective of writing a wrapper for XML in C#, and an editor for XML/XSL and XSD's, and I just wondered how useful they are in the 'real' world.
Christian
Hey, at least Logo had, at it's inception, a mechanical turtle. VB has always lacked even that... - Shog9 04-09-2002
Cats, and most other animals apart from mad cows can write fully functional vb code. - Simon Walton - 6-Aug-2002
|
|
|
|
|
Christian Graus wrote:
How do these tools handle things like multiple nodes and minimum/maximum value/counts ?
Very easy. You just edit the general properties (i.e. required, optional, repeatable and then switch to a source mode where you can edit the individual values for min and max occurance (default is unbounded for max and 0 for min if optional and repeatable are set.
Christian Graus wrote:
Do they take a number of documents to validate against ?
I am not sure I am understanding this question. This generates the schemas. It does not do the validation. The validating parser would do this step.
Christian Graus wrote:
I'm asking from the perspective of writing a wrapper for XML in C#, and an editor for XML/XSL and XSD's, and I just wondered how useful they are in the 'real' world.
Yes they are useful in the real world. This will grow in the next several years. Right now the user authorization and validation for things like Web Services needs to be handled. At that point the need for these tools will grow as these services grow to be more than just demos (or in closed access as mine are).
You have to ask your self how much is this going to cost vs buying what is available. For me the tools were to cheap to keep updating our work.
"If I won't be myself, who will?" Alfred Hitchcock
|
|
|
|
|
Michael A. Barnhart wrote:
I am not sure I am understanding this question.
What I meant was, if I accepted three XML documents, I could extrapolate from that how often a node must appear, and how often it may appear. It would provide the range needed to do that stuff automatically.
You've been most helpful - thanks.
Christian
Hey, at least Logo had, at it's inception, a mechanical turtle. VB has always lacked even that... - Shog9 04-09-2002
Cats, and most other animals apart from mad cows can write fully functional vb code. - Simon Walton - 6-Aug-2002
|
|
|
|
|
Christian Graus wrote:
It would provide the range needed to do that stuff automatically.
For this set of tools it would just give you (0 or 1) min and unbounded for the max if the data had multiple entries. It would not give you say 1 to 5 for the range. But that is a very easy edit to go change.
Good Luck, Mike
"If I won't be myself, who will?" Alfred Hitchcock
|
|
|
|
|
Christian Graus wrote:
I could extrapolate from that how often a node must appear, and how often it may appear. It would provide the range needed to do that stuff automatically.
XML Spy v4.4[^] can do this BTW.
|
|
|
|
|
Christian Graus wrote:
Yes, that's basically what I thought. I'm asking from the perspective of writing a wrapper for XML in C#, and an editor for XML/XSL and XSD's, and I just wondered how useful they are in the 'real' world.
Just to follow up on your question about use in the real world, I was working on a project recently that used web services to communicate with a database. The project had a thin oo wrapping around what I required of the xml, and this wrapping layer of classes required certain values from the xml it was given.
Rather than doing all the validation within the wrapping classes (and therefore making them more cumbersome), a schema (XSD) was created to validate the xml before it was passed to the wrapper. This way we got good feedback in the form of exceptions when the xml didn't conform to the requirements of the wrapping environment. Also, I did at one point have plans to automatically generate the wrapper classes from the schema itself, and so solve the maintainance time of keeping a schema up to date.
The other side issue that arose was that the schema ment that (as another poster has already noted) we had a common interface for parallel development - much like an Interface would do for a Class with pre and post conditions, we used the XSD for the XML.
Hope this helps
Ben
|
|
|
|
|
Use it extensively. It provides several purposes, the main being that one can validate their XML and the other being that if your project is related to transfer of data between departments or organizations then the XSD serves as fantastic documentation.
Also XML authoring tools like XML spy use the XSD to help you with your XML. It will provide you with options, choices, valid data etc.
|
|
|
|
|
Christian Graus wrote:
I'm spending a lot of time with XML nowadays and I'm interested to know if anyone actually uses XSD's in their work situation ?
If by XSD you mean the W3C XML Schema then yes. But admitedly at the moment we use both DTDs and XSDs. For the simpler projects DTDs are much easier and suffice, for the more complex projects then we go XSD.
One of the best benefits of XSD IMO is that it is an XML document itself, unlike a DTD. This proves very useful when doing dynamic processing of an XML schema. With a DTD you have to do some manual parsing which is a pain, but with an XSD you can use a normal XML parser to do the grunt work for you. I really hope the W3C convert all their schemas over to XSD soon so that I can actually make use of them properly
And of course with XSD you get proper types (e.g. string, number etc.) which is very important.
While they are more complex to create they are far more powerful and actually once you get into a lot more logical than DTDs. The usual XML well-formed rules apply and you can even validate an XSD against another to ensure the new XSD is valid.
As mentioned in the other post XML Spy 4.4 is quite handy with XSD documents.
|
|
|
|
|