<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2004 The Apache Software Foundation

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License. -->

<!-- =======================================================================
ehd-Schnittstelle "eHealthData"
Die Hauptintention von ehd ist es, einen Rahmen zu schaffen, in dem beliebige XML-Schnittstellen
entstehen können, für die der CDA-Header von SCIPHOX ungeeignet ist. Dabei wird Wert darauf
gelegt, weitgehend kompatibel zu SCIPHOX zu sein: Von begründeten Ausnahmen abgesehen,
werden für alle ehd-Schnittstellen die Elemente aus SCIPHOX übernommen.

Namensraum ist:  urn:ehd/001

Damit Elementnamen nicht umdefiniert werden können, ist blockDefault="substitution" gesetzt.
Bei Ableitung von neuen Schnittstellen, ist dieses Attribut (blockDefault) auch zu setzen.
Die Version der Schnittstelle ist im version-Attribut hinterlegt.

version="1.30"
=======================================================================-->
<xs:schema xmlns="urn:ehd/001" xmlns:ehd="urn:ehd/001" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:ehd/001" elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="substitution" version="1.30">
	<!-- =======================================================================
	ehd_Dateien einbinden
	======================================================================= -->
	<xs:include schemaLocation="xmlbeans_184_ehd_header_V1.30.xsd_"/>
	<xs:include schemaLocation="xmlbeans_184_keytabs_V1.30.xsd_"/>
	<!-- =======================================================================
	ehd_root_typ
	======================================================================= -->
	<xs:complexType name="ehd_root_typ">
		<xs:sequence>
			<xs:element name="header" type="ehd_header_typ">
				<xs:annotation>
					<xs:documentation>alle Metainformationen zu den Daten</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="body" type="ehd_body_typ">
				<xs:annotation>
					<xs:documentation>die eigentlichen Daten</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element ref="keytabs" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="ehd_version" type="ehd_version_typ" use="required"/>
	</xs:complexType>
	<!--
	============================================================
	Versionierung der Schema:
	im Schema-Attribut "version" steht immer die aktuelle Versionsnummer.
	Im Pflichtattribut "ehd_version" wird im XML-Dokument die EHD-Version
	angegebenen, mit der das Dokument erstellt wurde. Ein bestimmter Wert wird
	hier bewußt nicht vorgegeben, damit bei geringfügigen Änderungen, noch
	Aufwärtskompatibilität gewährleistet werden kann.
	============================================================-->
	<xs:simpleType name="ehd_version_typ">
		<xs:restriction base="xs:decimal">
			<xs:pattern value="\d?\d\.\d\d"/>
		</xs:restriction>
	</xs:simpleType>
	<!--
	============================================================
	ehd_body_typ,  hier können die Schnittstellenspezifischen Elemente u. Attribute
	definiert werden. Wenn der Parser die neuen Elemente nicht kennt, wird
	keine Fehlermeldung ausgegeben. Wenn die Elementdefinition jedoch vorhanden
	ist, aber die Struktur in der XML-Instance nicht eingehalten wird, meldet
	der Parser einen Fehler.
	============================================================
	-->
	<xs:complexType name="ehd_body_typ">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
		</xs:choice>
	</xs:complexType>
</xs:schema>
