Message:
The following issue has been resolved as INVALID.
Resolver: Sandy Gao
Date: Mon, 4 Oct 2004 1:19 PM
The type in trouble is the anonymous type of the "VoterIdentification" element. The
last element in this type is called "ID", which has an anonymous type derived from
xs:token. In the base type (VoterIdentificationStructure), there is also an "ID"
element with an anonymous type derived from xs:token. Note that the 2 types derived
from xs:token are *not* the same type, and they don't have any derivation relation
between them, which is why the parser's compalaining about the restriction. Making the
simple type a global one and referring to it from both "ID" elements will solve the
problem.
---------------------------------------------------------------------
View the issue:
http://issues.apache.org/jira/browse/XERCESJ-1014
Here is an overview of the issue:
---------------------------------------------------------------------
Key: XERCESJ-1014
Summary: Error handling restriction of complex type
Type: Bug
Status: Resolved
Priority: Major
Resolution: INVALID
Project: Xerces2-J
Versions:
2.5.0
Assignee:
Reporter: Paul Spencer
Created: Fri, 1 Oct 2004 2:22 AM
Updated: Mon, 4 Oct 2004 1:19 PM
Environment: Win 2k using the Xerces option in rsXMLtest.
Description:
In the OASIS Election Markup Language (EML), the IncomingGenericCommunicationStructure
data type using a restriction of the VoterIdentificationStructure. The restriction is
to set the maxOccurs of an optional xs:choice to zero. This causes the error messages
"rcase-Recurse.2: There is not a complete functional mapping between the particles."
and "The particle of the type is not a valid restriction of the particle of the base."
I don't think either of these messages is correct. The schemas look fine using XSV,
MSV, MSXML4 SP2 and other validators.
The text below is a shortened version of the schema that shows the error. If I
simplify it right down, it parses OK, so this is quite long.
I am the editor of the EML schemas, which are currently waiting to be released.
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 4 U (http://www.xmlspy.com) by Paul Spencer
(Boynings Consulting) -->
<xs:schema targetNamespace="urn:oasis:names:tc:evs:schema:eml"
elementFormDefault="qualified" attributeFormDefault="unqualified" version="4.0"
id="eml-core" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ts="urn:oasis:names:tc:evs:schema:eml:ts"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns="urn:oasis:names:tc:evs:schema:eml">
<xs:complexType name="temp1">
<xs:sequence>
<xs:element name="line" type="xs:token" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="ContactDetails" type="ContactDetailsStructure"/>
<xs:element name="ContestIdentifier" type="ContestIdentifierStructure"/>
<xs:element name="ElectionIdentifier" type="ElectionIdentifierStructure"/>
<xs:element name="ElectionStatement" type="MessagesStructure"/>
<xs:element name="EventIdentifier" type="EventIdentifierStructure"/>
<xs:element name="EventQualifier" type="EventQualifierStructure"/>
<xs:element name="MessageType" type="MessageTypeType"/>
<xs:element name="PersonName" type="xs:string"/>
<xs:element name="PollingDistrict" type="PollingDistrictStructure"/>
<xs:element name="PollingPlace" type="PollingPlaceStructure"/>
<xs:element name="PreviousElectoralAddress" type="temp1"/>
<xs:element name="ResponsibleOfficer" type="ResponsibleOfficerStructure"/>
<xs:element name="VoterName" type="xs:string"/>
<xs:element name="VotingChannel" type="VotingChannelType"/>
<xs:element name="VotingMethod" type="VotingMethodType"/>
<xs:element name="VToken" type="VTokenStructure"/>
<xs:element name="VTokenQualified" type="VTokenQualifiedStructure"/>
<xs:complexType name="ContactDetailsStructure">
<xs:sequence>
<xs:element name="MailingAddress" type="temp1" minOccurs="0"/>
<xs:element name="Email" type="EmailStructure" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element name="Telephone" type="TelephoneStructure"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Fax" type="TelephoneStructure" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element name="PreferredContact" type="xs:string"
minOccurs="0"/>
</xs:sequence>
<xs:attribute name="DisplayOrder" type="xs:positiveInteger"
use="optional"/>
</xs:complexType>
<xs:complexType name="ContestIdentifierStructure">
<xs:sequence>
<xs:element name="ContestName" type="xs:token" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="DisplayIdMand"/>
<xs:attribute name="ShortCode" type="ShortCodeType" use="optional"/>
</xs:complexType>
<xs:complexType name="ElectionGroupStructure">
<xs:simpleContent>
<xs:extension base="xs:token">
<xs:attribute name="Id" type="xs:token"
use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="ElectionIdentifierStructure">
<xs:sequence>
<xs:element name="ElectionName" type="xs:token" minOccurs="0"/>
<xs:element name="ElectionGroup" type="ElectionGroupStructure"
minOccurs="0"/>
<xs:element name="ElectionCategory" type="xs:NMTOKEN"
minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="DisplayIdMand"/>
<xs:attribute name="ShortCode" type="ShortCodeType" use="optional"/>
</xs:complexType>
<xs:complexType name="EmailStructure">
<xs:simpleContent>
<xs:extension base="EmailType">
<xs:attribute name="Preferred" type="YesNoType"
use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="EventIdentifierStructure">
<xs:sequence>
<xs:element name="EventName" type="xs:token" minOccurs="0"/>
<xs:element name="EventQualifier"
type="EventQualifierStructure" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="DisplayIdOpt"/>
</xs:complexType>
<xs:complexType name="EventQualifierStructure">
<xs:simpleContent>
<xs:extension base="xs:token">
<xs:attribute name="Id" type="xs:NMTOKEN"
use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="IncomingGenericCommunicationStructure">
<xs:sequence>
<xs:element name="Voter">
<xs:complexType>
<xs:sequence>
<xs:element name="VoterIdentification">
<xs:annotation>
<xs:documentation>Restriction is to prohibit VToken and
VTokenQualified</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="VoterIdentificationStructure">
<xs:sequence>
<xs:element ref="VoterName" minOccurs="0"/>
<xs:element name="ElectoralAddress" type="temp1" minOccurs="0">
<xs:annotation>
<xs:documentation>This is the address that gives the voter the right
to vote</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="PreviousElectoralAddress" type="temp1" minOccurs="0"/>
<xs:choice minOccurs="0" maxOccurs="0">
<xs:element ref="VToken"/>
<xs:element ref="VTokenQualified"/>
</xs:choice>
<xs:element name="Id" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:token">
<xs:attribute name="Type" type="xs:token"
use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="VoterContact"
type="ContactDetailsStructure"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Recipient"
type="ResponsibleOfficerStructure" minOccurs="0"/>
<xs:element ref="EventIdentifier" minOccurs="0"/>
<xs:element ref="ElectionIdentifier" minOccurs="0"/>
<xs:element ref="ContestIdentifier" minOccurs="0"/>
<xs:element name="Messages" type="MessagesStructure"
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MessagesStructure">
<xs:sequence>
<xs:element name="Message" maxOccurs="unbounded">
<xs:complexType mixed="true">
<xs:sequence>
<xs:any namespace="##other"
processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Format" type="xs:NMTOKEN"
use="optional"/>
<xs:attribute name="Type" type="xs:token"
use="optional"/>
<xs:attribute name="Lang" type="LanguageType"
use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="DisplayOrder" type="xs:positiveInteger"
use="optional"/>
</xs:complexType>
<xs:complexType name="PollingDistrictStructure">
<xs:sequence>
<xs:element name="Name" minOccurs="0"/>
<xs:element name="Association" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="Type" type="xs:token"
use="required"/>
<xs:attributeGroup ref="DisplayIdOpt"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attributeGroup ref="DisplayIdOpt"/>
</xs:complexType>
<xs:complexType name="PollingPlaceStructure">
<xs:sequence>
<xs:choice>
<xs:element name="PhysicalLocation">
<xs:complexType>
<xs:sequence>
<xs:element name="Address"
type="temp1"/>
<xs:element
name="PollingStation" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:token">
<xs:attribute name="Id" type="xs:NMTOKEN" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Id"
type="xs:NMTOKEN" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="PostalLocation">
<xs:complexType>
<xs:complexContent>
<xs:extension base="temp1">
<xs:attributeGroup
ref="DisplayIdOpt"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="ElectronicLocation">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:token">
<xs:attributeGroup
ref="DisplayIdOpt"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="OtherLocation">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup
ref="DisplayIdOpt"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:element name="TimeAvailable" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Start"
type="xs:dateTime"/>
<xs:element name="End"
type="xs:dateTime"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Channel" type="VotingChannelType" use="required"/>
<xs:attribute name="DisplayOrder" type="xs:positiveInteger"
use="optional"/>
</xs:complexType>
<xs:complexType name="ResponsibleOfficerStructure">
<xs:sequence>
<xs:choice>
<xs:sequence>
<xs:element name="Responsibility"
type="xs:token"/>
<xs:element name="Name" type="xs:string"
minOccurs="0"/>
</xs:sequence>
<xs:element name="Name" type="xs:string"/>
</xs:choice>
<xs:element name="Contact" type="ContactDetailsStructure"
minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Id" type="xs:NMTOKEN" use="optional"/>
</xs:complexType>
<xs:complexType name="TelephoneStructure">
<xs:sequence>
<xs:element name="Number" type="TelephoneNumberType"/>
<xs:element name="Extension" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:maxLength value="6"/>
<xs:minLength value="1"/>
<xs:pattern value="[0-9]{1,6}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
<xs:attribute name="Preferred" type="YesNoType" use="optional"/>
<xs:attribute name="Mobile" type="YesNoType" use="optional"/>
</xs:complexType>
<xs:complexType name="VoterIdentificationStructure">
<xs:sequence>
<xs:element ref="VoterName" minOccurs="0"/>
<xs:element name="ElectoralAddress" type="temp1" minOccurs="0">
<xs:annotation>
<xs:documentation>This is the address that
gives the voter the right to vote</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="PreviousElectoralAddress" type="temp1"
minOccurs="0"/>
<xs:choice minOccurs="0">
<xs:element ref="VToken"/>
<xs:element ref="VTokenQualified"/>
</xs:choice>
<xs:element name="Id" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:token">
<xs:attribute name="Type"
type="xs:token" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="DisplayOrder" type="xs:positiveInteger"
use="optional"/>
<xs:attribute name="Id" type="xs:NMTOKEN" use="optional"/>
</xs:complexType>
<xs:complexType name="VTokenStructure">
<xs:sequence>
<xs:element name="Component" maxOccurs="unbounded">
<xs:complexType mixed="true">
<xs:sequence>
<xs:any namespace="##other"
minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Type" type="xs:NMTOKEN"
use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="VTokenQualifiedStructure">
<xs:complexContent>
<xs:extension base="VTokenStructure">
<xs:sequence>
<xs:element name="Reason">
<xs:complexType>
<xs:simpleContent>
<xs:extension
base="xs:token">
<xs:attribute
name="Type" type="xs:token" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element ref="VToken" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="DateType">
<xs:union memberTypes="xs:date xs:dateTime"/>
</xs:simpleType>
<xs:simpleType name="EmailType">
<xs:restriction base="xs:token">
<xs:maxLength value="129"/>
<xs:pattern value="[EMAIL PROTECTED]@[EMAIL PROTECTED]"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="GenderType">
<xs:restriction base="xs:token">
<xs:enumeration value="male"/>
<xs:enumeration value="female"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="LanguageType">
<xs:restriction base="xs:language"/>
</xs:simpleType>
<xs:simpleType name="MessageTypeType">
<xs:restriction base="xs:NMTOKEN"/>
</xs:simpleType>
<xs:simpleType name="ShortCodeType">
<xs:restriction base="xs:NMTOKEN"/>
</xs:simpleType>
<xs:simpleType name="TelephoneNumberType">
<xs:restriction base="xs:token">
<xs:maxLength value="35"/>
<xs:minLength value="1"/>
<xs:pattern value="\+?[0-9\(\)\-\s]{1,35}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="VotingChannelType">
<xs:restriction base="xs:token">
<xs:enumeration value="SMS"/>
<xs:enumeration value="WAP"/>
<xs:enumeration value="digitalTV"/>
<xs:enumeration value="internet"/>
<xs:enumeration value="kiosk"/>
<xs:enumeration value="polling"/>
<xs:enumeration value="postal"/>
<xs:enumeration value="telephone"/>
<xs:enumeration value="other"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="VotingMethodType">
<xs:restriction base="xs:token">
<xs:enumeration value="AMS"/>
<xs:enumeration value="FPP"/>
<xs:enumeration value="OPV"/>
<xs:enumeration value="SPV"/>
<xs:enumeration value="STV"/>
<xs:enumeration value="approval"/>
<xs:enumeration value="block"/>
<xs:enumeration value="partylist"/>
<xs:enumeration value="supplementaryvote"/>
<xs:enumeration value="other"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="VotingValueType">
<xs:annotation>
<xs:documentation>The weight or preference applied to a
selection</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>
<xs:simpleType name="YesNoType">
<xs:restriction base="xs:token">
<xs:enumeration value="no"/>
<xs:enumeration value="yes"/>
</xs:restriction>
</xs:simpleType>
<xs:attributeGroup name="DisplayIdMand">
<xs:attribute name="Id" type="xs:NMTOKEN" use="required"/>
<xs:attribute name="DisplayOrder" type="xs:positiveInteger"
use="optional"/>
</xs:attributeGroup>
<xs:attributeGroup name="DisplayIdOpt">
<xs:attribute name="Id" type="xs:NMTOKEN" use="optional"/>
<xs:attribute name="DisplayOrder" type="xs:positiveInteger"
use="optional"/>
</xs:attributeGroup>
</xs:schema>
---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]