<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:xpassausweis="http://www.osci.de/xpassausweis2411"
           xmlns:din91379="urn:xoev-de:kosit:xoev:datentyp:din-91379_2022-08"
           xmlns:xibehoerde="http://www.osci.de/xinneres/behoerde/6"
           xmlns:xink="http://www.osci.de/xinneres/basisnachricht/6"
           targetNamespace="http://www.osci.de/xpassausweis2411"
           version="24.11"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified">
   <xs:annotation>
      <xs:appinfo>
         <standard>
            <nameLang>XPassAusweis</nameLang>
            <nameKurz>XPassAusweis</nameKurz>
            <nameTechnisch>xpassausweis</nameTechnisch>
            <kennung>urn:xoev-de:kosit:standard:xinneres.xpassausweis</kennung>
            <beschreibung>XpassAusweis ist ein Standard für die Datenübermittlung von Pass-, Personalausweis und eID-Kartebehörden.</beschreibung>
         </standard>
         <versionStandard>
            <version>24.11</version>
            <versionXOEVProfil>2.1.0_p3</versionXOEVProfil>
            <versionXOEVHandbuch>2.4</versionXOEVHandbuch>
            <versionXGenerator>3.0.1</versionXGenerator>
            <versionModellierungswerkzeug>19.0 SP 4</versionModellierungswerkzeug>
            <nameModellierungswerkzeug>MagicDraw</nameModellierungswerkzeug>
         </versionStandard>
      </xs:appinfo>
   </xs:annotation>
   <xs:include schemaLocation="xpassausweis-codes.xsd"/>
   <xs:import schemaLocation="http://www.osci.de/xinneres/basisnachricht/6/xinneres-basisnachricht.xsd"
              namespace="http://www.osci.de/xinneres/basisnachricht/6"/>
   <xs:import schemaLocation="http://www.osci.de/xinneres/behoerde/6/xinneres-behoerde.xsd"
              namespace="http://www.osci.de/xinneres/behoerde/6"/>
   <xs:import schemaLocation="https://xoev.de/schemata/din/91379/2022-08/din-norm-91379-datatypes.xsd"
              namespace="urn:xoev-de:kosit:xoev:datentyp:din-91379_2022-08"/>
   <xs:complexType name="Behoerde">
      <xs:annotation>
         <xs:appinfo>
            <title>Sekundärdaten zur Behörde</title>
         </xs:appinfo>
         <xs:documentation>Dieses Element übermittelt Daten einer Behörde.</xs:documentation>
      </xs:annotation>
      <xs:sequence>
         <xs:element name="behoerdenkennzeichen" type="xpassausweis:Behoerdenkennzeichen">
            <xs:annotation>
               <xs:documentation>Dieses Element enthält das Behördenkennzeichen (BHKZ) des Senders. Die BHKZ in diesem Element muss dem Dokumententyp (z. B. Pass, Personalausweis) des betroffenen Dokumentes entsprechen. Für den Fall, dass in der sendenden Behörde für einen Dokumententyp mehrere BHKZ existieren, ist eine aktive BHKZ zu verwenden.</xs:documentation>
            </xs:annotation>
         </xs:element>
         <xs:element name="behoerdenbezeichnung" minOccurs="0" type="din91379:datatypeC">
            <xs:annotation>
               <xs:documentation>Dieses Element enthält die Bezeichnung der Behörde.</xs:documentation>
            </xs:annotation>
         </xs:element>
      </xs:sequence>
   </xs:complexType>
   <xs:simpleType name="Behoerdenkennzeichen">
      <xs:annotation>
         <xs:appinfo>
            <title>Behördenkennzeichen</title>
         </xs:appinfo>
         <xs:documentation>Das Behördenkennzeichen als String-Latin.</xs:documentation>
      </xs:annotation>
      <xs:restriction base="din91379:datatypeC">
         <xs:pattern value="[0-9A-Z]{4}"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="GroesseType">
      <xs:annotation>
         <xs:documentation>Größetyp gemäß "GroesseType" aus "TR XhD"</xs:documentation>
      </xs:annotation>
      <xs:restriction base="din91379:datatypeC">
         <xs:pattern value="[0-9]{3}|---"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="Identifikation.Ereignis">
      <xs:annotation>
         <xs:appinfo>
            <title>Identifikation Ereignis</title>
         </xs:appinfo>
         <xs:documentation>Dieser Typ enthält Angaben, die ein Ereignis eindeutig identifizieren und es dem Leser einer Nachricht ermöglichen, die Reihenfolge von Ereignissen beim Autor nachzuvollziehen. Sofern dieses Element in einer Nachricht mit mehreren Datensätzen verwendet wird (Sammelnachricht), dient es der Identifikation des Einzelfalls. Es muss dann entsprechend für jeden Einzelfall in der Sammelnachricht übermittelt werden.</xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:restriction base="xink:Identifikation.Ereignis">
            <xs:sequence>
               <xs:element name="ereignis.zeitpunkt" type="xs:dateTime" form="unqualified">
                  <xs:annotation>
                     <xs:documentation>Dieses Element wird verwendet, um beim Leser die ursprüngliche Chronologie der Ereignisse beim Autor der Nachricht zu rekonstruieren. Es ist der Zeitpunkt zu übermitteln, zu dem das Ereignis im Verfahren gespeichert wurde. Der Ereigniszeitpunkt muss neben einer Angabe zum Datum eine zeitliche Information beinhalten. Diese ist mit einer Genauigkeit auf Ebene von Millisekunden und der Angabe zur Zeitzone zu übermitteln. Der hier übermittelte Zeitpunkt kann von dem Erstellungszeitpunkt der Nachricht, in der das Ereignis übermittelt wird, abweichen.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="ereignis.zeichen"
                           type="xink:Identifikation.Ereignis.Zeichen"
                           form="unqualified">
                  <xs:annotation>
                     <xs:documentation>Mit diesem Element wird ein (Geschäfts-)Zeichen zu dem Ereignis übermittelt, das das Ereignis innerhalb einer Nachricht eindeutig identifiziert. Das (Geschäfts-)Zeichen kann durch den Autor der Nachricht beliebig gestaltet werden, es muss nur sichergestellt werden, dass ein Ereignis innerhalb einer Nachricht eindeutig identifiziert (nur relevant bei Sammelnachrichten) wird und dass der Autor einer Nachricht in der Lage ist, das übermittelte Ereignis mithilfe des (Geschäfts-)Zeichens und den identifizierenden Angaben zur Nachricht wieder aufzufinden. Ein solches Zeichen darf maximal 100 Zeichen umfassen. Außer den Zeichen A..Z, a..z sowie den Ziffern 0..9 sind maximal acht Sonderzeichen erlaubt. Umlaute und das ß gelten ebenfalls als Sonderzeichen.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Identifikation.Nachricht">
      <xs:annotation>
         <xs:documentation>Dieser Datentyp definiert die Identifikationsmerkmale zu einer Nachricht. Er wird im Element zur Identifikation einer Nachricht verwendet oder in einem Abschnitt, der auf eine Nachricht referenziert.</xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:restriction base="xink:Identifikation.Nachricht">
            <xs:sequence>
               <xs:element name="nachrichtenUUID" type="xink:UUID" form="unqualified">
                  <xs:annotation>
                     <xs:documentation>Dokumentation aus Xinneres:</xs:documentation>
                     <xs:documentation>Hier wird der Universally Unique Identifier (UUID) der Nachricht mitgeteilt, der das primäre Identifikationsmerkmal einer Nachricht darstellt. Der UUID der Nachricht ist weltweit eindeutig. So wird es möglich, Nachrichten hersteller- und anwendungsübergreifend eindeutig zu identifizieren. Für jede Nachricht muss ein neuer UUID erzeugt werden, um eine eindeutige Identifikation der Nachricht sicherzustellen. Insbesondere ist es nicht zulässig, in einer korrigierten Nachricht (bspw. nach Erhalt einer RTS-Nachricht) den UUID der ursprünglichen Nachricht wiederzuverwenden. Sofern eine einmal erzeugte Nachricht ein weiteres Mal gesendet werden soll (bspw. aufgrund von Problemen beim Nachrichtentransport), muss der UUID nicht angepasst werden.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="nachrichtentyp"
                           type="xpassausweis:Code.Nachrichten"
                           form="unqualified">
                  <xs:annotation>
                     <xs:documentation>Dokumentation aus Xinneres:</xs:documentation>
                     <xs:documentation>Die eindeutige Identifizierungsnummer für einen Nachrichtentyp. Der konkret zu verwendende Datentyp für die Übermittlung des Schlüsselwertes wird durch das xinneres-fachmodul auf Schemaebene festgelegt.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="erstellungszeitpunkt" type="xs:dateTime" form="unqualified">
                  <xs:annotation>
                     <xs:documentation>Dokumentation aus Xinneres:</xs:documentation>
                     <xs:documentation>Der Zeitpunkt, an dem die Nachricht erstellt wurde. Dieses Feld wird durch das Fachverfahren beim Erstellen der Nachricht gefüllt. Hier ist explizit nicht der Sende- und Empfangszeitpunkt festgehalten, denn die können in der Regel der Transportschicht entnommen werden. Der Erstellungszeitpunkt muss neben einer Angabe zum Datum eine zeitliche Information beinhalten. Diese ist mit einer Genauigkeit auf Ebene von Millisekunden und der Angabe zur Zeitzone zu übermitteln.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Nachricht.G2G">
      <xs:annotation>
         <xs:documentation>Dieser Typ wurde als Ableitung des entsprechenden Datentyps des XInneres-Basismoduls erstellt. Er realisiert die Oberklasse für alle Nachrichten. Jede in XPassAusweis definierte konkrete Nachricht erbt von diesem Typ. Auf diese Weise wird für alle Nachrichten eine einheitliche Grundstruktur gewährleistet.</xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:restriction base="xink:Nachricht.G2G">
            <xs:sequence>
               <xs:element name="nachrichtenkopf"
                           type="xpassausweis:Nachrichtenkopf.G2G"
                           form="unqualified">
                  <xs:annotation>
                     <xs:documentation>Dieses Element enthält die Identifikationsmerkmale einer Nachricht und Informationen zum Leser und Autor einer Nachricht.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
            <xs:attribute name="produkt" type="din91379:datatypeC" use="required">
               <xs:annotation>
                  <xs:documentation>Dokumentation aus Xinneres:</xs:documentation>
                  <xs:documentation>In diesem Attribut ist der Name des Produktes (der Software) einzutragen, mit dem diese Nachricht erstellt worden ist.</xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="produkthersteller" type="din91379:datatypeC" use="required">
               <xs:annotation>
                  <xs:documentation>Dokumentation aus Xinneres:</xs:documentation>
                  <xs:documentation>In diesem Attribut ist der Name der Firma oder der Organisation einzutragen, die für das DV-Verfahren verantwortlich ist, mit dem diese Nachricht erstellt worden ist.</xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="produktversion" type="din91379:datatypeC" use="optional">
               <xs:annotation>
                  <xs:documentation>Dokumentation aus Xinneres:</xs:documentation>
                  <xs:documentation>In diesem Attribut sollen ergänzende Hinweise zu dem Produkt, mit dem diese Nachricht erstellt worden ist, eingetragen werden. Dies sind Angaben, die für eine möglichst präzise Identifikation im Fehlerfall hilfreich sind, wie zum Beispiel Version und Patchlevel.</xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="standard"
                          type="din91379:datatypeC"
                          use="required"
                          fixed="XPassAusweis">
               <xs:annotation>
                  <xs:documentation>Dokumentation aus Xinneres:</xs:documentation>
                  <xs:documentation>In diesem Attribut wird der Name des xinneres-basismoduls bzw. des xinneres-fachmoduls übermittelt, aus dem die Nachricht stammt. Der Name des xinneres-basismoduls bzw. des xinneres-fachmoduls wird durch das xinneres-basismodul bzw. das xinneres-fachmodul als fixed-Value auf Schemaebene festgelegt (z. B. XPersonenstand).</xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="test" type="din91379:datatypeC" use="optional">
               <xs:annotation>
                  <xs:documentation>Dokumentation aus Xinneres:</xs:documentation>
                  <xs:documentation>Dieses Attribut ist optional. Ist es vorhanden, so sagt dies aus, dass es sich um eine Nachricht handelt, die (aus Sicht des Autors der Nachricht) nicht im normalen Produktivbetrieb behandelt werden soll. Über den Inhalt des Attributes wird nichts weiter ausgesagt, dies kann bilateral zwischen den Kommunikationspartnern vereinbart werden.</xs:documentation>
               </xs:annotation>
            </xs:attribute>
            <xs:attribute name="version"
                          type="din91379:datatypeC"
                          use="required"
                          fixed="24.11">
               <xs:annotation>
                  <xs:documentation>Dokumentation aus Xinneres:</xs:documentation>
                  <xs:documentation>In diesem Attribut wird die Version des xinneres-basismoduls bzw. xinneres-fachmoduls übermittelt, aus dem die Nachricht stammt. Die Versionsbezeichnung wird durch das xinneres-basismodul bzw. xinneres-fachmodul als fixed-Value auf Schemaebene festgelegt (z. B. 1.5.0).</xs:documentation>
               </xs:annotation>
            </xs:attribute>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="Nachrichtenkopf.G2G">
      <xs:annotation>
         <xs:documentation>Nachrichtenkopf zwischen Behörden und anderen (öffentlichen) Stellen.</xs:documentation>
      </xs:annotation>
      <xs:complexContent>
         <xs:restriction base="xink:Nachrichtenkopf.G2G">
            <xs:sequence>
               <xs:element name="identifikation.nachricht"
                           type="xpassausweis:Identifikation.Nachricht"
                           form="unqualified">
                  <xs:annotation>
                     <xs:documentation>Mit diesem Element werden die Identifizierungsmerkmale der Nachricht übermittelt, auf die sich der Leser der Nachricht beziehen kann.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="leser" type="xibehoerde:Behoerde" form="unqualified">
                  <xs:annotation>
                     <xs:documentation>Dokumentation aus Xinneres:</xs:documentation>
                     <xs:documentation>Hier werden Angaben über den Leser der Nachricht übermittelt. Der Leser ist die Behörde oder andere (öffentliche) Stelle, der die Nachricht zugestellt werden soll.</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element name="autor"
                           type="xibehoerde:Behoerde.Erreichbar"
                           form="unqualified">
                  <xs:annotation>
                     <xs:documentation>Dokumentation aus Xinneres:</xs:documentation>
                     <xs:documentation>Hier werden Angaben über den Autor der Nachricht übermittelt, die es dem Leser ermöglichen mit dem Autor in Verbindung zu treten. Der Autor ist die Behörde oder andere (öffentliche) Stelle, die aufgrund eines Geschäftsvorfalls die Nachricht erstellt, also bspw. eine Meldebehörde oder ein Standesamt. Für die sendende Behörde wird in der behoerdenkennung immer die Kennung der für den Betroffenen zuständigen Gemeinde bzw. Ausländerbehörde oder die Kennung des für den Personenstandsfall zuständigen Standesamtes übermittelt. Sofern die sendende Behörde für einen Gemeindeverbund oder im Auftrag einer anderen Behörde handelt, ist in diesen Fällen deshalb die Angabe der zuständigen Stelle (Gemeinde oder Behörde) verpflichtend. Daraus ergibt sich auch die Konsequenz, dass Sammelnachrichten nur für die einzelnen Gemeinden bzw. Behörden zulässig sind. Sofern es keine dem obigen Sinn nach zuständige Gemeinde oder Behörde gibt (bspw. bei der Beantragung eine Führungszeugnisses in einer nicht für den Wohnort des Beantragenden zuständigen Meldebehörde), ist in dem Kindelement behoerdenkennung eine beliebige Kennung zu übermitteln, mit der der Autor im DVDV adressiert werden kann.</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:restriction>
      </xs:complexContent>
   </xs:complexType>
</xs:schema>
