Bug 4914 - Unique Particle Constraint too strong in Xerces 1.4.3?
Summary: Unique Particle Constraint too strong in Xerces 1.4.3?
Status: NEW
Alias: None
Product: Xerces-J
Classification: Unclassified
Component: Schema-Structures (show other bugs)
Version: 1.4.3
Hardware: All All
: P3 minor
Target Milestone: ---
Assignee: Xerces-J Developers Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2001-11-16 02:38 UTC by Dr. Uwe Meyer-Gruhl
Modified: 2004-11-16 19:05 UTC (History)
1 user (show)



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dr. Uwe Meyer-Gruhl 2001-11-16 02:38:55 UTC
I have the following XML Schema (sorry that it's so long, but I stripped it down 
already!):

<?xml version = "1.0" encoding = "ISO-8859-1"?>
<!--Generated by XML Authority. Conforms to w3c 
http://www.w3.org/2001/XMLSchema-->
<xsd:schema xmlns = "http://www.congenio.de/schema/BankingRequest"
	 targetNamespace = "http://www.congenio.de/schema/BankingRequest"
	 xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
	 elementFormDefault = "qualified">


	<!-- Anfang der Include-Datei. -->

	<xsd:group name = "Freigabedaten">
		<xsd:annotation>
			<xsd:documentation>Beinhaltet zur Zeit nur die 
TAN</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name = "TAN" type = "TypTAN"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name = "Anmeldedaten">
		<xsd:annotation>
			<xsd:documentation>Beinhaltet alle Daten, die bei jedem 
Request mitgegeben werden. Entweder Sitzungs-ID als Surrogat der Anmeldung oder 
die eigentlichen Anmeldedaten. Diese Struktur könnte später ggf. noch mehrere 
Alternativen bekommen!</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element name = "Anmeldung" type = 
"TypAnmeldungsdaten"/>
			<xsd:element name = "Sitzungs-ID" type = "TypSitzung"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name = "Bezugskonto">
		<xsd:annotation>
			<xsd:documentation>Dies ist das fachliche Konto, mit dem 
die Operation durchgeführt werden soll.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name = "Kontonummer" type = 
"TypKontonummer"/>
			<xsd:element name = "Bankleitzahl" type = 
"TypBankleitzahl" minOccurs = "0"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name = "Auslandsempfaenger">
		<xsd:sequence>
			<xsd:element name = "A-Empfaengername" type = 
"TypAuslandsadresszeile" maxOccurs = "2"/>
			<xsd:element name = "A-Empfaengerstrasse" type = 
"TypAuslandsadresszeile"/>
			<xsd:element name = "A-Empfaengerort" type = 
"TypAuslandsadresszeile"/>
			<xsd:element name = "A-Empfaengerlandeskennung" type = 
"TypLandeskennung"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name = "Auslandsbankverbindung">
		<xsd:sequence>
			<xsd:element name = "Bankkonto" type = 
"TypAuslandskontonummer"/>
			<xsd:element name = "Bankcode" type = 
"TypAuslandsbankleitzahl"/>
			<xsd:element name = "Bankname" type = 
"TypAuslandsadresszeile" maxOccurs = "2"/>
			<xsd:element name = "Bankstrasse" type = 
"TypAuslandsadresszeile"/>
			<xsd:element name = "Bankort" type = 
"TypAuslandsadresszeile"/>
			<xsd:element name = "Banklandeskennung" type = 
"TypLandeskennung" minOccurs = "0"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name = "Auslandsanweisung">
		<xsd:sequence>
			<xsd:element name = "Kostenart" type = "TypKostenart"/>
			<xsd:element name = "Betrag" type = 
"TypWaehrungsbetrag"/>
			<xsd:element name = "Zielwaehrung" type = 
"TypWaehrungskennzeichen"/>
			<xsd:element name = "Verwendungszweck" type = 
"TypAuslandsadresszeile" minOccurs = "0" maxOccurs = "4"/>
			<xsd:element name = "Termin" type = "TypDatum" minOccurs 
= "0"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name = "Auslandsueberweisungsdaten">
		<xsd:annotation>
			<xsd:documentation>Alle fachlichen Daten für eine 
Auslandsüberweisung</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:group ref = "Auslandsempfaenger"/>
			<xsd:group ref = "Auslandsbankverbindung"/>
			<xsd:group ref = "Auslandsanweisung"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name = "Auslandsanweisungsdaten">
		<xsd:annotation>
			<xsd:documentation>Alle fachlichen Daten für eine 
Auslandsanweisung</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:group ref = "Auslandsempfaenger"/>
			<xsd:group ref = "Auslandsanweisung"/>
		</xsd:sequence>
	</xsd:group>

	<xsd:complexType name = "TypAnmeldungsdaten">
		<xsd:sequence>
			<xsd:element name = "Loginkonto" type = 
"TypKontonummer"/>
			<xsd:element name = "Bankleitzahl" type = 
"TypBankleitzahl" minOccurs = "0"/>
			<xsd:element name = "PIN" type = "TypPIN"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- Wiederverwendbare Gruppen von Elementen -->

	<xsd:simpleType name = "TypUserAgent">
		<xsd:annotation>
			<xsd:documentation>Dieses Feld identifiziert die 
Client-Software (auch Version)</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "100"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypSitzung">
		<xsd:annotation>
			<xsd:documentation>Dieses Feld wird ggf. bei der 
Anmeldung vom Host zum Client gereicht und muß genau dann bei jedem Request 
mitgegeben werden.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "1000"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypErgebnis">
		<xsd:restriction base = "xsd:string">
			<xsd:enumeration value = "RC_OK"/>
			<xsd:enumeration value = "RC_SYSTEMFEHLER"/>
			<xsd:enumeration value = "RC_ANDERER_FEHLER"/>
			<xsd:enumeration value = "RC_GESPERRT"/>
			<xsd:enumeration value = "RC_PIN_FALSCH"/>
			<xsd:enumeration value = "RC_TAN_FALSCH"/>
			<xsd:enumeration value = "RC_LETZTE_TAN"/>
			<xsd:enumeration value = "RC_NICHT_ANWENDBAR"/>
			<xsd:enumeration value = "RC_LIMIT"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypMeldungstext">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "1000"/>
			<xsd:whiteSpace value = "preserve"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypKontonummer">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "10"/>
			<xsd:minLength value = "1"/>
			<xsd:pattern value = "[0-9]*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypBankleitzahl">
		<xsd:restriction base = "xsd:string">
			<xsd:length value = "8"/>
			<xsd:pattern value = "[0-9]*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypPIN">
		<xsd:restriction base = "xsd:string">
			<xsd:length value = "5"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypTAN">
		<xsd:restriction base = "xsd:string">
			<xsd:length value = "6"/>
			<xsd:pattern value = "[0-9]*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypDTAString">
		<xsd:annotation>
			<xsd:documentation>DTA-String mit beschränktem 
Zeichensatz.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base = "xsd:string">
			<xsd:pattern value = "[ÄÖÜäöüßA-Za-z0-9 
\.,\-/\+\*$%&amp;]*"/>
			<xsd:whiteSpace value = "preserve"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypAuslandsadresszeile">
		<xsd:restriction base = "TypDTAString">
			<xsd:maxLength value = "35"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypEmpfaengername">
		<xsd:restriction base = "TypDTAString">
			<xsd:maxLength value = "27"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypAuslandskontonummer">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "35"/>
			<xsd:minLength value = "1"/>
			<xsd:pattern value = "[0-9]*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypBetrag">
		<!--					<xsd:totalDigits value = 
"15"/>
					<xsd:fractionDigits value = "2"/>
-->
		<xsd:list itemType = "xsd:decimal"/>
	</xsd:simpleType>
	<xsd:simpleType name = "TypWaehrungskennzeichen">
		<xsd:annotation>
			<xsd:documentation>ISO 
Währungskennzeichen</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base = "xsd:string">
			<xsd:length value = "3"/>
			<xsd:pattern value = "[A-Z]{3}"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypDatum">
		<xsd:annotation>
			<xsd:documentation>Datum</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base = "xsd:date"/>
	</xsd:simpleType>
	<xsd:simpleType name = "TypUmsatzzeile">
		<xsd:annotation>
			<xsd:documentation>Umsatzzeile laut MT940, Feld :86:
Hier keine Einschränkung des Zeichensatzes (also nicht TypDTAString),
da diese Daten von anderen Banken kommen und damit etwaigen Einschränkungen 
nicht unterliegen.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "27"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypZweckzeile">
		<xsd:annotation>
			
<xsd:documentation>Verwendungszweckzeile</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base = "TypDTAString">
			<xsd:maxLength value = "27"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypAuszugnummer">
		<xsd:restriction base = "xsd:string">
			<xsd:length value = "9"/>
			<xsd:pattern value = "[0-9]{5}/[0-9]{3}"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypZinssatz">
		<xsd:annotation>
			<xsd:documentation>Ein Zinssatz, immer >= 
0</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base = "xsd:decimal">
			<xsd:minInclusive value = "0"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypKontoinhaber">
		<xsd:restriction base = "TypDTAString">
			<xsd:maxLength value = "35"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypKontobezeichnung">
		<xsd:restriction base = "TypDTAString">
			<xsd:maxLength value = "35"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypLandeskennung">
		<xsd:restriction base = "xsd:string">
			<xsd:length value = "2"/>
			<xsd:pattern value = "[A-Z]*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypAuslandsbankleitzahl">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "11"/>
			<xsd:pattern value = "[0-9]*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypKostenart">
		<xsd:restriction base = "xsd:string">
			<xsd:enumeration value = "OUR"/>
			<xsd:enumeration value = "BEN"/>
			<xsd:enumeration value = "SHARE"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypAuftragsnummer">
		<xsd:annotation>
			<xsd:documentation>ISN der Postbank</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base = "xsd:string">
			<xsd:length value = "8"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypDauerauftragsID">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "100"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypDatumUhrzeit">
		<xsd:restriction base = "xsd:dateTime"/>
	</xsd:simpleType>
	<xsd:simpleType name = "TypVorgangsart">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "20"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypBearbeitungskennzeichen">
		<xsd:restriction base = "xsd:string">
			<xsd:enumeration value = "widerrufen"/>
			<xsd:enumeration value = "in Bearbeitung"/>
			<xsd:enumeration value = "liegt vor"/>
			<xsd:enumeration value = "unbekannt"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypWochentag">
		<xsd:restriction base = "xsd:string">
			<xsd:enumeration value = "Mo"/>
			<xsd:enumeration value = "Di"/>
			<xsd:enumeration value = "Mi"/>
			<xsd:enumeration value = "Do"/>
			<xsd:enumeration value = "Fr"/>
			<xsd:enumeration value = "Sa"/>
			<xsd:enumeration value = "So"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypMonatsRhythmusWert">
		<xsd:restriction base = "xsd:integer">
			<xsd:enumeration value = "1"/>
			<xsd:enumeration value = "2"/>
			<xsd:enumeration value = "3"/>
			<xsd:enumeration value = "4"/>
			<xsd:enumeration value = "6"/>
			<xsd:enumeration value = "12"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypWochenRhythmusWert">
		<xsd:restriction base = "xsd:integer">
			<xsd:maxInclusive value = "1"/>
			<xsd:minInclusive value = "1"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypTagesRhythmusWert">
		<xsd:restriction base = "xsd:integer">
			<xsd:maxInclusive value = "1"/>
			<xsd:minInclusive value = "1"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypDauerauftragsnummer">
		<xsd:annotation>
			<xsd:documentation>vierstellige Auftragsnummer 0000 = 
"Neu"
</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base = "xsd:string">
			<xsd:length value = "4"/>
			<xsd:pattern value = "[0-9]*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypDauerauftragsart">
		<xsd:annotation>
			<xsd:documentation>Dauerauftragsart, "13" kann nicht 
bearbeitet werden.
</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base = "xsd:string">
			<xsd:length value = "2"/>
			<xsd:pattern value = "[0-9]*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypKundennummer">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "10"/>
			<xsd:minLength value = "1"/>
			<xsd:pattern value = "[0-9]*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypOBG">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "4"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypOrganschluessel">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "2"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypKurzname">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "24"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypGAB">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "4"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypBonitaet">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "47"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypChar">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "1"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypDatumString">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "10"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypString2">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "2"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypString3">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "3"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypString4">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "4"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypString5">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "5"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypString9">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "9"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypString10">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "10"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypString15">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "15"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypString20">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "20"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypString27">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "27"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypString54">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "54"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypString80">
		<xsd:restriction base = "xsd:string">
			<xsd:maxLength value = "80"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name = "TypAusfuehrungstag">
		<xsd:restriction base = "xsd:integer">
			<xsd:maxInclusive value = "99"/>
			<xsd:minInclusive value = "1"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name = "TypMeldung">
		<xsd:simpleContent>
			<xsd:extension base = "TypMeldungstext">
				<xsd:attribute name = "Nummer" use = "optional" 
type = "TypString10"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name = "TypWaehrungsbetrag">
		<xsd:annotation>
			<xsd:documentation>Betrag inklusive Währungskennzeichen 
als Attribut</xsd:documentation>
		</xsd:annotation>
		<xsd:simpleContent>
			<xsd:extension base = "TypBetrag">
				<xsd:attribute name = "Waehrung" use = 
"required" type = "TypWaehrungskennzeichen"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name = "TypUmsatztext">
		<xsd:annotation>
			<xsd:documentation>Eigentlich sollte man die Textzeilen 
in einem umgebenden Element "Text" kapseln 
(&lt;Text>&lt;Zeile>&lt;/Zeile>&lt;Zeile>&lt;/Zeile>&lt;/Text>), aber MSXML 4 
kann das nicht...</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name = "Zeile" type = "TypUmsatzzeile" 
minOccurs = "0" maxOccurs = "14"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name = "TypZweck">
		<xsd:annotation>
			<xsd:documentation>Verwendungszweck (eventuell nur zwei 
Zeilen???)</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name = "Zeile" type = "TypZweckzeile" 
minOccurs = "0" maxOccurs = "4"/>
		</xsd:sequence>
	</xsd:complexType>



	<!-- AUSLANDSUEBERWEISUNG -->

	<xsd:complexType name = "TypAuslandsueberweisungsAnforderung">
		<xsd:annotation>
			<xsd:documentation>Dieser Request macht eine 
Auslandsüberweisung</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:sequence minOccurs = "0">
				<xsd:group ref = "Bezugskonto"/>
			</xsd:sequence>
			<xsd:group ref = "Auslandsueberweisungsdaten"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- AUSLANDSSCHECK -->


	<!-- AUSLANDSBARAUSZAHLUNG -->

	<xsd:complexType name = "TypAuslandsanweisungAnforderung">
		<xsd:annotation>
			<xsd:documentation>Dieser Request macht einen 
Auslandsscheck bzw. eine Auslandsbarauszahlung</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:sequence minOccurs = "0">
				<xsd:group ref = "Bezugskonto"/>
			</xsd:sequence>
			<xsd:group ref = "Auslandsanweisungsdaten"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- Definition der Anforderung -->

	<xsd:element name = "ANFORDERUNG" type = "TypAnforderung"/>
	<xsd:complexType name = "TypAnforderung">
		<!--
				<xsd:element name = "AUSLANDSWAEHRUNGEN" type = 
"TypAuslandswaehrungAnforderung"/>
-->
		<xsd:sequence>
			<xsd:choice>
				<xsd:element name = "AUSLANDSUEBERWEISUNG" type 
= "TypAuslandsueberweisungsAnforderung"/>
				<xsd:element name = "AUSLANDSSCHECK" type = 
"TypAuslandsanweisungAnforderung"/>
				<xsd:element name = "AUSLANDSBARAUSZAHLUNG" type 
= "TypAuslandsanweisungAnforderung"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>


Applied to the following XML instance:

<ANFORDERUNG xmlns="http://www.congenio.de/schema/BankingRequest">
    <AUSLANDSUEBERWEISUNG>

        <A-Empfaengername>Frank Hoefer</A-Empfaengername>
        <A-Empfaengername>&amp; Soehne</A-Empfaengername>
        <A-Empfaengerstrasse>Dumpfbackengasse 13</A-Empfaengerstrasse>
        <A-Empfaengerort>Timbuktu</A-Empfaengerort>
        <A-Empfaengerlandeskennung>AT</A-Empfaengerlandeskennung>

        <Bankkonto>29857890357</Bankkonto>
        <Bankcode>01234567890</Bankcode>
        <Bankname>Le Banko</Bankname>
        <Bankname>est fait</Bankname>
        <Bankstrasse>Herzoginnenallee 17</Bankstrasse>
        <Bankort>Zuerich</Bankort>
        <Banklandeskennung>AT</Banklandeskennung>

        <Kostenart>SHARE</Kostenart>
        <Betrag Waehrung="USD">13.00</Betrag>
        <Zielwaehrung>USD</Zielwaehrung>
        <Verwendungszweck>1</Verwendungszweck>
        <Termin>2001-10-30</Termin>

    </AUSLANDSUEBERWEISUNG>
</ANFORDERUNG>


Xerces 1.4.3 and 1.4.4 throw an error: 'Error: cos-nonambig: 
(http://www.congenio.de/schema/BankingRequest,Verwendungszweck) and 
(http://www.congenio.de/schema/BankingRequest,Verwendungszweck) violate the 
"Unique Particle Attribution" rule.'

This applies when the feature 
"http://apache.org/xml/features/validation/schema-full-checking" is true.

Interestingly, the maxOccurs for the particle "Verwendungszweck" can be set to 1 
and all is well. I doubt that the Unique Particle Attribution rule is broken by 
this. I see no neccessary lookahead or ambiguity involved with this example.


Kind regards,


Dr. Uwe Meyer-Gruhl