Hi Jörg,
you have hit a known limitation of Xerces (see
http://xerces.apache.org/xerces-c/schema.html): you use two
maxOccurs="4096" statements in the schema, and this causes the building
of a big table of validation states. Replacing those two statements with
maxOccurs="unbounded" will speed up validation.
Alberto
Atzenhoefer Joerg wrote:
Hello Alberto,
it looks like again attaching the Schema file did not work.
Now I am sending it as text.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:simpleType name="Bit_Offset_Range" final="">
<xs:annotation>
<xs:documentation>Range [0..7]</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:unsignedByte">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="7"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Ana_IO_Range">
<xs:annotation>
<xs:documentation>Range [1..32]</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:unsignedByte">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="32"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Dig_IO_Range" final="restriction">
<xs:annotation>
<xs:documentation>Range [1..4096]</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:unsignedInt">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="4096"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Ana_Type" final="list">
<xs:annotation>
<xs:documentation>Format enumeration for analog
IOs</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="signed"/>
<xs:enumeration value="unsigned"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Access_Byte_Mask">
<xs:annotation>
<xs:documentation>String with 8 digits in [0,
1]</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="8"/>
<xs:pattern value="[0-1]{8}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Drv_Name_Type">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="32"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Bus_Instance_Name_Type">
<xs:annotation>
<xs:documentation>Length limited, non-empty string for bus
names</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="512"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Segment_Offset_Type">
<xs:annotation>
<xs:documentation>Byte- and Bit-Address to specify a segment
offset</xs:documentation>
</xs:annotation>
<xs:attribute name="segmentByteOffset" type="xs:unsignedInt"
use="required"/>
<xs:attribute name="segmentBitOffset" type="Bit_Offset_Range"
use="required"/>
</xs:complexType>
<xs:complexType name="Dig_InOut_Type">
<xs:annotation>
<xs:documentation>Type for the mapping of a digital
IO</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Start" type="Segment_Offset_Type"/>
<xs:element name="End" type="Segment_Offset_Type"
minOccurs="0"/>
</xs:sequence>
<xs:attribute name="krcStartIndex" type="Dig_IO_Range"
use="required"/>
<xs:attribute name="segmentID" type="xs:unsignedInt"
use="required"/>
</xs:complexType>
<xs:complexType name="Ana_InOut_Type">
<xs:annotation>
<xs:documentation>Type for the mapping of an analog
IO</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Start" type="Segment_Offset_Type"/>
<xs:element name="End" type="Segment_Offset_Type"/>
<xs:element name="Format">
<xs:complexType>
<xs:attribute name="cal"
type="CAL_Range"/>
<xs:attribute name="type" type="Ana_Type"
use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="krcIndex" type="Ana_IO_Range"
use="required"/>
<xs:attribute name="segmentID" type="xs:unsignedInt"
use="required"/>
</xs:complexType>
<xs:element name="Application">
<xs:annotation>
<xs:documentation>Root Element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="ProcessData">
<xs:complexType>
<xs:sequence>
<xs:element name="Segment"
minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence
minOccurs="0" maxOccurs="unbounded">
<xs:element
name="AccessMask" minOccurs="0">
<xs:complexType>
<xs:attribute
name="byteNr" type="xs:unsignedInt" use="required"/>
<xs:attribute
name="mask" type="Access_Byte_Mask" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="drvName"
type="Drv_Name_Type" use="required"/>
<xs:attribute
name="busInstanceName" use="required">
<xs:simpleType>
<xs:restriction base="Bus_Instance_Name_Type"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute
name="byteOffset" type="xs:unsignedInt" use="required"/>
<xs:attribute name="byteSize"
type="xs:unsignedInt" use="required"/>
<xs:attribute name="segmentID"
type="xs:unsignedInt" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Mapping">
<xs:complexType>
<xs:sequence>
<xs:element
name="Output">
<xs:complexType>
<xs:sequence>
<xs:element
name="Digital">
<xs:complexType>
<xs:sequence>
<xs:element
name="Out" type="Dig_InOut_Type" minOccurs="0" maxOccurs="4096"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element
name="Analog">
<xs:complexType>
<xs:sequence>
<xs:element
name="Anout" type="Ana_InOut_Type" minOccurs="0" maxOccurs="32"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element
name="Input">
<xs:complexType>
<xs:sequence>
<xs:element
name="Digital">
<xs:complexType>
<xs:sequence>
<xs:element
name="In" type="Dig_InOut_Type" minOccurs="0" maxOccurs="4096"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element
name="Analog">
<xs:complexType>
<xs:sequence>
<xs:element
name="Anin" type="Ana_InOut_Type" minOccurs="0" maxOccurs="32"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element
name="IOLinking">
<xs:complexType>
<xs:sequence>
<xs:element
name="IOLink" minOccurs="0" maxOccurs="32">
<xs:complexType>
<xs:attribute
name="krcInputIndex" type="Dig_IO_Range" use="required"/>
<xs:attribute
name="krcOutputIndex" type="Dig_IO_Range" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Options" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element
name="DataIntegrity">
<xs:complexType>
<xs:attribute name="value"
type="xs:boolean" use="required"/>
</xs:complexType>
</xs:element>
<xs:element
name="NrOfInOut">
<xs:complexType>
<xs:attribute name="value"
type="Dig_IO_Range" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Trigger"
minOccurs="0">
<xs:complexType>
<xs:sequence
minOccurs="0">
<xs:element name="Bus"
minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute
name="busInstanceName" type="Bus_Instance_Name_Type" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Stream"
minOccurs="0">
<xs:complexType>
<xs:sequence
minOccurs="0">
<xs:element name="Bus"
minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute
name="busInstanceName" type="Bus_Instance_Name_Type" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="kukaVersion" type="xs:string"
use="required"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="CAL_Range" final="restriction">
<xs:annotation>
<xs:documentation>Range[1..65535]</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:unsignedInt">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="65535"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
Jörg
-----Ursprüngliche Nachricht-----
Von: Alberto Massari [mailto:[EMAIL PROTECTED]
Gesendet: Montag, 21. April 2008 11:37
An: [email protected]
Betreff: Re: Problem with XercesDOMParser
Hi Jorg,
you didn't attach the XMLSchema...
Alberto
Atzenhoefer Joerg wrote:
Hello,
I am working with Xercesc 2.7.0 in a VxWorks environment. In general
it works fine but there is a problem with one certain XML-file, where
the parser does not return, i.e. it looks like the parser runs into an
endless loop. The schema file has some type definitions for elements
(e.g. "Dig_InOut_Type"). These elements are not generally required and
in the attached XML file they are missing (see comments starting with
"e.g.").
XML and schema file are set up with XML Spy.
I tried to parse this file with the Xercesc Windows version and the
behaviour is the same.
Is this a known problem ? What may be wrong with my code ?
Attached is the source code for parsing and the XML and Schema file.
Regards
Jörg