[Mono-list] Validation of XML
Herman Vega
hvegax at gmail.com
Wed Nov 30 14:36:09 EST 2005
Hi All...
I need to validate an Xml content and I have two ways:
* Using DTD file.
* Using XSD schema file.
The problem is that i have a DTD file that it's ok, work fine with
xmllint validation program. but my implementation with DTD Validation
don't work with mono. I decide to work with XSD validation schema and
work fine for me. Now i can validate a xml against XSD schema file
very well with mono.
But here it's the new problem... when i generate a XSD schema file
from XML using xsd.exe this generate a wrong XSD Schema file.
Now the 2 ways... (1) how i can generate a valid XSD schema file from
Xml (not manual) or (2) how i can validate a Xml using valid DTD file?
I attached the source files that I'm still working
The error using DTD validation:
$ mono -V
Mono JIT compiler version 1.1.8.2, (C) 2002-2005 Novell, Inc and
Contributors. www.mono-project.com
TLS: __thread
GC: Included Boehm (with typed GC)
SIGSEGV : normal
Globalization: norma
$ mcs --version
Mono C# compiler version 1.1.8.0
$ mono ValidateXml.exe DTD activities.dtd activities.xml
Unhandled Exception: System.Xml.XmlException: Unexpected declaration
markup was found. file:///home/hvega/ticedu/xml/TestXml/activities.dtd
Line 2, position 3.
Regards
>> Begin ValidateXml.cs <<
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
namespace ValidationSample
{
class Sample
{
public static void Main (string [] args)
{
XmlTextReader tr = new XmlTextReader (args[2]);
XmlValidatingReader vr = new XmlValidatingReader (tr);
if (args[0] == "DTD")
// for DTD validation
vr.ValidationType = ValidationType.DTD;
else if (args[0] == "XSD")
// form schema XSD validation
vr.ValidationType = ValidationType.Schema;
vr.Schemas.Add(string.Empty, args[1]);
vr.ValidationEventHandler +=
new ValidationEventHandler (ValidationHandler);
while (vr.Read ());
Console.WriteLine ("End Validation");
}
public static void ValidationHandler (object sender,
ValidationEventArgs args)
{
Console.WriteLine ("***Validation error");
Console.WriteLine ("\tSeverity:{0}", args.Severity);
Console.WriteLine ("\tMessage :{0}", args.Message);
}
}
}
>> End ValidateXml.cs <<
>> begin activity.dtd <<
<!-- top-level element -->
<!ELEMENT activityfile (plan)>
<!-- a single plan has a set of modules -->
<!ELEMENT plan (name,acronym,allduration,description,designers,resource,planprogression,module+)>
<!ATTLIST plan
id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT acronym (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT designers (designer*)>
<!ELEMENT designer (#PCDATA)>
<!ELEMENT allduration (#PCDATA)>
<!ATTLIST allduration
unit CDATA "months">
<!-- -->
<!ELEMENT module (name, resource, moduleplanification,
moduleprogression, notes,(activity|module)*)>
<!ATTLIST module
id CDATA #REQUIRED>
<!-- A resource is provided by link or external store -->
<!ELEMENT resource (#PCDATA)>
<!ATTLIST resource type (link|external) "link">
<!ELEMENT notes (note*)>
<!ELEMENT note (name,date,description)>
<!ATTLIST note
type (public|private) #REQUIRED>
<!ELEMENT date (#PCDATA)>
<!-- -->
<!-- A single activity (a set of elements) -->
<!ELEMENT activity (name,resource,role,planification,progression,advices,notes)>
<!ATTLIST activity
id CDATA #REQUIRED>
<!-- The type of role (use|consult|produce|execute) -->
<!ELEMENT role EMPTY>
<!ATTLIST role
type (none|use|consult|produce|execute) "none">
<!ELEMENT planification (duration,period,evaluation,interaction,jobs,datelimit)>
<!-- duration of the whole activity -->
<!ELEMENT duration EMPTY>
<!ATTLIST duration
hour CDATA "0"
min CDATA "0">
<!-- Planification of time between start and finish the activity -->
<!ELEMENT period EMPTY>
<!ATTLIST period
min CDATA "0"
max CDATA "0"
unit CDATA "months">
<!-- Percentage of advance -->
<!ELEMENT evaluation (#PCDATA)>
<!-- Kind of interaction -->
<!ELEMENT interaction (team?,group?)>
<!ELEMENT team EMPTY>
<!ELEMENT group EMPTY>
<!-- # of jobs to be sent -->
<!ELEMENT jobs (#PCDATA)>
<!-- Last date to get the activity done -->
<!ELEMENT datelimit (#PCDATA)>
<!ELEMENT planprogression (complete)>
<!ATTLIST planprogression
type (bymodules|sequential|parallel|byoptions) "bymodules">
<!ELEMENT moduleplanification (duration,period,evaluation,interaction
,groupwork)>
<!ELEMENT groupwork EMPTY>
<!ATTLIST groupwork
hour CDATA "0"
min CDATA "0">
<!ELEMENT moduleprogression (weight,complete)>
<!ATTLIST moduleprogression
type (bymodules|sequential|parallel|byoptions) "bymodules">
<!ELEMENT complete EMPTY>
<!ATTLIST complete
count CDATA "0"
total CDATA "0" >
<!ELEMENT progression (weight,release,validation)>
<!ELEMENT weight (#PCDATA)>
<!ELEMENT release (manual?,automatic?)>
<!ELEMENT manual EMPTY>
<!ELEMENT automatic EMPTY>
<!ATTLIST automatic
hour CDATA "0"
min CDATA "0"
sec CDATA "50">
<!ELEMENT validation (#PCDATA)>
<!ELEMENT advices (advice*)>
<!ELEMENT advice (title,description,resource)>
<!ATTLIST advice
id CDATA #REQUIRED>
<!ELEMENT title (#PCDATA)>
>> end activity.dtd <<
>> begin acivity.xml <<
-
<plan id="1">
<name>Plan Name</name>
<acronym/>
<allduration unit="months"> </allduration>
<description> </description>
<designers>
</designers>
<resource type="link"> </resource>
-
<planprogression type="sequential">
<complete count="0" total="0"/>
</planprogression>
-
<module id="1">
<name>Mod.1 Name Modulo 1</name>
<resource type="link"> </resource>
-
<moduleplanification>
<duration hour="0" min="0"/>
<period min="0" max="0" unit="0"/>
<evaluation> </evaluation>
-
<interaction>
<team/>
</interaction>
<groupwork hour="0" min="0"/>
</moduleplanification>
-
<moduleprogression type="bymodules">
<weight> </weight>
<complete count="0" total="0"/>
<validation> </validation>
</moduleprogression>
<advices>
</advices>
<notes>
</notes>
-
<activity id="1">
<name>Activity 1</name>
<resource type="link"> </resource>
<role type="use"/>
-
<planification>
<duration hour="0" min="0"/>
<period min="0" max="0" unit="months"/>
<evaluation> </evaluation>
<interaction/>
<jobs> </jobs>
<datelimit> </datelimit>
</planification>
-
<progression>
<weight> </weight>
-
<release>
<manual/>
<automatic hour="0" min="0" sec="0"/>
</release>
<validation> </validation>
</progression>
<advices>
</advices>
<notes>
</notes>
</activity>
</module>
</plan>
>> End activity.xml <<
--
,''`. Herman Vega Jara <hvega at alumnos.ubiobio.cl>
: :' : Ing. ejec. Comp. e Inf. at UBB rlz!
`. `' http://gbtcr.chileforge.cl
`-
More information about the Mono-list
mailing list