<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://schemas.webs.idu.de/cardo/gss" elementFormDefault="qualified" xmlns="http://schemas.webs.idu.de/cardo/gss" xmlns:mstns="http://schemas.webs.idu.de/cardo/gss" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="ColumnType">
	<xs:annotation>
	  <xs:documentation>einfacher Typ für Spalten - name und ob Zahl</xs:documentation>
	</xs:annotation>
	<xs:sequence>
	</xs:sequence>
	<xs:attribute name="name" type="xs:string" use="required">
	  <xs:annotation>
		<xs:documentation>
		  Name der Spalte bzw. der Alias eines Ausdrucks
		</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="isNumeric" type="xs:boolean" use="required">
	  <xs:annotation>
		<xs:documentation>
		  Angabe, ob die Spalte einen Zahlenwert enthält. Ist false eingestellt, wird von einem Text ausgegangen
		</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
  </xs:complexType>
  <xs:complexType name="ThemeType">
	<xs:annotation>
	  <xs:documentation>HauptTyp für die Beschreibung eines Themas. Ein Thema ist eine Hierarchiestufe innerhalb einer Suche</xs:documentation>
	</xs:annotation>
	<xs:sequence>
	  <xs:element name="description" type="xs:string" nillable="true" minOccurs="0" maxOccurs="1">
		<xs:annotation>
		  <xs:documentation>Die Beschreibung des Themas - wenn belegt wird sie als ToolTip auf dem Titel in der Anwendung angezeigt</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="layer" type="xs:string" minOccurs="0" maxOccurs="1">
		<xs:annotation>
		  <xs:documentation>Name des IWAN - Layers, mit dem das Thema verknüpft ist. Ist immer dann anzugeben, wenn ein SelektionsZoom oder ein Overlay genutzt werden soll</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="source" minOccurs="1" maxOccurs="1" nillable="false" type="SourceType">
		<xs:annotation>
		  <xs:documentation>In diesem Element stecken eine Vielzahl von Angaben zur Definition der Datenquelle, aus der die Inhalte des Themas für den Helfer gelesen werden sollen</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="addButtons" minOccurs="0" maxOccurs="1">
		<xs:annotation>
		  <xs:documentation>Hier können zusätzliche Buttons für ein Thema zugeschaltet werden</xs:documentation>
		</xs:annotation>
		<xs:complexType>
		  <xs:sequence>
			<xs:element name="addButton" minOccurs="0" maxOccurs="unbounded" type="AddButtonType">
			  <xs:annotation>
				<xs:documentation>eine Liste von vollkommen frei konfigurierbaren Buttons</xs:documentation>
			  </xs:annotation>
			</xs:element>
		  </xs:sequence>
		  <xs:attribute name="useReset" type="xs:boolean" use="optional" default="false">
			<xs:annotation>
			  <xs:documentation>ein fixer Button, der nur zugeschaltet werden kann (Standard=false) - zum Zurücksetzen der Eingaben an diesem Thema und den unterhalb liegenden</xs:documentation>
			</xs:annotation>
		  </xs:attribute>
		  <xs:attribute name="useShowAtMap" type="xs:boolean" use="optional" default="false">
			<xs:annotation>
			  <xs:documentation>ein fixer Button, der nur zugeschaltet werden kann (Standard=false) - zum Zoomen per Selektion. Dazu muss showAtMap aber aktiviert und ein geomType!='none' gesetzt sein</xs:documentation>
			</xs:annotation>
		  </xs:attribute>
		  <xs:attribute name="useBubble" type="xs:boolean" use="optional" default="false">
			<xs:annotation>
			  <xs:documentation>ein fixer Button, der nur zugeschaltet werden kann (Standard=false) - zum Aktivieren der Overlays. Dazu muss showAtMap aber aktiviert und ein geomType=='layer' (oder auch 'layerOverlay', dann aber rel. sinnlos) gesetzt sein</xs:documentation>
			</xs:annotation>
		  </xs:attribute>
		</xs:complexType>
	  </xs:element>
	  <xs:element name="subThemes" nillable="true" minOccurs="0" maxOccurs="1">
		<xs:annotation>
		  <xs:documentation>
			Zum Herstellen der Hierarchie werden hier weitere Themen eingefügt, die vom aktuellen abhängen
		  </xs:documentation>
		</xs:annotation>
		<xs:complexType>
		  <xs:sequence>
			<xs:element name="theme" type="ThemeType" maxOccurs="unbounded" minOccurs="1">
			  <xs:annotation>
				<xs:documentation>
				  wieder ein komplettes Thema 
				</xs:documentation>
			  </xs:annotation>
			</xs:element>
		  </xs:sequence>
		</xs:complexType>
	  </xs:element>
	</xs:sequence>
	<xs:attribute name="tag" type="xs:string" use="required">
	  <xs:annotation>
		<xs:documentation>Tag des Themas - ein eindeutiger Schlüssel. Wird beim Herstellen der Hierarchie benötigt. Dieser Schlüssel muss innerhalb eines Topics eindeutig sein!</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="title" type="xs:string" use="required">
	  <xs:annotation>
		<xs:documentation>Der Titel des Themas - der wird im Helfer auch ausgeben</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="skipParent" type="xs:boolean" default="false">
	  <xs:annotation>
		<xs:documentation>Ob die Hierarchie streng eingehalten werden muss (Standard=false). Wird die Option aktiviert, steht die Suche schon zur Verfügung, auch wenn im übergeordneten Thema noch kein Datensatz ausgewählt wurde (Bsp. wenn man Gemarkungen auch suchen können soll, wenn keine Gemeinde vorgefiltert ist)</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="clearChildsOnUpdate" type="xs:boolean" default="true">
	  <xs:annotation>
		<xs:documentation>Ob die Auswahl der Unterthemen nach Änderung des Werts in diesem Thema aufgehoben werden soll (Standard=true)</xs:documentation>
	  </xs:annotation>  
	</xs:attribute>
	<xs:attribute name="selBoxAvailable" type="xs:boolean" default="false">
	  <xs:annotation>
		<xs:documentation>Ob eine Auswahlliste für alle möglichen Werte angeboten werden soll (Standard=false)</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="inputAvailable" type="xs:boolean" default="true">
	  <xs:annotation>
		<xs:documentation>Ob eine Eingabemöglichkeit für den Titel angeboten werden soll (Standard=true)</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="syncSelBox" type="xs:boolean" default="false">
	  <xs:annotation>
		<xs:documentation>Ob die Auswahlliste mit der Eingabemöglichkeit abgeglichen werden soll (Standard=false) - führt bei Auswahl in der SelBox dazu, dass der gewählte Text im Eingabefeld steht und umgekeht bei Eingabe wird die Selbox an die richtige Stelle gescrollt. Nur sinnvoll wenn Selbox und Eingabemöglichkeit aktiviert sind</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="showAtMap" type="xs:boolean" default="false">
	  <xs:annotation>
		<xs:documentation>Erstmal die grundsätzliche Information, ob zu diesem Thema Geodaten vorliegen und ob es die Möglichkeit geben soll, zu ihnen zu springen (Standard=false)</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="selOffset" type="xs:int" default="50">
	  <xs:annotation>
		<xs:documentation>Beim Sprung auf die Karte der Abstand in Metern um das Objekt, der bis zum Kartenrand eingehalten werden soll (Standard=50 Meter)</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="selNoSwitchOnLayer" type="xs:boolean" default="false">
	  <xs:annotation>
		<xs:documentation>Beim Sprung auf die Karte eine Einstellung zum Festlegen, ob die dazugehörige Ebene nicht eingeschaltet werden soll (true). Standardmäßig wird sie zugeschaltet (false). Nur relevant, wenn als geomType 'layer' eingestellt oder "useShowAtMap" als Zusatzknopf aktiviert wurde.</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="filterSelBox" type="xs:boolean" default="false">
	  <xs:annotation>
		<xs:documentation>Ob die Filter die Selektbox ausdünnen sollen (Standard=false)</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="useRegister" type="xs:boolean" default="false">
	  <xs:annotation>
		<xs:documentation>Ob für das Thema ein Register erstellt werden soll (Standard=false). Wenn ja, wird über alle Daten des Themas (unabhängig von Parents) das erste Zeichen im Titel extrahiert und daraus das Register gebildet. Es ist also statisch und nicht abhängig von übergeordneten Auswahlen!</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
  </xs:complexType>
  <xs:simpleType name="DBTypeEnum">
	<xs:annotation>
	  <xs:documentation>Liste der Datenbanken, die als Datenquelle dienen können</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:string">
	  <xs:enumeration value="ORACLE">
		<xs:annotation>
		  <xs:documentation>
			ORACLE Datenbankserver
		  </xs:documentation>		  
		</xs:annotation>
	  </xs:enumeration>
	  <xs:enumeration value="MSACCESS">
		<xs:annotation>
		  <xs:documentation>
			Microsoft Access - Datenbank
		  </xs:documentation>
		</xs:annotation>
	  </xs:enumeration>
	  <xs:enumeration value="MSSQLSERVER">
		<xs:annotation>
		  <xs:documentation>
			Microsoft SQL - Server
		  </xs:documentation>
		</xs:annotation>
	  </xs:enumeration>
	  <xs:enumeration value="POSTGRESQL">
		<xs:annotation>
		  <xs:documentation>
			PostgreSQL - Datenbankserver
		  </xs:documentation>
		</xs:annotation>
	  </xs:enumeration>
	</xs:restriction>
  </xs:simpleType>
  <xs:element name="searchStructure">
	<xs:annotation>
	  <xs:documentation>Das Root - Element</xs:documentation>
	</xs:annotation>
	<xs:complexType>
	  <xs:sequence>
		<xs:element name="topic" type="TopicType" minOccurs="1" maxOccurs="unbounded">
		  <xs:annotation>
			<xs:documentation>
			  Ein Topic stellt eine abgegrenzte Suchkategorie dar. Ist mehr als ein Topic hinterlegt, muss der Benutzer bei Start des Helfers als erstes das gewünschte Topic wählen.
			</xs:documentation>
		  </xs:annotation>
		</xs:element>
	  </xs:sequence>
	</xs:complexType>
  </xs:element>
  <xs:complexType name="TopicType">
	<xs:sequence>
	  <xs:element name="description" type="xs:string" nillable="true" minOccurs="0" maxOccurs="1">
		<xs:annotation>
		  <xs:documentation>Beschreibung des Topics - nur informativ und zu Dokumentationszwecken, wird nirgends angezeigt</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="themes" maxOccurs="1" minOccurs="1" nillable="false">
		<xs:annotation>
		  <xs:documentation>Die Liste der Themen im Topic</xs:documentation>
		</xs:annotation>
		<xs:complexType>
		  <xs:sequence>
			<xs:element name="theme" type="ThemeType" maxOccurs="unbounded" minOccurs="1" />
		  </xs:sequence>
		</xs:complexType>
	  </xs:element>
	</xs:sequence>
	<xs:attribute name="tag" type="xs:string" use="required">
	  <xs:annotation>
		<xs:documentation>Ein Schlüssel für das Topic. Muss eindeutig sein.</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="title" type="xs:string" use="required">
	  <xs:annotation>
		<xs:documentation>Der Titel des Topics - wird in der Auswahl dem Benutzer angezeigt</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
  </xs:complexType>
  <xs:complexType name="SourceType">
	<xs:annotation>
	  <xs:documentation>Typ zur Beschreibung der Datenquelle</xs:documentation>
	</xs:annotation>
	<xs:sequence>
	  <xs:element name="idField" type="ColumnType">
		<xs:annotation>
		  <xs:documentation>Die ID - Spalte aus dem angegebenen Ausdruck, die für jeden Datensatz einen eindeutigen Wert liefern muss</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="displayField" type="ColumnType">
		<xs:annotation>
		  <xs:documentation>Die Titel - Spalte aus dem angegebenen Ausdruck, die überall angezeigt wird</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="layerIdField" type="xs:string" maxOccurs="1" minOccurs="0">
		<xs:annotation>
		  <xs:documentation>Die Spalte in den Geodaten, die den Wert aus der ID - Spalte enthält. Notwendig, wenn der geomType == 'layer' oder 'layerOverlay' ist</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="connStr" type="xs:string" maxOccurs="1" minOccurs="0">
		<xs:annotation>
		  <xs:documentation>Eine ODBC - Verbindungszeichenfolge zur Datenbank</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="query" type="xs:string" maxOccurs="1" minOccurs="0">
		<xs:annotation>
		  <xs:documentation>Die Abfrage, die die Grundlage für die Daten des Themas bildet. Es müssen die ID und die Display - Spalte enthalten sein. Zusätzlich ggf. die Geometriespalten, die Referenzspalten zum Parent, die Zusatzfilterspalten und die JokerFelder für die AddButtons. Der Einsatz der Platzhalter $userName$, $groupNamesAsOneString$ und $groupNamesForIn$ ist analog der Verwendung in IWAN - Datenquellen möglich.</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="orderHint" type="xs:string" maxOccurs="1" minOccurs="0">
		<xs:annotation>
		  <xs:documentation>Hier kann ein SQL - Schnipsel für die Sortierung hinterlegt werden, der bei der Erstellung von Listen außen herum genommen wird.</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="xColumn" type="ColumnType" maxOccurs="1" minOccurs="0">
		<xs:annotation>
		  <xs:documentation>Spalte für den Rechtswert - nur bei geomTyoe == 'point'</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="yColumn" type="ColumnType" maxOccurs="1" minOccurs="0">
		<xs:annotation>
		  <xs:documentation>Spalte für den Hochwert - nur bei geomTyoe == 'point'</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="xMin" type="ColumnType" maxOccurs="1" minOccurs="0">
		<xs:annotation>
		  <xs:documentation>Spalte für den kleinen Rechtswert - nur bei geomTyoe == 'box'</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="yMin" type="ColumnType" maxOccurs="1" minOccurs="0">
		<xs:annotation>
		  <xs:documentation>Spalte für den kleinen Hochwert - nur bei geomTyoe == 'box'</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="xMax" type="ColumnType" maxOccurs="1" minOccurs="0">
		<xs:annotation>
		  <xs:documentation>Spalte für den großen Rechtswert - nur bei geomTyoe == 'box'</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="yMax" type="ColumnType" maxOccurs="1" minOccurs="0">
		<xs:annotation>
		  <xs:documentation>Spalte für den großen Hochwert - nur bei geomTyoe == 'box'</xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="parentFields" maxOccurs="1" minOccurs="0">
		<xs:annotation>
		  <xs:documentation>Spalten über die die Referenz zu übergeordneten Themen hergestellt werden können</xs:documentation>
		</xs:annotation>
		<xs:complexType>
		  <xs:sequence>
			<xs:element name="parentField" type="ParentFieldType" maxOccurs="unbounded" minOccurs="1" />
		  </xs:sequence>
		</xs:complexType>
	  </xs:element>
	  <xs:element name="addSelFields" maxOccurs="1" minOccurs="0">
		<xs:annotation>
		  <xs:documentation>
			Eine Liste von zusätzlichen Feldern, nach denen Recherchiert werden kann
		  </xs:documentation>
		</xs:annotation>
		<xs:complexType>
		  <xs:sequence>
			<xs:element name="addSelField" type="AddSelFieldType" maxOccurs="unbounded" minOccurs="1" />
		  </xs:sequence>
		</xs:complexType>
	  </xs:element>
	</xs:sequence>
	<xs:attribute name="type" type="SourceTypeEnum" use="required">
	  <xs:annotation>
		<xs:documentation>Typ der Datenquelle</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="dbType" type="DBTypeEnum">
	  <xs:annotation>
		<xs:documentation>Art der Datenbank</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="geomType" type="GeomTypeEnum" default="none">
	  <xs:annotation>
		<xs:documentation>Art der Geometrie bzw. der Navigation zur Karte</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="userMappingClass" type="xs:int" use="optional">
	  <xs:annotation>
		<xs:documentation>Referenz zu einer BenutzerMapping Klasse - die ID ist anzugeben. Diese Einstellung ermöglicht es, verschiedene cardo - Benutzer unter verschiedenen Datenbank - Logins agieren zu lassen. Im ConnectionString sind dazu die Platzhalter %DB_USR% und %DB_PWD% zu verwenden.</xs:documentation>
	  </xs:annotation>		
	</xs:attribute>
	<xs:attribute name="projection" type="xs:int">
	  <xs:annotation>
		<xs:documentation>Projektion der Geometrien - nur relevant bei geomType = 'point' und 'box'</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
  </xs:complexType>
  <xs:simpleType name="SourceTypeEnum">
	<xs:restriction base="xs:string">
	  <xs:enumeration value="external">
		<xs:annotation>
		  <xs:documentation>externe Datenquelle = Datenbank</xs:documentation>
		</xs:annotation>
	  </xs:enumeration>
	  <xs:enumeration value="iwanLayer">
		<xs:annotation>
		  <xs:documentation>
			Bezug der Daten direkt über IWAN - derzeit nicht unterstützt
		  </xs:documentation>
		</xs:annotation>
	  </xs:enumeration>
	</xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="GeomTypeEnum">
	<xs:restriction base="xs:string">
	  <xs:enumeration value="none">
		<xs:annotation>
		  <xs:documentation>kein Geo-Bezug: damit kein Sprung zur Karte möglich</xs:documentation>
		</xs:annotation>
	  </xs:enumeration>
	  <xs:enumeration value="layer">
		<xs:annotation>
		  <xs:documentation>Bezug über eine im cardo eingestellte Ebene -> dann Zoom per Selektion</xs:documentation>
		</xs:annotation>
	  </xs:enumeration>
	  <xs:enumeration value="layerOverlay">
		<xs:annotation>
		  <xs:documentation>Bezug über eine im cardo eingestellte Ebene -> dann kein Zoom sondern einblenden eines Overlay</xs:documentation>
		</xs:annotation>
	  </xs:enumeration>
	  <xs:enumeration value="point">
		<xs:annotation>
		  <xs:documentation>Die Quelle enthält einen Punkt, zu dem im cardo gesprungen werden kann</xs:documentation>
		</xs:annotation>
	  </xs:enumeration>
	  <xs:enumeration value="box">
		<xs:annotation>
		  <xs:documentation>Die Quelle enthält eine Box, zu der im cardo gesprungen werden kann</xs:documentation>
		</xs:annotation>
	  </xs:enumeration>
	</xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ParentFieldType">
	<xs:annotation>
	  <xs:documentation>
		Typ für die Referenz zu einem übergeordneten Thema
	  </xs:documentation>
	</xs:annotation>
	<xs:sequence>
	</xs:sequence>
	<xs:attribute name="tag" type="xs:string" use="required">
	  <xs:annotation>
		<xs:documentation>Tag des übergeordneten Themas, zu dem dieser Eintrag führt</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="name" type="xs:string" use="required">
	  <xs:annotation>
		<xs:documentation>Name der Spalte, die die ID des Datensatzes des übergeordneten Themas enthält</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="isNumeric" type="xs:boolean" use="required">
	  <xs:annotation>
		<xs:documentation>Ob die Spalte eine Zahlenspalte ist (true) oder eine Textspalte (false)</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
  </xs:complexType>
  <xs:complexType name="AddSelFieldType">
	<xs:annotation>
	  <xs:documentation>
		Typ für Zusatz-Filter-Felder
	  </xs:documentation>
	</xs:annotation>
	<xs:sequence>
	  <xs:element name="description" type="xs:string" nillable="true" minOccurs="0" maxOccurs="1">
		<xs:annotation>
		  <xs:documentation>Beschreibung des Zusatzfilters - wird als Tooltip im Helfer angeboten</xs:documentation>
		</xs:annotation>
	  </xs:element>
	</xs:sequence>
	<xs:attribute name="name" type="xs:string" use="required">
	  <xs:annotation>
		<xs:documentation>Name der Spalte, auf die der Filter wirkt</xs:documentation> 
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="title" type="xs:string" use="required">
	  <xs:annotation>
		<xs:documentation>Titel des Zusatzfilters, der im Helfer angezeigt wird</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="isNumeric" type="xs:boolean" default="false">
	  <xs:annotation>
		<xs:documentation>Ob die Filterspalte numerisch ist (=true) oder ob es eine Text-Spalte ist (Standard = false)</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="useJoker" type="xs:boolean" use="optional" default="false">
	  <xs:annotation>
		<xs:documentation>Ob Jokerzeichen bei der Filtereingabe verwendet werden können (Standard = false)</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="autoJoker" type="xs:boolean" use="optional" default="false">
	  <xs:annotation>
		<xs:documentation>Ob automatisch beim Absetzen des Filters vorn und hinten ein Jokerzeichen ergänzt werden soll (Standard = false) - nur wenn useJoker aktiviert wurde</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="maxSubSel" type="xs:int">
	  <xs:annotation>
		<xs:documentation>maximale Anzahl der Datensätze in der Filterliste</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="filterWithSel" type="xs:boolean" use="optional" default="false">
	  <xs:annotation>
		<xs:documentation>Ob zum Filtern eine Auswahlliste angeboten werden soll (Standard = false) - ansonsten gibst ein Eingabefeld für den Filterwert</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
  </xs:complexType>
  <xs:complexType name="AddButtonType">
	<xs:annotation>
	  <xs:documentation>
		Typ für die frei anfügbaren ZusatzButtons
	  </xs:documentation>
	</xs:annotation>
	<xs:sequence>
	  <xs:element name="action" nillable="false" maxOccurs="1" minOccurs="1">
		<xs:annotation>
		  <xs:documentation>
			<![CDATA[
			Hier ist ein JavaScript - Funktionsrumpf anzugeben, der beim Anklicken des Buttons aufgerufen wird. Vorher passiert schon die Prüfung, ob ein Datensatz gewält wurde.
			In dem Script ist Zugriff auf das Objekt 'currentSelection' möglich. Es enthält den aktuell gewählten Datensatz.
			Mit currentSelection.id kann auf den Wert der ID - Spalte zugegriffen werden.
			Mit currentSelection.title auf den Display - Wert.
			Mit currentSelection.geom ggf. auf die Geometrie (nur bei point und box belegt)
			Mit currentSelection.abjv auf die zusätzlichen Jokerfelder. Dazu dann weiter mit dem Tag - des Buttons und weiter mit dem Feldnamen - immer klein geschrieben.

			Bsp:

			alert("Sie haben den Datensatz '" + currentSelection.title + "' gewählt");
			window.open('http://detailseite.de?id='+currentSelection.id);
			]]>
		  </xs:documentation>
		</xs:annotation>
	  </xs:element>
	  <xs:element name="jokerFields" nillable="true" maxOccurs="1" minOccurs="0">
		<xs:annotation>
		  <xs:documentation>ggf. eine Liste von Feldern, die für die Action ausgewertet werden können</xs:documentation>
		</xs:annotation>
		<xs:complexType>
		  <xs:sequence>
			<xs:element name="jokerField" type="ColumnType" maxOccurs="unbounded" minOccurs="1" />
		  </xs:sequence>
		</xs:complexType>
	  </xs:element>
	</xs:sequence>
	<xs:attribute name="tag" type="xs:string" use="required">
	  <xs:annotation>
		<xs:documentation>ein Schlüssel für den Button, der innerhalb des Themas eindeutig sein muss</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="title" type="xs:string" use="optional">
	  <xs:annotation>
		<xs:documentation>ein Titel für den Button, der im Helfer dann als ToolTip angezeigt wird</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
	<xs:attribute name="imgSource" type="xs:string" use="required">
	  <xs:annotation>
		<xs:documentation>Die Bildquelle, mit der der Button bestückt werden soll. Ein Bild 16x16px sollte es sein. Angabe am bestem komplett vom cardo - Root aus.</xs:documentation>
	  </xs:annotation>
	</xs:attribute>
  </xs:complexType>
</xs:schema>