On Wed, 23 Apr 2003 12:19:24 -0700, Kohsuke Kawaguchi <Kohsuke.Kawaguchi_at_Sun.COM> wrote:
>As far as I can see, your code and compilation procedure looks OK. So it
>must be either a very simple mistake, or a bug in the RI.
>
As Usual, simple bug. the instance document was not set to the namespace.
> - could you turn on the validation on the unmarshaller just for a
> test?
>
- reveals namespace issue at top level of document. on correction- it gets more interesting...
3 levels deep it insists qualified names become unqualified. the original Xml file passed XmlSpy 5.2 validation, after massaging the file so that
JAXB-RI can read the file XmlSpy insists the generated file is not schema-conformant- below is the relevant parts of the Schemas and the Xml file that succesfully completes unmarshalling (nominally the same as the marshalled result: replace "tvt" with "ns1".)
I used the qualified approach as i was unable to get the file to work using the whole file as unqualified (xmlns="tvTrac" as opposed to xmlns:tvt="tvTrac"). I am presuming that this is probably a bug in the RI but I could be wrong...
Is XmlSpy not properly validating?
As I believe this will need examples to show, I have included the real Xml and Schema files (less a couple of repeated blocks in the XML)I can attach the Java files as well if desired-
in the files below the following the translations from the previous scenario apply ( sorry I don't usually get to program much with foo :-) )
namespace: xmlFoo --> tvTrac
Java Package: Xml.foo -> JvTrac.Xml
root element: <foo-root1> --> <TvTrac-DaemonConfig>
>>>>>>>>>Unmarshallable Xml file:
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 2 U (
http://www.xmlspy.com) by Russell C. Johns (Los Alamos National Laboratory) -->
<TvTrac-DaemonConfig MajorVersion="0" MinorVersion="1" xmlns="tvTrac" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="tvTrac
E:\Trac\TvTrac\JvTrac\Xml\TvTrac-DaemonConfig.xsd">
<port>8189</port>
<processors>2</processors>
<speedIndex>0.5</speedIndex>
<isReferenceSystem>false</isReferenceSystem>
<buildCapable>true</buildCapable>
<repositoryInfo type="local">
<location>/home/cvs/TvTrac</location>
<port>0</port>
</repositoryInfo>
<executableInfo>
<inFiles>
<name>tracin</name>
<suffix>.inp</suffix>
<type>ASCII</type>
<input>req</input>
<output>NA</output>
</inFiles>
<outFiles>
<name>trcout</name>
<suffix>.out</suffix>
<type>ASCII</type>
<input>NA</input>
<output>req</output>
</outFiles>
<cmdLineOptions>
<optName>-usetpr</optName>
<numDataArgs>0</numDataArgs>
<reqFilesReplaced>trcdmp</reqFilesReplaced>
<newOutFiles>trctpr</newOutFiles>
</cmdLineOptions>
<appliesTo>
<startVersion>
<category>NRC</category>
<MajorVersion>3</MajorVersion>
<MinorVersion>1110</MinorVersion>
<release> </release>
</startVersion>
<RangeClass>AllMinor</RangeClass>
</appliesTo>
</executableInfo>
<diffInfo>
<numFileTypes>2</numFileTypes>
<comparators>
<tag>ASCII</tag>
<path>diff.exe</path>
<argList>%Reference%</argList>
<argList>%Test%</argList>
<resultType>Text</resultType>
</comparators>
<comparators>
<tag>SigDif</tag>
<path>rtrcsno.exe</path>
<argList>%Reference%</argList>
<argList>%Test%</argList>
<resultType>Text</resultType>
</comparators>
</diffInfo>
</TvTrac-DaemonConfig>
<<<<<<<<<
>>>>>>>>>DaemonConfig Schema:
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 2 U (
http://www.xmlspy.com) by Russell C. Johns (Los Alamos National Laboratory) -->
<xs:schema targetNamespace="tvTrac" xmlns:xs="
http://www.w3.org/2001/XMLSchema" xmlns="tvTrac" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="TvTrac-DataTypes.xsd"/>
<xs:element name="TvTrac-DaemonConfig">
<xs:annotation>
<xs:documentation>ConfigurationalElements for TvTrac Daemon</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="port" type="PortType">
<xs:annotation>
<xs:documentation>port number that daemon will listen on</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="processors" type="xs:int">
<xs:annotation>
<xs:documentation>number of processors that can be used to perform calcs</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="speedIndex" type="xs:float">
<xs:annotation>
<xs:documentation>relative speed as compared to reference System </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="isReferenceSystem" type="xs:boolean">
<xs:annotation>
<xs:documentation>flag for this being reference system.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="buildCapable" type="xs:boolean">
<xs:annotation>
<xs:documentation>flag for system being build capable</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="buildInfo" type="BuildInfoType" minOccurs="0">
<xs:annotation>
<xs:documentation>information about location of build resources</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="repositoryInfo" type="RepositoryInfoType">
<xs:annotation>
<xs:documentation>information for the type and location of the reference results repository</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="executableInfo" type="ExecutableInfoType">
<xs:annotation>
<xs:documentation>information for files used by the application for input - output - cmd Line Args data</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="diffInfo" type="DiffInfoType">
<xs:annotation>
<xs:documentation>information on how to "diff" each file type</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="MajorVersion" type="xs:nonNegativeInteger" use="required" fixed="0">
<xs:annotation>
<xs:documentation>major version of Schema / interface</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MinorVersion" type="xs:nonNegativeInteger" use="required" fixed="1">
<xs:annotation>
<xs:documentation>minor version number of schema -interface </xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
<<<<<<<<<<<<
>>>>>>>>>>>> DataTypes Schema:
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 2 U (
http://www.xmlspy.com) by Russell C. Johns (Los Alamos National Laboratory) -->
<xs:schema targetNamespace="tvTrac" xmlns:xs="
http://www.w3.org/2001/XMLSchema" xmlns="tvTrac">
<xs:complexType name="BuildInfoType">
<xs:annotation>
<xs:documentation>derived type to contain info needed to build app.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="makePath" type="xs:string">
<xs:annotation>
<xs:documentation>path to make app Incl make name e.g. /bin/make</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="makeDbgArgs" type="xs:string" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>arguments to use to build a debug executable</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="makeOptArgs" type="xs:string" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>arguments to use to build a optimized exe</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CommandLineArgType">
<xs:annotation>
<xs:documentation>Definition of a CommandLine Argument element</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Arg" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="cmd" type="xs:string" use="required"/>
</xs:complexType>
<xs:simpleType name="ComplexityType">
<xs:annotation>
<xs:documentation>Definition of Complexity Type</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:float"/>
</xs:simpleType>
<xs:simpleType name="CrcValue">
<xs:restriction base="xs:string">
<xs:length value="60"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DescriptionType">
<xs:annotation>
<xs:documentation>Definition of Description</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:complexType name="DiffInfoType">
<xs:annotation>
<xs:documentation>information on how to "diff" each file type</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="numFileTypes" type="xs:nonNegativeInteger"/>
<xs:element name="comparators" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>list of file type tags and info on how to comapare them.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="tag" type="xs:string">
<xs:annotation>
<xs:documentation>name for file type e.g. ASCII</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="path" type="xs:string">
<xs:annotation>
<xs:documentation>path to diffing application</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="argList" type="xs:string" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>list of arguments to diffing app %Ref% idicates reference file %Test% representy test file.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="resultType" type="xs:string">
<xs:annotation>
<xs:documentation>type tag of result of diff. enables recursive diff.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ExeIdType">
<xs:annotation>
<xs:documentation>derived Type to Id a Executable</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Name" type="NameType"/>
<xs:element name="BinaryCrcValue" type="CrcValue"/>
<xs:element name="TracVersion" type="VersionType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ExecutableInfoType">
<xs:annotation>
<xs:documentation>information for files used by the application for input - output - cmd Line Args data</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="inFiles" type="FileType" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>list of files used for input</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="outFiles" type="FileType" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>list of file used for output</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="chkOnErr" type="xs:string" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>list of files to compare on error</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="cmdLineOptions" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>list of Cmd Line args</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="optName" type="xs:string">
<xs:annotation>
<xs:documentation>name of the argument</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="numDataArgs" type="xs:unsignedInt">
<xs:annotation>
<xs:documentation>number of arguments given after argument for data</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="aliasFor" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>used if argument is alias fo other argument e.g. --nocpu</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="optFilesNeeded" type="xs:string" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>optional input file that are REQUIRED when option is present.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="reqFilesReplaced" type="xs:string" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>required file that aren't used/needed when </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="newOutFiles" type="xs:string" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>optionl output files provided by the argument</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="appliesTo" type="VersionRange"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ExeSpecType">
<xs:annotation>
<xs:documentation>definition of an EXE spec as a derived type.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="name" type="NameType">
<xs:annotation>
<xs:documentation>name or label of the executable for testing.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="cvsTag" type="NameType">
<xs:annotation>
<xs:documentation>the cvs tag to retrieve the source for this executable.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="cvsModules" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>The Cvs modules used for this executable</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="platform" type="PlatformType" minOccurs="0">
<xs:annotation>
<xs:documentation>Canonical Name of the host Operating System.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="compiler" minOccurs="0">
<xs:complexType>
<xs:annotation>
<xs:documentation>compiler name</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="NameType">
<xs:attribute name="version" type="VersionStringType">
<xs:annotation>
<xs:documentation>version of the compiler</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="optimization" type="OptimizationString" minOccurs="0">
<xs:annotation>
<xs:documentation>optimization used to make this executable.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="sourceCrcValue" type="CrcValue" nillable="true">
<xs:annotation>
<xs:documentation>CRC hash value on the source used to build the executable.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="binaryCrcValue" type="CrcValue" minOccurs="0">
<xs:annotation>
<xs:documentation>Crc Type value for the platform dependent binary.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dateCompiled" type="xs:string">
<xs:annotation>
<xs:documentation>date and time the executable was made.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TracVersion" type="VersionType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ExternalReferenceType">
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:element name="Location" type="xs:string"/>
<xs:choice>
<xs:element name="SetReference" type="SetReferenceType" minOccurs="0"/>
<xs:element name="TestReference" type="TestReferenceType" minOccurs="0"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="RefType" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="PACKAGE"/>
<xs:enumeration value="SET"/>
<xs:enumeration value="PROBLEM"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="FileSetType">
<xs:annotation>
<xs:documentation>specification of a FileSet</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="FileType" type="xs:string" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="FileType">
<xs:annotation>
<xs:documentation>Derived type to describe a input or output file</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="suffix" type="xs:string"/>
<xs:element name="type" type="xs:string"/>
<xs:element name="input" type="FileUseType"/>
<xs:element name="output" type="FileUseType"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="FileUseType">
<xs:annotation>
<xs:documentation>Derived Type to describe the use of an input or output file</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="req"/>
<xs:enumeration value="opt"/>
<xs:enumeration value="NA"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="HostType">
<xs:annotation>
<xs:documentation>definition of HostType, string of no more than 80 chars.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="80"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IPV4Type">
<xs:annotation>
<xs:documentation>Type for an IP address.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="16"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="LevelsType">
<xs:annotation>
<xs:documentation>Specification of the Levels element</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:int"/>
</xs:simpleType>
<xs:simpleType name="NameType">
<xs:annotation>
<xs:documentation>defintion of a name constant: String of no more than 20 Chars</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="20"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="OptimizationString">
<xs:restriction base="xs:string">
<xs:length value="40"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PlatformType">
<xs:restriction base="xs:string">
<xs:length value="40"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PortType">
<xs:annotation>
<xs:documentation>Derived type for Socket ports </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:unsignedInt"/>
</xs:simpleType>
<xs:complexType name="QueryExe-ResponseType">
<xs:annotation>
<xs:documentation>Queryexe response.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="foundExe" type="xs:boolean"/>
<xs:element name="exeSpec" type="ExeSpecType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="RangeClassType">
<xs:annotation>
<xs:documentation>Specification of how to define range</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Default"/>
<xs:enumeration value="AllMajor"/>
<xs:enumeration value="AllMinor"/>
<xs:enumeration value="AllRelease"/>
<xs:enumeration value="AllCategory"/>
<xs:enumeration value="StdRange"/>
<xs:enumeration value="SingleVersion"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="RepositoryInfoType">
<xs:annotation>
<xs:documentation>information for the type and location of the reference results repository</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="location" type="xs:string">
<xs:annotation>
<xs:documentation>path to repository</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="port" type="PortType">
<xs:annotation>
<xs:documentation>port to use if remote type</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="type" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>type of repository "local", "Rmt"</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:simpleType name="SetReferenceType">
<xs:annotation>
<xs:documentation>definition of a set reference</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="SizeType">
<xs:annotation>
<xs:documentation>Specification of a Size</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:float"/>
</xs:simpleType>
<xs:complexType name="TestReferenceType">
<xs:annotation>
<xs:documentation>definition of a Test Reference</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="SetName" type="xs:string"/>
<xs:element name="TestName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TestSetType">
<xs:annotation>
<xs:documentation>Definition of a Test Set element</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:element name="Description" type="DescriptionType"/>
<xs:element name="Complexity" type="ComplexityType" minOccurs="0"/>
<xs:element name="Size" type="SizeType" minOccurs="0"/>
<xs:element name="Time" type="TimeType" minOccurs="0"/>
<xs:element name="Levels" type="LevelsType" minOccurs="0"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="TestProblem" type="TestProblemType"/>
<xs:element name="SetReference" type="SetReferenceType"/>
<xs:element name="TestReference" type="TestReferenceType"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TestProblemType">
<xs:annotation>
<xs:documentation>Definition of a Test Problem Element</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:element name="Description" type="DescriptionType"/>
<xs:element name="versionParameters" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="appliesTo" type="VersionRange"/>
<xs:element name="CmdLineOptions" type="CommandLineArgType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="RequiredFileSet" type="xs:short"/>
<xs:element name="OptionalFileSet" type="xs:short"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Restart" type="TestReferenceType" minOccurs="0"/>
<xs:element name="Parallel" type="xs:boolean" minOccurs="0"/>
<xs:element name="RefResults" type="VersionType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Successes" type="VersionType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Failures" type="VersionType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Complexity" type="ComplexityType" minOccurs="0"/>
<xs:element name="Levels" type="LevelsType" minOccurs="0"/>
<xs:element name="Time" type="TimeType" minOccurs="0"/>
<xs:element name="Size" type="SizeType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="TestType">
<xs:annotation>
<xs:documentation>Derived Type to encapsulate Tests</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Module" type="NameType"/>
<xs:element name="Problem" type="NameType"/>
<xs:element name="Options" type="NameType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="isRestart" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="TimeType">
<xs:annotation>
<xs:documentation>Specification of Time (seconds) Elapsed for a problem.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:long"/>
</xs:simpleType>
<xs:simpleType name="UserType">
<xs:annotation>
<xs:documentation>definition of UserType, string of no more than 20 chars.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="20"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="VersionRange">
<xs:annotation>
<xs:documentation>Definition of a range of versions for run time features</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="startVersion" type="VersionType"/>
<xs:element name="endVersion" type="VersionType" minOccurs="0"/>
<xs:element name="RangeClass" type="RangeClassType"/>
<xs:element name="exceptions" type="VersionType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="VersionStringType">
<xs:annotation>
<xs:documentation>definition of a version string, a string of no more than 20 chars</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="20"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="VersionType">
<xs:annotation>
<xs:documentation>Specification of a Version Type</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="category" type="xs:string">
<xs:annotation>
<xs:documentation>category of version e.g. KAPL, NRC, AAA etc.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MajorVersion" type="xs:int"/>
<xs:element name="MinorVersion" type="xs:int"/>
<xs:element name="release" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>