<?xml version="1.0" encoding="UTF-8"?>

<xs:schema
	xmlns="http://www.bundesbank.de/xmw/2025/AUSWIB1M"
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://www.bundesbank.de/xmw/2025/AUSWIB1M"
	elementFormDefault="qualified"
	attributeFormDefault="unqualified">

	
	<xs:simpleType name="text">
		<xs:annotation>
			<xs:documentation>Beliebiger Text - Erlaubt sind alle normativen Zeichen nach DIN 91379</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="collapse"/>
			<xs:minLength value="1"/>
			<xs:maxLength value="255"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="code">
		<xs:annotation>
			<xs:documentation>Code für Hausnr., Postfach etc.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="\p{IsBasicLatin}*" />
			<xs:minLength value="1"/>
			<xs:maxLength value="50"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="code-token">
		<xs:annotation>
			<xs:documentation>Token für Nutzerkennung, IDs usw.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="code">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="\S*" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="report-id">
		<xs:annotation>
			<xs:documentation>Meldungs-IDs</xs:documentation>
		</xs:annotation>
		<xs:restriction base="code">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="[A-Za-z0-9-]+" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="numeric-hex-id">
		<xs:annotation>
			<xs:documentation>Positions-IDs</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:ID">
			<xs:whiteSpace value="collapse"/>
			<xs:pattern value="P-[A-Fa-f0-9-]+" />
			<xs:maxLength value="50"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="telephone">
		<xs:annotation>
			<xs:documentation>Telefonnummer</xs:documentation>
		</xs:annotation>
		<xs:restriction base="code">
			<xs:pattern value="([0-9]|\s|/|\+|-|\(|\)){0,30}" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="email">
		<xs:annotation>
			<xs:documentation>E-Mail-Adresse</xs:documentation>
		</xs:annotation>
		<xs:restriction base="text">
			<xs:pattern value="(\S)+@(\S)+\.(\S)+" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="boolean">
		<xs:annotation>
			<xs:documentation>Ja / Nein</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="ja" />
			<xs:enumeration value="nein" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="date">
		<xs:annotation>
			<xs:documentation>Tag</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:date">
			<xs:pattern value="20[0-9]{2}-[0-9]{2}-[0-9]{2}" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="month">
		<xs:annotation>
			<xs:documentation>Monat</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:gYearMonth">
			<xs:pattern value="20[0-9]{2}-[0-9]{2}" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="quarter">
		<xs:annotation>
			<xs:documentation>Quartal</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:pattern value="20[0-9]{2}-Q[1-4]" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="year">
		<xs:annotation>
			<xs:documentation>Jahr</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:gYear">
			<xs:pattern value="20[0-9]{2}" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="meldenummer">
		<xs:annotation>
			<xs:documentation>Von der Bundesbank vergebene Meldenummer</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:pattern value="[0-9]{8}"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="plz-de">
		<xs:annotation>
			<xs:documentation>Postleitzahl (Deutschland)</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:pattern value="[0-9]{5}"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="land">
		<xs:annotation>
			<xs:documentation>Land gemäß ISO 3166 und Länderverzeichnis</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:pattern value="([0-9]|[A-Z]){2}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="waehrung">
		<xs:annotation>
			<xs:documentation>Währung gemäß ISO 4217 und Währungsverzeichnis</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:pattern value="[A-Z]{3}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="kennzahl">
		<xs:annotation>
			<xs:documentation>Kennzahl</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:pattern value="[0-9]{3}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="kapitelnr">
		<xs:annotation>
			<xs:documentation>Kapitelnummer</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:pattern value="[0-9]{2}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="richtung">
		<xs:annotation>
			<xs:documentation>Richtung</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="eingehend" />
			<xs:enumeration value="ausgehend" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="bestandsart">
		<xs:annotation>
			<xs:documentation>Bestandsart</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="Forderung" />
			<xs:enumeration value="Verbindlichkeit" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="isin">
		<xs:annotation>
			<xs:documentation>ISIN</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:pattern value="([A-Z0-9]){12}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="stueckzahl">
		<xs:annotation>
			<xs:documentation>Stückzahl</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:decimal">
			<xs:minExclusive value="0"/>
			<xs:maxExclusive value="1000000000000"/>
			<xs:pattern value="(0|[1-9][0-9]*)(.[0-9])?[0-9]?" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="betrag">
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="1" />
			<xs:maxInclusive value="999999999999" />
			<xs:pattern value="[1-9][0-9]*" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:complexType name="betrag-tsd-euro">
		<xs:annotation>
			<xs:documentation>Betrag in Tsd Euro</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="betrag">
				<xs:attribute name="einheit" fixed="Tsd Euro" use="required" />
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="steuer">
		<xs:sequence>
			<xs:element name="TEST" fixed="" minOccurs="0" />
		</xs:sequence>
	</xs:complexType>
	
	<xs:group name="melder">
		<xs:sequence>
			<xs:element name="MELDENUMMER" type="meldenummer" />
			<xs:choice>
				<xs:sequence>
					<xs:element name="NAME" type="text" />
				</xs:sequence>
				<xs:sequence>
					<xs:element name="ANREDE" type="text" minOccurs="0"/>
					<xs:element name="VORNAME" type="text" />
					<xs:element name="NACHNAME" type="text" />
				</xs:sequence>
			</xs:choice>
		</xs:sequence>
	</xs:group>
	
	<xs:complexType name="meldepflichtiger">
		<xs:sequence>
			<xs:group ref="melder" />
			<xs:element name="PLZ" type="plz-de" />
			<xs:element name="ORT" type="text" />
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="einreicher">
		<xs:sequence>
			<xs:group ref="melder" />
			<xs:choice>
				<xs:sequence>
					<xs:element name="PLZ" type="plz-de" />
					<xs:element name="ORT" type="text" />
				</xs:sequence>
				<xs:sequence>
					<xs:element name="PLZ-AUSLAND" type="code" />
					<xs:element name="ORT" type="text" />
					<xs:element name="LAND" type="land" />
				</xs:sequence>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="ansprechpartner">
		<xs:sequence>
			<xs:element name="NUTZERKENNUNG" type="code-token" minOccurs="0"/>
			<xs:element name="ANREDE" type="text" minOccurs="0"/>
			<xs:element name="VORNAME" type="text" />
			<xs:element name="NACHNAME" type="text" />
			<xs:element name="E-MAIL" type="email" />
			<xs:element name="TELEFON" type="telephone" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	
	<xs:group name="meldung-kopf-basis">
		<xs:sequence>
			<xs:element name="ID" type="report-id" minOccurs="0" />
			<xs:element name="VORGAENGER-ID" type="report-id" minOccurs="0" />
			<xs:element name="ZEITSTEMPEL" type="xs:dateTime" />
			<xs:element name="STEUERANWEISUNGEN" type="steuer" minOccurs="0" />
		</xs:sequence>
	</xs:group>

	<xs:group name="meldung-kopf-stammdaten">
		<xs:sequence>
			<xs:element name="MELDEPFLICHTIGER" type="meldepflichtiger" />
			<xs:element name="EINREICHER" type="einreicher" />
			<xs:element name="EINREICHER-PERSON" type="ansprechpartner" />
			<xs:element name="ANSPRECHPARTNER" type="ansprechpartner" minOccurs="0" />
		</xs:sequence>
	</xs:group>

	<xs:simpleType name="beteiligungsverhaeltnis">
		<xs:annotation>
			<xs:documentation>Beteiligungsverhältnis</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="Mutter" />
			<xs:enumeration value="Tochter" />
			<xs:enumeration value="Schwester" />
			<xs:enumeration value="Sonstige" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="fristigkeit-finanz">
		<xs:annotation>
			<xs:documentation>Fristigkeit bei Finanzbeziehungen</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="bis zu 1 Jahr" />
			<xs:enumeration value="mehr als 1 Jahr" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="fristigkeit-waren-dienstleistungen">
		<xs:annotation>
			<xs:documentation>Fristigkeit bei Waren und Dienstleistungen</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="bis zu 1 Jahr" />
			<xs:enumeration value="mehr als 1 Jahr" />
			<xs:enumeration value="Anzahlung" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:complexType name="position-finanz-banken">
		<xs:sequence>
			<xs:element name="BESTANDSART" type="bestandsart" />
			<xs:element name="FRISTIGKEIT" type="fristigkeit-finanz" />
			<xs:element name="LAND" type="land" />
			<xs:element name="WAEHRUNG" type="waehrung" />
			<xs:element name="BETRAG" type="betrag-tsd-euro" />
		</xs:sequence>
		<xs:attribute name="id" type="numeric-hex-id" />
	</xs:complexType>
	
	<xs:complexType name="positionen-finanz-banken">
		<xs:sequence>
			<xs:element name="POSITION" type="position-finanz-banken" maxOccurs="100000" />
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="position-finanz-nichtbanken">
		<xs:sequence>
			<xs:element name="BESTANDSART" type="bestandsart" />
			<xs:element name="BETEILIGUNGSVERHAELTNIS" type="beteiligungsverhaeltnis" />
			<xs:element name="FRISTIGKEIT" type="fristigkeit-finanz" />
			<xs:element name="LAND" type="land" />
			<xs:element name="WAEHRUNG" type="waehrung" />
			<xs:element name="BETRAG" type="betrag-tsd-euro" />
		</xs:sequence>
		<xs:attribute name="id" type="numeric-hex-id" />
	</xs:complexType>
	
	<xs:complexType name="positionen-finanz-nichtbanken">
		<xs:sequence>
			<xs:element name="POSITION" type="position-finanz-nichtbanken" maxOccurs="100000" />
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="position-waren-dienstleistungen">
		<xs:sequence>
			<xs:element name="BESTANDSART" type="bestandsart" />
			<xs:element name="BETEILIGUNGSVERHAELTNIS" type="beteiligungsverhaeltnis" />
			<xs:element name="FRISTIGKEIT" type="fristigkeit-waren-dienstleistungen" />
			<xs:element name="LAND" type="land" />
			<xs:element name="WAEHRUNG" type="waehrung" />
			<xs:element name="BETRAG" type="betrag-tsd-euro" />
		</xs:sequence>
		<xs:attribute name="id" type="numeric-hex-id" />
	</xs:complexType>

	<xs:complexType name="positionen-waren-dienstleistungen">
		<xs:sequence>
			<xs:element name="POSITION" type="position-waren-dienstleistungen" maxOccurs="100000" />
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="auswi-b1m-meldung">
		<xs:sequence>
			<xs:group ref="meldung-kopf-basis" />
			<xs:element name="MELDEMONAT" type="month" />
			<xs:group ref="meldung-kopf-stammdaten" />
			<xs:choice>
				<xs:sequence>
					<xs:choice minOccurs="0">
						<xs:element name="BEREICH-FINANZBEZIEHUNGEN-BANKEN-FEHLANZEIGE" fixed="" />
						<xs:element name="BEREICH-FINANZBEZIEHUNGEN-BANKEN" type="positionen-finanz-banken" />
					</xs:choice>
					<xs:choice minOccurs="0">
						<xs:element name="BEREICH-FINANZBEZIEHUNGEN-NICHTBANKEN-FEHLANZEIGE" fixed="" />
						<xs:element name="BEREICH-FINANZBEZIEHUNGEN-NICHTBANKEN" type="positionen-finanz-nichtbanken" />
					</xs:choice>
					<xs:choice minOccurs="0">
						<xs:element name="BEREICH-WAREN-DIENSTLEISTUNGEN-FEHLANZEIGE" fixed="" />
						<xs:element name="BEREICH-WAREN-DIENSTLEISTUNGEN" type="positionen-waren-dienstleistungen" />
					</xs:choice>
				</xs:sequence>
				<xs:element name="STORNO" fixed="" />
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	
	<xs:element name="AWV-MELDUNG-AUSWIB1M" type="auswi-b1m-meldung">
		<xs:annotation>
			<xs:documentation>Meldung gemäß AWV</xs:documentation>
		</xs:annotation>
	</xs:element>

</xs:schema>
