[prev in list] [next in list] [prev in thread] [next in thread]
List: xerces-c-users
Subject: Re: AW: Problem with XercesDOMParser
From: Alberto Massari <amassari () datadirect ! com>
Date: 2008-04-21 10:29:45
Message-ID: 480C6C99.8080109 () datadirect ! com
[Download RAW message or body]
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:amassari@datadirect.com]
> Gesendet: Montag, 21. April 2008 11:37
> An: c-users@xerces.apache.org
> 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
> >
>
>
>
>
>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic