[xsde-users] Valid but XSD/e reports unexpected element
Kjell Svensson
iftroja at live.com
Sat May 8 11:04:18 EDT 2010
Hello
I have created a schema and an xml document in Altova xmlspy.
XMLSpy reports that the xml document is okay and valid against the schema, but xsd/e reports
~\cxx\hybrid\hello\hello3.xml:5:77: unexpected element encountered
I have tried to remove the schema location etc in the XML doc without success.
What I'm I doing wrong?
This is my schema:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.example.org/iosystem" targetNamespace="http://www.example.org/iosystem" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!-- Link ref -->
<xs:complexType name="LinkType">
<xs:attribute name="href" type="xs:string"/>
</xs:complexType>
<!-- UserDef -->
<xs:simpleType name="UserdefType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- Status sent in all replies -->
<xs:group name="Status">
<xs:sequence>
<xs:element name="RetCode" type="xs:long"/>
<xs:element name="ErrStr" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:group>
<xs:complexType name="StatusType">
<xs:group ref="tns:Status"/>
</xs:complexType>
<!-- Quality -->
<xs:simpleType name="QualityType">
<xs:restriction base="xs:string">
<xs:enumeration value="Good"/>
<xs:enumeration value="Bad"/>
<xs:enumeration value="Undefined"/>
</xs:restriction>
</xs:simpleType>
<!-- Access level -->
<xs:simpleType name="AccessLevelSimpleType">
<xs:restriction base="xs:string">
<xs:enumeration value="None"/>
<xs:enumeration value="Rapid"/>
<xs:enumeration value="LocalManual"/>
<xs:enumeration value="LocalAuto"/>
<xs:enumeration value="RemoteManual"/>
<xs:enumeration value="RemoteAuto"/>
</xs:restriction>
</xs:simpleType>
<xs:group name="AcessLevel">
<xs:sequence>
<xs:element name="AccessLevel" type="tns:AccessLevelSimpleType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:group>
<xs:complexType name="AccessLevelType">
<xs:group ref="tns:AcessLevel"/>
</xs:complexType>
<!-- Runtime configuration-->
<xs:group name="RunTimeConfiguration">
<xs:sequence>
<xs:element name="SignalBits" type="xs:int"/>
</xs:sequence>
</xs:group>
<xs:complexType name="RunTimeConfigurationType">
<xs:group ref="tns:RunTimeConfiguration"/>
</xs:complexType>
<!-- Runtime configuration-->
<xs:group name="GeneralConfiguration">
<xs:sequence>
<xs:element name="SignalLabel" type="xs:string"/>
<xs:element name="UnitMap" type="xs:int"/>
<xs:element name="Category" type="xs:string"/>
<xs:element name="Access" type="xs:string"/>
<xs:element name="Default" type="xs:double"/>
<xs:element name="FiltPas" type="xs:int"/>
<xs:element name="FiltAct" type="xs:int"/>
<xs:element name="Invert" type="xs:boolean"/>
<xs:element name="EncType" type="xs:string"/>
<xs:element name="MaxLog" type="xs:double"/>
<xs:element name="MaxPhys" type="xs:double"/>
<xs:element name="MaxPhysLimit" type="xs:double"/>
<xs:element name="MaxBitVal" type="xs:int"/>
<xs:element name="MinLog" type="xs:double"/>
<xs:element name="MinPhys" type="xs:double"/>
<xs:element name="MinPhysLimit" type="xs:double"/>
<xs:element name="MinBitVal" type="xs:int"/>
<xs:element name="SysfailReset" type="xs:boolean"/>
</xs:sequence>
</xs:group>
<xs:complexType name="GeneralConfigurationType">
<xs:group ref="tns:GeneralConfiguration"/>
</xs:complexType>
<!-- IO Signal types -->
<xs:simpleType name="SignalType">
<xs:restriction base="xs:string">
<xs:enumeration value="DI"/>
<xs:enumeration value="DO"/>
<xs:enumeration value="GI"/>
<xs:enumeration value="GO"/>
<xs:enumeration value="AI"/>
<xs:enumeration value="AO"/>
</xs:restriction>
</xs:simpleType>
<!-- data types with a link -->
<xs:complexType name="DoubleValueType">
<xs:sequence>
<xs:element name="Value" type="xs:double"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="IntValueType">
<xs:sequence>
<xs:element name="Value" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<!-- Signal value type -->
<xs:group name="SignalValue">
<xs:choice>
<xs:element name="Analog" type="tns:DoubleValueType"/>
<xs:element name="Digital" type="tns:IntValueType"/>
</xs:choice>
</xs:group>
<xs:complexType name="SignalValueType">
<xs:sequence>
<xs:element name="Time" type="xs:long"/>
<xs:group ref="tns:SignalValue"/>
<xs:element name="Quality" type="tns:QualityType"/>
</xs:sequence>
</xs:complexType>
<!-- Signal state -->
<xs:simpleType name="SignalStatesType">
<xs:restriction base="xs:string">
<xs:enumeration value="Blocked"/>
<xs:enumeration value="Unblocked"/>
<xs:enumeration value="Unknown"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="SignalStateType">
<xs:sequence>
<xs:element name="State" type="tns:SignalStatesType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="IOSignalCurrentValueType">
<xs:sequence>
<xs:element name="State" type="tns:SignalStatesType"/>
<xs:element name="PhysicalValue" type="tns:SignalValueType"/>
<xs:element name="LogicalValue" type="tns:SignalValueType"/>
</xs:sequence>
</xs:complexType>
<!-- The IOSignal type -->
<xs:complexType name="IOSignalType">
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:element name="Type" type="tns:SignalType"/>
<xs:element name="Unit" type="tns:LinkType"/>
<xs:element name="IOSignalCurrentValue" type="tns:IOSignalCurrentValueType"/>
<xs:element name="AccessLevels" type="tns:AccessLevelType"/>
<xs:element name="GeneralConfig" type="tns:GeneralConfigurationType"/>
<xs:element name="RunTimeConfig" type="tns:RunTimeConfigurationType"/>
</xs:sequence>
</xs:complexType>
<!-- The response -->
<xs:element name="IOSignal">
<xs:complexType>
<xs:sequence>
<xs:element name="Status" type="tns:StatusType"/>
<xs:element name="IOSignalItem" type="tns:IOSignalType"/>
</xs:sequence>
<xs:attribute name="UserDef" type="tns:UserdefType"/>
</xs:complexType>
</xs:element>
</xs:schema>
This is my xml:
<?xml version="1.0" encoding="UTF-8"?>
<tns:IOSignal xmlns:tns="http://www.example.org/iosystem"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/iosystem
file:///C:/util/xsde-3.1.0-i686-windows/examples/cxx/hybrid/hello/hello.xsd">
<tns:Status>
<tns:RetCode>10</tns:RetCode>
<tns:ErrStr>ErrStr1</tns:ErrStr>
</tns:Status>
<tns:IOSignalItem>
<tns:Name>DO1</tns:Name>
<tns:Type>DO</tns:Type>
<tns:Unit href="mlink"></tns:Unit>
<tns:IOSignalCurrentValue>
<tns:State>Unblocked</tns:State>
<tns:PhysicalValue>
<tns:Time>100</tns:Time>
<tns:Analog>
<tns:Value>19.1</tns:Value>
</tns:Analog>
<tns:Quality>Good</tns:Quality>
</tns:PhysicalValue>
<tns:LogicalValue>
<tns:Time>100</tns:Time>
<tns:Analog>
<tns:Value>17.1</tns:Value>
</tns:Analog>
<tns:Quality>Good</tns:Quality>
</tns:LogicalValue>
</tns:IOSignalCurrentValue>
<tns:AccessLevels>
<tns:AccessLevel>LocalAuto</tns:AccessLevel>
</tns:AccessLevels>
<tns:GeneralConfig>
<tns:SignalLabel>Lable</tns:SignalLabel>
<tns:UnitMap>10</tns:UnitMap>
<tns:Category>safety</tns:Category>
<tns:Access>Access</tns:Access>
<tns:Default>10</tns:Default>
<tns:FiltPas>11</tns:FiltPas>
<tns:FiltAct>12</tns:FiltAct>
<tns:Invert>true</tns:Invert>
<tns:EncType>enc</tns:EncType>
<tns:MaxLog>1001.1</tns:MaxLog>
<tns:MaxPhys>100.1</tns:MaxPhys>
<tns:MaxPhysLimit>3003.2</tns:MaxPhysLimit>
<tns:MaxBitVal>100</tns:MaxBitVal>
<tns:MinLog>1</tns:MinLog>
<tns:MinPhys>18.1</tns:MinPhys>
<tns:MinPhysLimit>19.1</tns:MinPhysLimit>
<tns:MinBitVal>2</tns:MinBitVal>
<tns:SysfailReset>true</tns:SysfailReset>
</tns:GeneralConfig>
<tns:RunTimeConfig>
<tns:SignalBits>10</tns:SignalBits>
</tns:RunTimeConfig>
</tns:IOSignalItem>
</tns:IOSignal>
The code:
IOSignal_paggr iosignalp;
xml_schema::document_pimpl doc_p (iosignalp.root_parser (),
iosignalp.root_name ());
iosignalp.pre ();
doc_p.parse (argv[1]); // Throw exception
/Kjell
_________________________________________________________________
Hotmail: Free, trusted and rich email service.
https://signup.live.com/signup.aspx?id=60969
More information about the xsde-users
mailing list