<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de-x-formal">
	<id>https://glossar.hs-augsburg.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FaPe</id>
	<title>GlossarWiki - Benutzerbeiträge [de-formal]</title>
	<link rel="self" type="application/atom+xml" href="https://glossar.hs-augsburg.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FaPe"/>
	<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/Spezial:Beitr%C3%A4ge/FaPe"/>
	<updated>2026-07-17T15:05:35Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11884</id>
		<title>EXist</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11884"/>
		<updated>2008-07-01T23:34:25Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Leistungsumfang */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
Das Open-Source Projekt &#039;&#039;&#039;eXist&#039;&#039;&#039; bietet ein in Java implementiertes [[Datenbank-Management-System]] (DBMS), welches seine Daten nativ im [[XML]]-Datenmodell abspeichert und verwaltet. Es stützt sich ausschließlich auf freie W3C-Standards wie [[XML Query Language]] und [[XML Path Language]] als Abfragesprachen oder [[XSLT]] als Transformationssprache.&lt;br /&gt;
&lt;br /&gt;
Begründet wurde &#039;&#039;eXist&#039;&#039; 2000 durch Wolfgang Meier, der dessen Entwicklung seit 2001 auf dem Open-Source-Portal [http://exist.sourceforge.net SourceForge.net] gemeinschaftlich vorantreibt. Es steht unter der Lizenzierung der [[GNU Lesser General Public License]] (LGPL) und ist in diesem Rahmen also auch in kommerziellen Projekten als Datenbank-Backend frei nutzbar.&lt;br /&gt;
&lt;br /&gt;
=Leistungsumfang=&lt;br /&gt;
Die eXist XML-Datenbank implementiert eine breite Palette an offenen Webstandards, um ihre Leistungen zu erreichen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Persitieren&#039;&#039;: Generell textuelle und multimediale Inhalte sowie optimiert XML-Daten&lt;br /&gt;
* &#039;&#039;Selektion&#039;&#039;: XQuery 1.0 oder XPath 2.0&lt;br /&gt;
* &#039;&#039;Modifikation&#039;&#039;: XUpdate und bald die XQuery Update Facility 1.0&lt;br /&gt;
* &#039;&#039;Transformation&#039;&#039;: XSLT 1.0 oder XSLT 2.0&lt;br /&gt;
* &#039;&#039;HTTP-Schnittstellen&#039;&#039;: REST, WebDAV, SOAP, XMLRPC, Atom Publishing&lt;br /&gt;
* &#039;&#039;Erweiterungen&#039;&#039;: XQuery Funktionsbibliotheken als Erweiterungsmodule&lt;br /&gt;
&lt;br /&gt;
==REST-Schnittstelle==&lt;br /&gt;
In Form eines Java-Servlets realisiert eXist eine Zugriffsschnittstelle, die sich am &#039;&#039;Representational State Transfer (REST)&#039;&#039; als Architekturstil für Hypermediasysteme anlehnt. Es veröffentlicht darüber den Verzeichnisbaum ihres Speicherbereichs unter einer Basis-URI. Befinden sich Anwendungsdateien z.B. unter dem Datenbankpfad &amp;lt;code&amp;gt;/cms/&amp;lt;/code&amp;gt;, so werden sie bei eXist standardmäßig über &amp;lt;code&amp;gt;http://host:port/exist/rest/db/cms/&amp;lt;/code&amp;gt; netzwerkweit mit einem HTTP-Client zugreifbar - selbstverständlich mit optionaler HTTP-Authentifizierung. Über die einzelnen HTTP-Methoden lassen sich auf solchen Datenbank-URIs verschiedene Operationen auslösen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;GET&#039;&#039;&#039;: Bezieht je nach HTTP-Header &#039;&#039;Content-Type&#039;&#039; eine passende Repräsentation des Datenbankobjekts (z.B. ”text/xml”). Übergibt man einen XQuery-Ausdruck als Request-Parameter &#039;&#039;_query&#039;&#039;, so wird stattdessen dieser ausgeführt und sein Resultat zurückgegeben. &lt;br /&gt;
* &#039;&#039;&#039;POST&#039;&#039;&#039;: Kann im POST-Inhalt eine für die GET-Variante zu lange XQuery enthalten, die in spezielle &#039;&#039;&amp;lt;exist:query&amp;gt;&#039;&#039;-Tags einzubetten ist und äquivalent zu &#039;&#039;_query&#039;&#039; behandelt wird. &lt;br /&gt;
* &#039;&#039;&#039;PUT&#039;&#039;&#039;: Speichert oder ersetzt ein Dokument als Datenbankobjekt, wobei der HTTP-Header &#039;&#039;Content-Type&#039;&#039; über das gewählte textuelle oder binäre Ablageformat entscheidet. &lt;br /&gt;
* &#039;&#039;&#039;DELETE&#039;&#039;&#039;: Entfernt das addressierte Objekt aus der Datenbank, falls existent.&lt;br /&gt;
&lt;br /&gt;
Ein Spezialverhalten weisen binär abgelegte XQuery-Dokumente (*.xql) auf, bei denen GET und POST direkt in der Auswertung ihres Inhalts resultieren. Dies erlaubt es über XQuery zusammengestellte Webseiten direkt auszuliefern oder z.B. Formularanfragen aus [[XForms]] zu bedienen.&lt;br /&gt;
&lt;br /&gt;
==XQuery-Erweiterungen==&lt;br /&gt;
Für die Umsetzung von Websystemen, die z.B. über die REST-Schnittstelle abgespeicherte XQuerys abfragen, bietet eXist einige nützliche Erweiterungen als XQuery-Funktionsbibliotheken. Neben recht speziellen Leistungen wie Emailversand, Datenkompression, Bilderverwaltung und mathematischen Funktionen sorgen HTTP-Kontextzugriff und Utility-Funktionen für den höchsten Mehrwert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HTTP-Kontextzugriff&#039;&#039;&#039;: Erlaubt das Auslesen und Manipulieren der im aktuellen HTTP-Kontext befindlichen Informationen.&lt;br /&gt;
* &#039;&#039;Request/Response&#039;&#039;: Setter &amp;amp; Getter für Header, Parameter, Attribute, Daten, Pfadinformationen, Statuscode und Cookies.&lt;br /&gt;
* &#039;&#039;Sessions&#039;&#039;: Lebenszyklusverwaltung sowie Setter &amp;amp; Getter für Attribute.&lt;br /&gt;
* &#039;&#039;Sonstiges&#039;&#039;: URL-Encoding &amp;amp; -Decoding, Redirects sowie Streaming von Binärdaten.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Utility-Funktionen&#039;&#039;&#039;: Nützliche Funktionen, die hauptsächlich die dynamische Datengenerierung, effiziente Datenverwaltung und funktionale Programmierung anreichern.&lt;br /&gt;
* &#039;&#039;Datenverwaltung&#039;&#039;: Einlesen von textuellen und binären Dokumenten, Umwandeln zwischen textuellen und binären Daten, Parsen zu logischem XML-Baum, Serialisierung einer Knotensequenz.&lt;br /&gt;
* &#039;&#039;Dynamik &amp;amp; Programmierung&#039;&#039;: Dynamische Modulimporte und XQuery-Auswertung, Locking für Knoten, Logging, MD5-Hashing, Zufallsgenerator, Funktionszeiger, Catch für Exceptions.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Cagle, Kurt (2006): I Think, Therefore I eXist ... . O’Reilly Media Inc., XML.com, [http://www.oreillynet.com/xml/blog/2006/09/i_think_therefore_i_exist.html Onlineartikel].&lt;br /&gt;
* Fielding, Roy T. (2000): Architectural Styles and the Design of Network-based Software Architectures. University of California, Irvine, [http://www.ics.uci.edu/~fielding/pubs/dissertation Onlineversion].&lt;br /&gt;
* Meier, Wolfgang (2003): eXist: An Open Source Native XML Database. Darmstadt University of Technology, [http://exist-db.org/webdb.pdf Onlineversion]. &lt;br /&gt;
* [http://exist.sourceforge.net/ SourceForge.net - eXist Open Source Native XML Database]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11883</id>
		<title>EXist</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11883"/>
		<updated>2008-07-01T23:32:05Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Leistungsumfang */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
Das Open-Source Projekt &#039;&#039;&#039;eXist&#039;&#039;&#039; bietet ein in Java implementiertes [[Datenbank-Management-System]] (DBMS), welches seine Daten nativ im [[XML]]-Datenmodell abspeichert und verwaltet. Es stützt sich ausschließlich auf freie W3C-Standards wie [[XML Query Language]] und [[XML Path Language]] als Abfragesprachen oder [[XSLT]] als Transformationssprache.&lt;br /&gt;
&lt;br /&gt;
Begründet wurde &#039;&#039;eXist&#039;&#039; 2000 durch Wolfgang Meier, der dessen Entwicklung seit 2001 auf dem Open-Source-Portal [http://exist.sourceforge.net SourceForge.net] gemeinschaftlich vorantreibt. Es steht unter der Lizenzierung der [[GNU Lesser General Public License]] (LGPL) und ist in diesem Rahmen also auch in kommerziellen Projekten als Datenbank-Backend frei nutzbar.&lt;br /&gt;
&lt;br /&gt;
=Leistungsumfang=&lt;br /&gt;
Die eXist XML-Datenbank implementiert eine breite Palette an offenen Webstandards, um ihre Leistungen zu erreichen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Persitieren&#039;&#039;: Optimiert für XML-Dokumente und XML-Daten sowie generell textuelle, multimediale Inhalte&lt;br /&gt;
* &#039;&#039;Selektion&#039;&#039;: XQuery 1.0 oder XPath 2.0&lt;br /&gt;
* &#039;&#039;Modifikation&#039;&#039;: XUpdate und Äquivalent zur XQuery Update Facility 1.0&lt;br /&gt;
* &#039;&#039;Transformation&#039;&#039;: XSLT 1.0 oder XSLT 2.0&lt;br /&gt;
* &#039;&#039;HTTP-Schnittstellen&#039;&#039;: REST, WebDAV, SOAP, XMLRPC, Atom Publishing&lt;br /&gt;
* &#039;&#039;Erweiterungen&#039;&#039;: XQuery Funktionsbibliotheken als Erweiterungsmodule&lt;br /&gt;
&lt;br /&gt;
==REST-Schnittstelle==&lt;br /&gt;
In Form eines Java-Servlets realisiert eXist eine Zugriffsschnittstelle, die sich am &#039;&#039;Representational State Transfer (REST)&#039;&#039; als Architekturstil für Hypermediasysteme anlehnt. Es veröffentlicht darüber den Verzeichnisbaum ihres Speicherbereichs unter einer Basis-URI. Befinden sich Anwendungsdateien z.B. unter dem Datenbankpfad &amp;lt;code&amp;gt;/cms/&amp;lt;/code&amp;gt;, so werden sie bei eXist standardmäßig über &amp;lt;code&amp;gt;http://host:port/exist/rest/db/cms/&amp;lt;/code&amp;gt; netzwerkweit mit einem HTTP-Client zugreifbar - selbstverständlich mit optionaler HTTP-Authentifizierung. Über die einzelnen HTTP-Methoden lassen sich auf solchen Datenbank-URIs verschiedene Operationen auslösen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;GET&#039;&#039;&#039;: Bezieht je nach HTTP-Header &#039;&#039;Content-Type&#039;&#039; eine passende Repräsentation des Datenbankobjekts (z.B. ”text/xml”). Übergibt man einen XQuery-Ausdruck als Request-Parameter &#039;&#039;_query&#039;&#039;, so wird stattdessen dieser ausgeführt und sein Resultat zurückgegeben. &lt;br /&gt;
* &#039;&#039;&#039;POST&#039;&#039;&#039;: Kann im POST-Inhalt eine für die GET-Variante zu lange XQuery enthalten, die in spezielle &#039;&#039;&amp;lt;exist:query&amp;gt;&#039;&#039;-Tags einzubetten ist und äquivalent zu &#039;&#039;_query&#039;&#039; behandelt wird. &lt;br /&gt;
* &#039;&#039;&#039;PUT&#039;&#039;&#039;: Speichert oder ersetzt ein Dokument als Datenbankobjekt, wobei der HTTP-Header &#039;&#039;Content-Type&#039;&#039; über das gewählte textuelle oder binäre Ablageformat entscheidet. &lt;br /&gt;
* &#039;&#039;&#039;DELETE&#039;&#039;&#039;: Entfernt das addressierte Objekt aus der Datenbank, falls existent.&lt;br /&gt;
&lt;br /&gt;
Ein Spezialverhalten weisen binär abgelegte XQuery-Dokumente (*.xql) auf, bei denen GET und POST direkt in der Auswertung ihres Inhalts resultieren. Dies erlaubt es über XQuery zusammengestellte Webseiten direkt auszuliefern oder z.B. Formularanfragen aus [[XForms]] zu bedienen.&lt;br /&gt;
&lt;br /&gt;
==XQuery-Erweiterungen==&lt;br /&gt;
Für die Umsetzung von Websystemen, die z.B. über die REST-Schnittstelle abgespeicherte XQuerys abfragen, bietet eXist einige nützliche Erweiterungen als XQuery-Funktionsbibliotheken. Neben recht speziellen Leistungen wie Emailversand, Datenkompression, Bilderverwaltung und mathematischen Funktionen sorgen HTTP-Kontextzugriff und Utility-Funktionen für den höchsten Mehrwert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HTTP-Kontextzugriff&#039;&#039;&#039;: Erlaubt das Auslesen und Manipulieren der im aktuellen HTTP-Kontext befindlichen Informationen.&lt;br /&gt;
* &#039;&#039;Request/Response&#039;&#039;: Setter &amp;amp; Getter für Header, Parameter, Attribute, Daten, Pfadinformationen, Statuscode und Cookies.&lt;br /&gt;
* &#039;&#039;Sessions&#039;&#039;: Lebenszyklusverwaltung sowie Setter &amp;amp; Getter für Attribute.&lt;br /&gt;
* &#039;&#039;Sonstiges&#039;&#039;: URL-Encoding &amp;amp; -Decoding, Redirects sowie Streaming von Binärdaten.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Utility-Funktionen&#039;&#039;&#039;: Nützliche Funktionen, die hauptsächlich die dynamische Datengenerierung, effiziente Datenverwaltung und funktionale Programmierung anreichern.&lt;br /&gt;
* &#039;&#039;Datenverwaltung&#039;&#039;: Einlesen von textuellen und binären Dokumenten, Umwandeln zwischen textuellen und binären Daten, Parsen zu logischem XML-Baum, Serialisierung einer Knotensequenz.&lt;br /&gt;
* &#039;&#039;Dynamik &amp;amp; Programmierung&#039;&#039;: Dynamische Modulimporte und XQuery-Auswertung, Locking für Knoten, Logging, MD5-Hashing, Zufallsgenerator, Funktionszeiger, Catch für Exceptions.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Cagle, Kurt (2006): I Think, Therefore I eXist ... . O’Reilly Media Inc., XML.com, [http://www.oreillynet.com/xml/blog/2006/09/i_think_therefore_i_exist.html Onlineartikel].&lt;br /&gt;
* Fielding, Roy T. (2000): Architectural Styles and the Design of Network-based Software Architectures. University of California, Irvine, [http://www.ics.uci.edu/~fielding/pubs/dissertation Onlineversion].&lt;br /&gt;
* Meier, Wolfgang (2003): eXist: An Open Source Native XML Database. Darmstadt University of Technology, [http://exist-db.org/webdb.pdf Onlineversion]. &lt;br /&gt;
* [http://exist.sourceforge.net/ SourceForge.net - eXist Open Source Native XML Database]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11882</id>
		<title>EXist</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11882"/>
		<updated>2008-07-01T23:29:48Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* XQuery-Erweiterungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
Das Open-Source Projekt &#039;&#039;&#039;eXist&#039;&#039;&#039; bietet ein in Java implementiertes [[Datenbank-Management-System]] (DBMS), welches seine Daten nativ im [[XML]]-Datenmodell abspeichert und verwaltet. Es stützt sich ausschließlich auf freie W3C-Standards wie [[XML Query Language]] und [[XML Path Language]] als Abfragesprachen oder [[XSLT]] als Transformationssprache.&lt;br /&gt;
&lt;br /&gt;
Begründet wurde &#039;&#039;eXist&#039;&#039; 2000 durch Wolfgang Meier, der dessen Entwicklung seit 2001 auf dem Open-Source-Portal [http://exist.sourceforge.net SourceForge.net] gemeinschaftlich vorantreibt. Es steht unter der Lizenzierung der [[GNU Lesser General Public License]] (LGPL) und ist in diesem Rahmen also auch in kommerziellen Projekten als Datenbank-Backend frei nutzbar.&lt;br /&gt;
&lt;br /&gt;
=Leistungsumfang=&lt;br /&gt;
Die eXist XML-Datenbank bietet eine breite Palette an Leistungen, die zumeist Webstandards umsetzen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Persitieren&#039;&#039;: Optimiert für XML-Dokumente und XML-Daten sowie generell textuelle, multimediale Inhalte&lt;br /&gt;
* &#039;&#039;Selektion&#039;&#039;: XQuery 1.0 oder XPath 2.0&lt;br /&gt;
* &#039;&#039;Modifikation&#039;&#039;: XUpdate und Äquivalent zur XQuery Update Facility 1.0&lt;br /&gt;
* &#039;&#039;Transformation&#039;&#039;: XSLT 1.0 oder XSLT 2.0&lt;br /&gt;
* &#039;&#039;HTTP-Schnittstellen&#039;&#039;: REST, WebDAV, SOAP, XMLRPC, Atom Publishing&lt;br /&gt;
* &#039;&#039;Erweiterungen&#039;&#039;: XQuery Funktionsbibliotheken als Erweiterungsmodule&lt;br /&gt;
&lt;br /&gt;
==REST-Schnittstelle==&lt;br /&gt;
In Form eines Java-Servlets realisiert eXist eine Zugriffsschnittstelle, die sich am &#039;&#039;Representational State Transfer (REST)&#039;&#039; als Architekturstil für Hypermediasysteme anlehnt. Es veröffentlicht darüber den Verzeichnisbaum ihres Speicherbereichs unter einer Basis-URI. Befinden sich Anwendungsdateien z.B. unter dem Datenbankpfad &amp;lt;code&amp;gt;/cms/&amp;lt;/code&amp;gt;, so werden sie bei eXist standardmäßig über &amp;lt;code&amp;gt;http://host:port/exist/rest/db/cms/&amp;lt;/code&amp;gt; netzwerkweit mit einem HTTP-Client zugreifbar - selbstverständlich mit optionaler HTTP-Authentifizierung. Über die einzelnen HTTP-Methoden lassen sich auf solchen Datenbank-URIs verschiedene Operationen auslösen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;GET&#039;&#039;&#039;: Bezieht je nach HTTP-Header &#039;&#039;Content-Type&#039;&#039; eine passende Repräsentation des Datenbankobjekts (z.B. ”text/xml”). Übergibt man einen XQuery-Ausdruck als Request-Parameter &#039;&#039;_query&#039;&#039;, so wird stattdessen dieser ausgeführt und sein Resultat zurückgegeben. &lt;br /&gt;
* &#039;&#039;&#039;POST&#039;&#039;&#039;: Kann im POST-Inhalt eine für die GET-Variante zu lange XQuery enthalten, die in spezielle &#039;&#039;&amp;lt;exist:query&amp;gt;&#039;&#039;-Tags einzubetten ist und äquivalent zu &#039;&#039;_query&#039;&#039; behandelt wird. &lt;br /&gt;
* &#039;&#039;&#039;PUT&#039;&#039;&#039;: Speichert oder ersetzt ein Dokument als Datenbankobjekt, wobei der HTTP-Header &#039;&#039;Content-Type&#039;&#039; über das gewählte textuelle oder binäre Ablageformat entscheidet. &lt;br /&gt;
* &#039;&#039;&#039;DELETE&#039;&#039;&#039;: Entfernt das addressierte Objekt aus der Datenbank, falls existent.&lt;br /&gt;
&lt;br /&gt;
Ein Spezialverhalten weisen binär abgelegte XQuery-Dokumente (*.xql) auf, bei denen GET und POST direkt in der Auswertung ihres Inhalts resultieren. Dies erlaubt es über XQuery zusammengestellte Webseiten direkt auszuliefern oder z.B. Formularanfragen aus [[XForms]] zu bedienen.&lt;br /&gt;
&lt;br /&gt;
==XQuery-Erweiterungen==&lt;br /&gt;
Für die Umsetzung von Websystemen, die z.B. über die REST-Schnittstelle abgespeicherte XQuerys abfragen, bietet eXist einige nützliche Erweiterungen als XQuery-Funktionsbibliotheken. Neben recht speziellen Leistungen wie Emailversand, Datenkompression, Bilderverwaltung und mathematischen Funktionen sorgen HTTP-Kontextzugriff und Utility-Funktionen für den höchsten Mehrwert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HTTP-Kontextzugriff&#039;&#039;&#039;: Erlaubt das Auslesen und Manipulieren der im aktuellen HTTP-Kontext befindlichen Informationen.&lt;br /&gt;
* &#039;&#039;Request/Response&#039;&#039;: Setter &amp;amp; Getter für Header, Parameter, Attribute, Daten, Pfadinformationen, Statuscode und Cookies.&lt;br /&gt;
* &#039;&#039;Sessions&#039;&#039;: Lebenszyklusverwaltung sowie Setter &amp;amp; Getter für Attribute.&lt;br /&gt;
* &#039;&#039;Sonstiges&#039;&#039;: URL-Encoding &amp;amp; -Decoding, Redirects sowie Streaming von Binärdaten.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Utility-Funktionen&#039;&#039;&#039;: Nützliche Funktionen, die hauptsächlich die dynamische Datengenerierung, effiziente Datenverwaltung und funktionale Programmierung anreichern.&lt;br /&gt;
* &#039;&#039;Datenverwaltung&#039;&#039;: Einlesen von textuellen und binären Dokumenten, Umwandeln zwischen textuellen und binären Daten, Parsen zu logischem XML-Baum, Serialisierung einer Knotensequenz.&lt;br /&gt;
* &#039;&#039;Dynamik &amp;amp; Programmierung&#039;&#039;: Dynamische Modulimporte und XQuery-Auswertung, Locking für Knoten, Logging, MD5-Hashing, Zufallsgenerator, Funktionszeiger, Catch für Exceptions.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Cagle, Kurt (2006): I Think, Therefore I eXist ... . O’Reilly Media Inc., XML.com, [http://www.oreillynet.com/xml/blog/2006/09/i_think_therefore_i_exist.html Onlineartikel].&lt;br /&gt;
* Fielding, Roy T. (2000): Architectural Styles and the Design of Network-based Software Architectures. University of California, Irvine, [http://www.ics.uci.edu/~fielding/pubs/dissertation Onlineversion].&lt;br /&gt;
* Meier, Wolfgang (2003): eXist: An Open Source Native XML Database. Darmstadt University of Technology, [http://exist-db.org/webdb.pdf Onlineversion]. &lt;br /&gt;
* [http://exist.sourceforge.net/ SourceForge.net - eXist Open Source Native XML Database]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11881</id>
		<title>EXist</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11881"/>
		<updated>2008-07-01T23:26:13Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* XQuery-Erweiterungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
Das Open-Source Projekt &#039;&#039;&#039;eXist&#039;&#039;&#039; bietet ein in Java implementiertes [[Datenbank-Management-System]] (DBMS), welches seine Daten nativ im [[XML]]-Datenmodell abspeichert und verwaltet. Es stützt sich ausschließlich auf freie W3C-Standards wie [[XML Query Language]] und [[XML Path Language]] als Abfragesprachen oder [[XSLT]] als Transformationssprache.&lt;br /&gt;
&lt;br /&gt;
Begründet wurde &#039;&#039;eXist&#039;&#039; 2000 durch Wolfgang Meier, der dessen Entwicklung seit 2001 auf dem Open-Source-Portal [http://exist.sourceforge.net SourceForge.net] gemeinschaftlich vorantreibt. Es steht unter der Lizenzierung der [[GNU Lesser General Public License]] (LGPL) und ist in diesem Rahmen also auch in kommerziellen Projekten als Datenbank-Backend frei nutzbar.&lt;br /&gt;
&lt;br /&gt;
=Leistungsumfang=&lt;br /&gt;
Die eXist XML-Datenbank bietet eine breite Palette an Leistungen, die zumeist Webstandards umsetzen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Persitieren&#039;&#039;: Optimiert für XML-Dokumente und XML-Daten sowie generell textuelle, multimediale Inhalte&lt;br /&gt;
* &#039;&#039;Selektion&#039;&#039;: XQuery 1.0 oder XPath 2.0&lt;br /&gt;
* &#039;&#039;Modifikation&#039;&#039;: XUpdate und Äquivalent zur XQuery Update Facility 1.0&lt;br /&gt;
* &#039;&#039;Transformation&#039;&#039;: XSLT 1.0 oder XSLT 2.0&lt;br /&gt;
* &#039;&#039;HTTP-Schnittstellen&#039;&#039;: REST, WebDAV, SOAP, XMLRPC, Atom Publishing&lt;br /&gt;
* &#039;&#039;Erweiterungen&#039;&#039;: XQuery Funktionsbibliotheken als Erweiterungsmodule&lt;br /&gt;
&lt;br /&gt;
==REST-Schnittstelle==&lt;br /&gt;
In Form eines Java-Servlets realisiert eXist eine Zugriffsschnittstelle, die sich am &#039;&#039;Representational State Transfer (REST)&#039;&#039; als Architekturstil für Hypermediasysteme anlehnt. Es veröffentlicht darüber den Verzeichnisbaum ihres Speicherbereichs unter einer Basis-URI. Befinden sich Anwendungsdateien z.B. unter dem Datenbankpfad &amp;lt;code&amp;gt;/cms/&amp;lt;/code&amp;gt;, so werden sie bei eXist standardmäßig über &amp;lt;code&amp;gt;http://host:port/exist/rest/db/cms/&amp;lt;/code&amp;gt; netzwerkweit mit einem HTTP-Client zugreifbar - selbstverständlich mit optionaler HTTP-Authentifizierung. Über die einzelnen HTTP-Methoden lassen sich auf solchen Datenbank-URIs verschiedene Operationen auslösen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;GET&#039;&#039;&#039;: Bezieht je nach HTTP-Header &#039;&#039;Content-Type&#039;&#039; eine passende Repräsentation des Datenbankobjekts (z.B. ”text/xml”). Übergibt man einen XQuery-Ausdruck als Request-Parameter &#039;&#039;_query&#039;&#039;, so wird stattdessen dieser ausgeführt und sein Resultat zurückgegeben. &lt;br /&gt;
* &#039;&#039;&#039;POST&#039;&#039;&#039;: Kann im POST-Inhalt eine für die GET-Variante zu lange XQuery enthalten, die in spezielle &#039;&#039;&amp;lt;exist:query&amp;gt;&#039;&#039;-Tags einzubetten ist und äquivalent zu &#039;&#039;_query&#039;&#039; behandelt wird. &lt;br /&gt;
* &#039;&#039;&#039;PUT&#039;&#039;&#039;: Speichert oder ersetzt ein Dokument als Datenbankobjekt, wobei der HTTP-Header &#039;&#039;Content-Type&#039;&#039; über das gewählte textuelle oder binäre Ablageformat entscheidet. &lt;br /&gt;
* &#039;&#039;&#039;DELETE&#039;&#039;&#039;: Entfernt das addressierte Objekt aus der Datenbank, falls existent.&lt;br /&gt;
&lt;br /&gt;
Ein Spezialverhalten weisen binär abgelegte XQuery-Dokumente (*.xql) auf, bei denen GET und POST direkt in der Auswertung ihres Inhalts resultieren. Dies erlaubt es über XQuery zusammengestellte Webseiten direkt auszuliefern oder z.B. Formularanfragen aus [[XForms]] zu bedienen.&lt;br /&gt;
&lt;br /&gt;
==XQuery-Erweiterungen==&lt;br /&gt;
Für die Umsetzung von Websystemen, die z.B. über die REST-Schnittstelle abgespeicherte XQuerys abfragen, bietet eXist einige nützliche Erweiterungen als XQuery-Funktionsbibliotheken. Neben recht speziellen Leistungen wie Emailversand, Datenkompression, Bilderverwaltung und mathematischen Funktionen bieten HTTP-Kontextzugriff und Utility-Funktionen wohl den höchsten Mehrwert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HTTP-Kontextzugriff&#039;&#039;&#039;: Erlaubt das Auslesen und Manipulieren der im aktuellen HTTP-Kontext befindlichen Informationen.&lt;br /&gt;
* &#039;&#039;Request/Response&#039;&#039;: Setter &amp;amp; Getter für Header, Parameter, Attribute, Daten, Pfadinformationen, Statuscode und Cookies.&lt;br /&gt;
* &#039;&#039;Sessions&#039;&#039;: Lebenszyklusverwaltung sowie Setter &amp;amp; Getter für Attribute.&lt;br /&gt;
* &#039;&#039;Sonstiges&#039;&#039;: URL-Encoding &amp;amp; -Decoding, Redirects sowie Streaming von Binärdaten.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Utility-Funktionen&#039;&#039;&#039;: Nützliche Funktionen, die hauptsächlich die dynamische Datengenerierung, effiziente Datenverwaltung und funktionale Programmierung anreichern.&lt;br /&gt;
* &#039;&#039;Datenverwaltung&#039;&#039;: Einlesen von textuellen und binären Dokumenten, Umwandeln zwischen textuellen und binären Daten, Parsen zu logischem XML-Baum, Serialisierung einer Knotensequenz.&lt;br /&gt;
* &#039;&#039;Dynamik &amp;amp; Programmierung&#039;&#039;: Dynamische Modulimporte und XQuery-Auswertung, Locking für Knoten, Logging, MD5-Hashing, Zufallsgenerator, Funktionszeiger, Catch für Exceptions.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Cagle, Kurt (2006): I Think, Therefore I eXist ... . O’Reilly Media Inc., XML.com, [http://www.oreillynet.com/xml/blog/2006/09/i_think_therefore_i_exist.html Onlineartikel].&lt;br /&gt;
* Fielding, Roy T. (2000): Architectural Styles and the Design of Network-based Software Architectures. University of California, Irvine, [http://www.ics.uci.edu/~fielding/pubs/dissertation Onlineversion].&lt;br /&gt;
* Meier, Wolfgang (2003): eXist: An Open Source Native XML Database. Darmstadt University of Technology, [http://exist-db.org/webdb.pdf Onlineversion]. &lt;br /&gt;
* [http://exist.sourceforge.net/ SourceForge.net - eXist Open Source Native XML Database]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11880</id>
		<title>EXist</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11880"/>
		<updated>2008-07-01T23:15:40Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Leistungsumfang */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
Das Open-Source Projekt &#039;&#039;&#039;eXist&#039;&#039;&#039; bietet ein in Java implementiertes [[Datenbank-Management-System]] (DBMS), welches seine Daten nativ im [[XML]]-Datenmodell abspeichert und verwaltet. Es stützt sich ausschließlich auf freie W3C-Standards wie [[XML Query Language]] und [[XML Path Language]] als Abfragesprachen oder [[XSLT]] als Transformationssprache.&lt;br /&gt;
&lt;br /&gt;
Begründet wurde &#039;&#039;eXist&#039;&#039; 2000 durch Wolfgang Meier, der dessen Entwicklung seit 2001 auf dem Open-Source-Portal [http://exist.sourceforge.net SourceForge.net] gemeinschaftlich vorantreibt. Es steht unter der Lizenzierung der [[GNU Lesser General Public License]] (LGPL) und ist in diesem Rahmen also auch in kommerziellen Projekten als Datenbank-Backend frei nutzbar.&lt;br /&gt;
&lt;br /&gt;
=Leistungsumfang=&lt;br /&gt;
Die eXist XML-Datenbank bietet eine breite Palette an Leistungen, die zumeist Webstandards umsetzen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Persitieren&#039;&#039;: Optimiert für XML-Dokumente und XML-Daten sowie generell textuelle, multimediale Inhalte&lt;br /&gt;
* &#039;&#039;Selektion&#039;&#039;: XQuery 1.0 oder XPath 2.0&lt;br /&gt;
* &#039;&#039;Modifikation&#039;&#039;: XUpdate und Äquivalent zur XQuery Update Facility 1.0&lt;br /&gt;
* &#039;&#039;Transformation&#039;&#039;: XSLT 1.0 oder XSLT 2.0&lt;br /&gt;
* &#039;&#039;HTTP-Schnittstellen&#039;&#039;: REST, WebDAV, SOAP, XMLRPC, Atom Publishing&lt;br /&gt;
* &#039;&#039;Erweiterungen&#039;&#039;: XQuery Funktionsbibliotheken als Erweiterungsmodule&lt;br /&gt;
&lt;br /&gt;
==REST-Schnittstelle==&lt;br /&gt;
In Form eines Java-Servlets realisiert eXist eine Zugriffsschnittstelle, die sich am &#039;&#039;Representational State Transfer (REST)&#039;&#039; als Architekturstil für Hypermediasysteme anlehnt. Es veröffentlicht darüber den Verzeichnisbaum ihres Speicherbereichs unter einer Basis-URI. Befinden sich Anwendungsdateien z.B. unter dem Datenbankpfad &amp;lt;code&amp;gt;/cms/&amp;lt;/code&amp;gt;, so werden sie bei eXist standardmäßig über &amp;lt;code&amp;gt;http://host:port/exist/rest/db/cms/&amp;lt;/code&amp;gt; netzwerkweit mit einem HTTP-Client zugreifbar - selbstverständlich mit optionaler HTTP-Authentifizierung. Über die einzelnen HTTP-Methoden lassen sich auf solchen Datenbank-URIs verschiedene Operationen auslösen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;GET&#039;&#039;&#039;: Bezieht je nach HTTP-Header &#039;&#039;Content-Type&#039;&#039; eine passende Repräsentation des Datenbankobjekts (z.B. ”text/xml”). Übergibt man einen XQuery-Ausdruck als Request-Parameter &#039;&#039;_query&#039;&#039;, so wird stattdessen dieser ausgeführt und sein Resultat zurückgegeben. &lt;br /&gt;
* &#039;&#039;&#039;POST&#039;&#039;&#039;: Kann im POST-Inhalt eine für die GET-Variante zu lange XQuery enthalten, die in spezielle &#039;&#039;&amp;lt;exist:query&amp;gt;&#039;&#039;-Tags einzubetten ist und äquivalent zu &#039;&#039;_query&#039;&#039; behandelt wird. &lt;br /&gt;
* &#039;&#039;&#039;PUT&#039;&#039;&#039;: Speichert oder ersetzt ein Dokument als Datenbankobjekt, wobei der HTTP-Header &#039;&#039;Content-Type&#039;&#039; über das gewählte textuelle oder binäre Ablageformat entscheidet. &lt;br /&gt;
* &#039;&#039;&#039;DELETE&#039;&#039;&#039;: Entfernt das addressierte Objekt aus der Datenbank, falls existent.&lt;br /&gt;
&lt;br /&gt;
Ein Spezialverhalten weisen binär abgelegte XQuery-Dokumente (*.xql) auf, bei denen GET und POST direkt in der Auswertung ihres Inhalts resultieren. Dies erlaubt es über XQuery zusammengestellte Webseiten direkt auszuliefern oder z.B. Formularanfragen aus [[XForms]] zu bedienen.&lt;br /&gt;
&lt;br /&gt;
==XQuery-Erweiterungen==&lt;br /&gt;
Für die Umsetzung von Websystemen z.B. über die REST-Schnittstelle angesteuerte XQuerys (*.xql) bietet eXist einige nahezu unverzichtbare XQuery-Funktionsbibliotheken an:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HTTP-Kontextzugriff&#039;&#039;&#039;: Erlaubt das Auslesen und Manipulieren der im aktuellen HTTP-Kontext befindlichen Informationen.&lt;br /&gt;
* &#039;&#039;Request/Response&#039;&#039;: Setter &amp;amp; Getter für Header, Parameter, Attribute, Daten, Pfadinformationen, Statuscode und Cookies.&lt;br /&gt;
* &#039;&#039;Sessions&#039;&#039;: Lebenszyklusverwaltung sowie Setter &amp;amp; Getter für Attribute.&lt;br /&gt;
* &#039;&#039;Sonstiges&#039;&#039;: URL-Encoding &amp;amp; -Decoding, Redirects sowie Streaming von Binärdaten.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Utility-Funktionen&#039;&#039;&#039;: Nützliche Funktionen, die hauptsächlich die dynamische Datengenerierung, effiziente Datenverwaltung und funktionale Programmierung anreichern.&lt;br /&gt;
* &#039;&#039;Datenverwaltung&#039;&#039;: Einlesen von textuellen und binären Dokumenten, Umwandeln zwischen textuellen und binären Daten, Parsen zu logischem XML-Baum, Serialisierung einer Knotensequenz.&lt;br /&gt;
* &#039;&#039;Dynamik &amp;amp; Programmierung&#039;&#039;: Dynamische Modulimporte und XQuery-Auswertung, Locking für Knoten, Logging, MD5-Hashing, Zufallsgenerator, Funktionszeiger, Catch für Exceptions.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Cagle, Kurt (2006): I Think, Therefore I eXist ... . O’Reilly Media Inc., XML.com, [http://www.oreillynet.com/xml/blog/2006/09/i_think_therefore_i_exist.html Onlineartikel].&lt;br /&gt;
* Fielding, Roy T. (2000): Architectural Styles and the Design of Network-based Software Architectures. University of California, Irvine, [http://www.ics.uci.edu/~fielding/pubs/dissertation Onlineversion].&lt;br /&gt;
* Meier, Wolfgang (2003): eXist: An Open Source Native XML Database. Darmstadt University of Technology, [http://exist-db.org/webdb.pdf Onlineversion]. &lt;br /&gt;
* [http://exist.sourceforge.net/ SourceForge.net - eXist Open Source Native XML Database]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11879</id>
		<title>EXist</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11879"/>
		<updated>2008-07-01T21:27:32Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Quellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
Das Open-Source Projekt &#039;&#039;&#039;eXist&#039;&#039;&#039; bietet ein in Java implementiertes [[Datenbank-Management-System]] (DBMS), welches seine Daten nativ im [[XML]]-Datenmodell abspeichert und verwaltet. Es stützt sich ausschließlich auf freie W3C-Standards wie [[XML Query Language]] und [[XML Path Language]] als Abfragesprachen oder [[XSLT]] als Transformationssprache.&lt;br /&gt;
&lt;br /&gt;
Begründet wurde &#039;&#039;eXist&#039;&#039; 2000 durch Wolfgang Meier, der dessen Entwicklung seit 2001 auf dem Open-Source-Portal [http://exist.sourceforge.net SourceForge.net] gemeinschaftlich vorantreibt. Es steht unter der Lizenzierung der [[GNU Lesser General Public License]] (LGPL) und ist in diesem Rahmen also auch in kommerziellen Projekten als Datenbank-Backend frei nutzbar.&lt;br /&gt;
&lt;br /&gt;
=Leistungsumfang=&lt;br /&gt;
Die eXist XML-Datenbank bietet folgende Leistungen an:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Persitieren&#039;&#039;: Optimiert für XML-Dokumente und XML-Daten sowie generell textuelle, multimediale Inhalte&lt;br /&gt;
* &#039;&#039;Selektion&#039;&#039;: XQuery 1.0 oder XPath 2.0&lt;br /&gt;
* &#039;&#039;Modifikation&#039;&#039;: XUpdate und Äquivalent zur XQuery Update Facility 1.0&lt;br /&gt;
* &#039;&#039;Transformation&#039;&#039;: XSLT 1.0 oder XSLT 2.0&lt;br /&gt;
* &#039;&#039;HTTP-Schnittstellen&#039;&#039;: REST, WebDAV, SOAP, XMLRPC, Atom Publishing&lt;br /&gt;
* &#039;&#039;Erweiterungen&#039;&#039;: XQuery Funktionsbibliotheken und Erweiterungsmodule&lt;br /&gt;
&lt;br /&gt;
==XQuery Erweiterungen==&lt;br /&gt;
&lt;br /&gt;
==REST Schnittstelle==&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Cagle, Kurt (2006): I Think, Therefore I eXist ... . O’Reilly Media Inc., XML.com, [http://www.oreillynet.com/xml/blog/2006/09/i_think_therefore_i_exist.html Onlineartikel].&lt;br /&gt;
* Fielding, Roy T. (2000): Architectural Styles and the Design of Network-based Software Architectures. University of California, Irvine, [http://www.ics.uci.edu/~fielding/pubs/dissertation Onlineversion].&lt;br /&gt;
* Meier, Wolfgang (2003): eXist: An Open Source Native XML Database. Darmstadt University of Technology, [http://exist-db.org/webdb.pdf Onlineversion]. &lt;br /&gt;
* [http://exist.sourceforge.net/ SourceForge.net - eXist Open Source Native XML Database]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11878</id>
		<title>EXist</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11878"/>
		<updated>2008-07-01T21:23:02Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* XQuery Funktionen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
Das Open-Source Projekt &#039;&#039;&#039;eXist&#039;&#039;&#039; bietet ein in Java implementiertes [[Datenbank-Management-System]] (DBMS), welches seine Daten nativ im [[XML]]-Datenmodell abspeichert und verwaltet. Es stützt sich ausschließlich auf freie W3C-Standards wie [[XML Query Language]] und [[XML Path Language]] als Abfragesprachen oder [[XSLT]] als Transformationssprache.&lt;br /&gt;
&lt;br /&gt;
Begründet wurde &#039;&#039;eXist&#039;&#039; 2000 durch Wolfgang Meier, der dessen Entwicklung seit 2001 auf dem Open-Source-Portal [http://exist.sourceforge.net SourceForge.net] gemeinschaftlich vorantreibt. Es steht unter der Lizenzierung der [[GNU Lesser General Public License]] (LGPL) und ist in diesem Rahmen also auch in kommerziellen Projekten als Datenbank-Backend frei nutzbar.&lt;br /&gt;
&lt;br /&gt;
=Leistungsumfang=&lt;br /&gt;
Die eXist XML-Datenbank bietet folgende Leistungen an:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Persitieren&#039;&#039;: Optimiert für XML-Dokumente und XML-Daten sowie generell textuelle, multimediale Inhalte&lt;br /&gt;
* &#039;&#039;Selektion&#039;&#039;: XQuery 1.0 oder XPath 2.0&lt;br /&gt;
* &#039;&#039;Modifikation&#039;&#039;: XUpdate und Äquivalent zur XQuery Update Facility 1.0&lt;br /&gt;
* &#039;&#039;Transformation&#039;&#039;: XSLT 1.0 oder XSLT 2.0&lt;br /&gt;
* &#039;&#039;HTTP-Schnittstellen&#039;&#039;: REST, WebDAV, SOAP, XMLRPC, Atom Publishing&lt;br /&gt;
* &#039;&#039;Erweiterungen&#039;&#039;: XQuery Funktionsbibliotheken und Erweiterungsmodule&lt;br /&gt;
&lt;br /&gt;
==XQuery Erweiterungen==&lt;br /&gt;
&lt;br /&gt;
==REST Schnittstelle==&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Cagle, Kurt (2006): I Think, Therefore I eXist ... . O’Reilly Media Inc., XML.com, [http://www.oreillynet.com/xml/blog/2006/09/i_think_therefore_i_exist.html Onlineartikel]&lt;br /&gt;
* Meier, Wolfgang (2003): eXist: An Open Source Native XML Database. Darmstadt University of Technology, [http://exist-db.org/webdb.pdf Onlineversion]. &lt;br /&gt;
* [http://exist.sourceforge.net/ SourceForge.net - eXist Open Source Native XML Database]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11877</id>
		<title>EXist</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=EXist&amp;diff=11877"/>
		<updated>2008-07-01T21:22:06Z</updated>

		<summary type="html">&lt;p&gt;FaPe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
Das Open-Source Projekt &#039;&#039;&#039;eXist&#039;&#039;&#039; bietet ein in Java implementiertes [[Datenbank-Management-System]] (DBMS), welches seine Daten nativ im [[XML]]-Datenmodell abspeichert und verwaltet. Es stützt sich ausschließlich auf freie W3C-Standards wie [[XML Query Language]] und [[XML Path Language]] als Abfragesprachen oder [[XSLT]] als Transformationssprache.&lt;br /&gt;
&lt;br /&gt;
Begründet wurde &#039;&#039;eXist&#039;&#039; 2000 durch Wolfgang Meier, der dessen Entwicklung seit 2001 auf dem Open-Source-Portal [http://exist.sourceforge.net SourceForge.net] gemeinschaftlich vorantreibt. Es steht unter der Lizenzierung der [[GNU Lesser General Public License]] (LGPL) und ist in diesem Rahmen also auch in kommerziellen Projekten als Datenbank-Backend frei nutzbar.&lt;br /&gt;
&lt;br /&gt;
=Leistungsumfang=&lt;br /&gt;
Die eXist XML-Datenbank bietet folgende Leistungen an:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Persitieren&#039;&#039;: Optimiert für XML-Dokumente und XML-Daten sowie generell textuelle, multimediale Inhalte&lt;br /&gt;
* &#039;&#039;Selektion&#039;&#039;: XQuery 1.0 oder XPath 2.0&lt;br /&gt;
* &#039;&#039;Modifikation&#039;&#039;: XUpdate und Äquivalent zur XQuery Update Facility 1.0&lt;br /&gt;
* &#039;&#039;Transformation&#039;&#039;: XSLT 1.0 oder XSLT 2.0&lt;br /&gt;
* &#039;&#039;HTTP-Schnittstellen&#039;&#039;: REST, WebDAV, SOAP, XMLRPC, Atom Publishing&lt;br /&gt;
* &#039;&#039;Erweiterungen&#039;&#039;: XQuery Funktionsbibliotheken und Erweiterungsmodule&lt;br /&gt;
&lt;br /&gt;
==XQuery Funktionen==&lt;br /&gt;
&lt;br /&gt;
==REST Schnittstelle==&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Cagle, Kurt (2006): I Think, Therefore I eXist ... . O’Reilly Media Inc., XML.com, [http://www.oreillynet.com/xml/blog/2006/09/i_think_therefore_i_exist.html Onlineartikel]&lt;br /&gt;
* Meier, Wolfgang (2003): eXist: An Open Source Native XML Database. Darmstadt University of Technology, [http://exist-db.org/webdb.pdf Onlineversion]. &lt;br /&gt;
* [http://exist.sourceforge.net/ SourceForge.net - eXist Open Source Native XML Database]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11876</id>
		<title>XForms</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11876"/>
		<updated>2008-07-01T19:46:22Z</updated>

		<summary type="html">&lt;p&gt;FaPe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition= &lt;br /&gt;
Die Beschreibungssprache &#039;&#039;&#039;XForms&#039;&#039;&#039; bietet eine deklarative Entwicklungsart für reichhaltige Webformulare, die XML als Transferformat akzeptieren und den Browser als Prozessknoten ausnutzen. Sie verspricht offensichtliche Schwächen der alten HTML-Formulargeneration zu beheben, ist nahtlos in gängige XML-Formate wie &#039;&#039;XHTML 1.0&#039;&#039; oder &#039;&#039;SVG&#039;&#039; integrierbar und wird nativer Bestandteil von &#039;&#039;XHTML 2.0&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
XForms wird im Rahmen des [http://www.w3.org W3C]-Konsortiums durch die &#039;&#039;Forms Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XForms 1.0&#039;&#039; trägt den finalen Status einer &#039;&#039;W3C Empfehlung&#039;&#039; und greift massiv auf [[XPath]] für Adressierung und Berechnungen zurück.&lt;br /&gt;
&lt;br /&gt;
=Designziele=&lt;br /&gt;
Bei XForms wurden aus den analysierten Schwächen von herkömmlichen HTML-Formularen einige Designziele abgeleitet:&lt;br /&gt;
&lt;br /&gt;
* Eine einfachere, barrierefreie Interpretation auf heterogenen Geräten durch Absichts- statt Präsentationsorientierung.&lt;br /&gt;
* Eine strukturierte Entwicklungsform über die Trennung von Formulardaten und Präsentation nach dem MVC-Pattern.&lt;br /&gt;
* Ein reichhaltigeres Datenmodell für die Speicherung und den Transfer von Formulardaten durch typisiertes XML.&lt;br /&gt;
* Eine dynamischere, interaktive Bedienoberfläche ohne Scripting-Aufwand durch eventgekoppelte Aktions- und Widgetelemente.&lt;br /&gt;
* Eine Entlastung für Server und Netz, indem der Browser als Prozessknoten bei Validierung und Berechnungen mitarbeitet.&lt;br /&gt;
&lt;br /&gt;
=Formularstruktur nach MVC=&lt;br /&gt;
Bei XForms werden die Formulardaten (&#039;&#039;Model&#039;&#039;) von den korrespondierenden Formularfeldern (&#039;&#039;View&#039;&#039;) separiert beschrieben - die Steuerlogik (&#039;&#039;Controller&#039;&#039;) realisiert ein XForms-Prozessor im Browser. Mit XHTML als Trägerformat kann folgende repräsentative Struktur befüllt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;br /&gt;
     xmlns:xf=&amp;quot;http://www.w3.org/2002/xforms&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;head&amp;gt;&lt;br /&gt;
         Beschreibung des XForms Model&lt;br /&gt;
     &amp;lt;/head&amp;gt;&lt;br /&gt;
     &amp;lt;body&amp;gt;&lt;br /&gt;
         Beschreibung der XForms View&lt;br /&gt;
     &amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Anschauungsbeispiel==&lt;br /&gt;
Als einführendes Beispiel wird nun für die Erklärung von Model- und View-Elementen eine primitive &#039;&#039;&#039;Preisauskunft&#039;&#039;&#039; für einen &#039;&#039;Produktkatalog&#039;&#039; konstruiert. Sie zeigt zu einer eingegebenen &#039;&#039;Produktnummer&#039;&#039; nach Betätigen des Formular-Buttons den &#039;&#039;Preis&#039;&#039; des Produktes an:&lt;br /&gt;
&lt;br /&gt;
[[Medium:Xforms_example.png]]&lt;br /&gt;
&lt;br /&gt;
==Model==&lt;br /&gt;
Das XForms &#039;&#039;&#039;Model&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:model&amp;gt;&#039;&#039;) beschreibt Daten und Aktionen, die zur Erbringung der Grundfunktion nötig aber unabhängig von einer konkreten Darstellung sind. Beim Modell zur &#039;&#039;Preisauskunft&#039;&#039; sind folgende Elemente von zentraler Bedeutung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:model&amp;gt;&lt;br /&gt;
    &amp;lt;xf:instance xmlns=&amp;quot;&amp;quot; id=&amp;quot;transfer&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;product num=&amp;quot;1337&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;price&amp;gt;99.99&amp;lt;/price&amp;gt;&lt;br /&gt;
        &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:instance&amp;gt;&lt;br /&gt;
    &amp;lt;xf:bind id=&amp;quot;num&amp;quot; nodeset=&amp;quot;/product/@num&amp;quot; required=&amp;quot;true()&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xf:submission id=&amp;quot;fetch&amp;quot; action=&amp;quot;prices.xql&amp;quot; method=&amp;quot;get&amp;quot;&lt;br /&gt;
        ref=&amp;quot;instance(&#039;transfer&#039;)&amp;quot; replace=&amp;quot;instance&amp;quot; instance=&amp;quot;transfer&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instanzen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:instance&amp;gt;&#039;&#039;): dienen als XML-Templates, die im Zuge der Formularbearbeitung gefüllt, dem Server zugeschickt oder von ihm empfangen und präsentiert werden. Der Server liest aus obigen Transferdaten später z.B. das gesetzte &#039;&#039;num&#039;&#039;-Attribut aus, befüllt entsprechend das &#039;&#039;price&#039;&#039;-Element und schickt alles zurück zum Formular.&lt;br /&gt;
* &#039;&#039;&#039;Übermittlungen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:submission&amp;gt;&#039;&#039;): legen Transferaktionen fest, die im Laufe der Formularbearbeitung initiiert werden. Attribute konfigurieren die Übermittlung: angesprochene URI (&#039;&#039;action&#039;&#039;), verwendete HTTP-Methode (&#039;&#039;method&#039;&#039;), mitzusendende XML-Daten (&#039;&#039;ref&#039;&#039;), was durch die Serverantwort ersetzt wird (&#039;&#039;replace&#039;&#039;) und wie hier bei Instanzersetzung die Zielauswahl (instance).&lt;br /&gt;
* &#039;&#039;&#039;Bindings&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:bind&amp;gt;&#039;&#039;): erlauben es mittels XPath (&#039;&#039;nodeset&#039;&#039;) Knoten aus den &#039;&#039;Instanzen&#039;&#039; auszuwählen und über Attribute an Sonderleistungen zu knüpfen: Festlegen eines Identifizierers (&#039;&#039;id&#039;&#039;), Ausweisen als verbindlich (&#039;&#039;required&#039;&#039;), Ausweisen als schreibgeschützt (&#039;&#039;readonly&#039;&#039;), Zuweisen eines Datentyps zur Validierung (&#039;&#039;type&#039;&#039;) oder Berechnung des Knoteninhalts über XPath (&#039;&#039;calculate&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==View==&lt;br /&gt;
Die XForms &#039;&#039;&#039;View&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:view&amp;gt;&#039;&#039;) bedient sich am vorbereiteten Datenmodell und setzt es in Steuerelemente um. Für das Modell zur &#039;&#039;Preisauskunft&#039;&#039; könnten dies mit einem Input-Feld, einem Output-Feld und einem Submit-Button geschehen, mit einigen Besonderheiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:group&amp;gt;&lt;br /&gt;
     &amp;lt;xf:label&amp;gt;Preisauskunft&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;xf:input bind=&amp;quot;num&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktnummer&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:input&amp;gt;	&lt;br /&gt;
     &amp;lt;xf:output ref=&amp;quot;/product/price&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktpreis&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:output&amp;gt;&lt;br /&gt;
     &amp;lt;submit submission=&amp;quot;fetch&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xf:label&amp;gt;Abfrage&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/submit&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:group&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Visuelle &#039;&#039;&#039;Gruppierung&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:group&amp;gt;&#039;&#039;): Steuerelemente lassen sich einfach als Gruppe hervorheben.&lt;br /&gt;
* &#039;&#039;&#039;Labels&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:label&amp;gt;&#039;&#039;): Feldbezeichnungen sind in XForms verpflichtend und direkt den Feldern als Kindelement zugeordnet.&lt;br /&gt;
* &#039;&#039;&#039;Widgets&#039;&#039;&#039;: Referenzieren die Modelldaten entweder über XPath-Ausdrücke mit (&#039;&#039;ref&#039;&#039; bei &#039;&#039;&amp;lt;xf:output&amp;gt;&#039;&#039;) oder über im Modell vorgegebene Identifizierer (&#039;&#039;bind&#039;&#039; &amp;amp; &#039;&#039;submission&#039;&#039; bei &#039;&#039;&amp;lt;xf:input&amp;gt;&#039;&#039; und &#039;&#039;&amp;lt;xf:submit&amp;gt;&#039;&#039;). Die erste Variante ist weniger sauber, da damit die referenzierte Instanzstruktur bekannt sein muss (engere Kopplung).&lt;br /&gt;
&lt;br /&gt;
=Absichtsorientierte Formularelemente=&lt;br /&gt;
&lt;br /&gt;
XForms interpretiert alle Steuerelemente streng absichts- und nicht präsentationsorientiert, um möglichst viele heterogene Endgeräte barrierefrei zu erreichen. Das bedeutet, dass ein Endgerät über die tatsächliche Darstellung entscheidet und so ein &#039;&#039;input&#039;&#039;-Feld für einen Datumsknoten z.B. in Browsern einen Kalender anbietet oder in blindengerechten Systemen einen Audiodialog formuliert. Das &#039;&#039;appearance&#039;&#039;-Attribut steht in allen Feldern zur Verfügung, um die Darstellungsabsicht abstrakt zu präzisieren: Eine Einzelauswahl (&#039;&#039;select1&#039;&#039;) wird damit in Browsern z.B. mit dem Wert &#039;&#039;full&#039;&#039; als Radio-Buttons, mit &#039;&#039;compact&#039;&#039; als List-Box oder mit &#039;&#039;minimal&#039;&#039; als Drop-Down-List dargestellt. Alle weiteren Details im Erscheinungsbild sind per CSS-Formatierung zu regeln. Die verfügbaren &#039;&#039;&#039;primitiven&#039;&#039;&#039; Widgets umfassen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;input&#039;&#039;: Eingabe von einzeiligem Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;secret&#039;&#039;: Eingabe von verdecktem Text wie Passwörter&lt;br /&gt;
* &#039;&#039;textarea&#039;&#039;: Eingabe von mehrzeiligem Text&lt;br /&gt;
* &#039;&#039;output&#039;&#039;: Ausgabe von Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;upload&#039;&#039;: Auswahlfeld für den Dateiupload&lt;br /&gt;
* &#039;&#039;range&#039;&#039;: Slider-Auswahl für einen Wertebereich&lt;br /&gt;
* &#039;&#039;trigger&#039;&#039;: Entspricht einem beliebigen Knopf&lt;br /&gt;
* &#039;&#039;submit&#039;&#039;: Entspricht einem Übermittlungsknopf&lt;br /&gt;
* &#039;&#039;select1&#039;&#039;: Liste zur Einzelauswahl&lt;br /&gt;
* &#039;&#039;select&#039;&#039;: Liste zur Mehrfachauswahl&lt;br /&gt;
&lt;br /&gt;
=Eventgetriebene Aktionen=&lt;br /&gt;
&lt;br /&gt;
Als &#039;&#039;&#039;Events&#039;&#039;&#039; kann XForms alle Ereignisse des [http://www.w3.org/DOM/Activity Document Object Model (DOM)] auswerten wie &#039;&#039;DOMActivate&#039;&#039;, das von der Auswahl eines Kontrollelements z.B. per Mouse-Click berichtet. XForms feuert auch eigene Ereignisse wie &#039;&#039;xforms-ready&#039;&#039; nach der Initialisierung, &#039;&#039;xforms-submit&#039;&#039; vor dem Ausführen einer Übermittlung oder &#039;&#039;xforms-value-changed&#039;&#039; vor dem Schreiben von Feldinhalten in das Datenmodell. Die Idee ist nun, dem Entwickler für solche Ereignisse Eingriffsmöglichkeiten als &#039;&#039;&#039;Aktions&#039;&#039;&#039;-Elemente bereitzustellen, wie z.B. &#039;&#039;&amp;lt;xf:message&amp;gt;&#039;&#039; zum Anzeigen einer Nachricht, &#039;&#039;&amp;lt;xf:setvalue&amp;gt;&#039;&#039; zum Setzen eines Instanzknotenwerts oder &#039;&#039;&amp;lt;xf:send&amp;gt;&#039;&#039; zum Starten einer Übermittlung. Mehrere Aktionen können in einer &#039;&#039;&amp;lt;xf:action&amp;gt;&#039;&#039; gruppiert und fortan wie eine Einzelaktion behandelt werden. Um eine Aktion an ein Event zu binden, setzt man schlicht ihr Attribut &#039;&#039;ev:event&#039;&#039; auf den Ereignissnamen. Eine Erweiterung zum &#039;&#039;Model&#039;&#039; der &#039;&#039;Preisauskunft&#039;&#039; setzt z.B. nach der Initialisierung Nummer und Preis auf 0 und zeigt einen modalen Dialog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;xf:model&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;xf:action ev:event=&amp;quot;xforms-ready&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xf:setvalue ref=&amp;quot;/product/price&amp;quot; value=&amp;quot;0.00&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xf:setvalue bind=&amp;quot;num&amp;quot;&amp;gt;0&amp;lt;/xf:setvalue&amp;gt;&lt;br /&gt;
            &amp;lt;xf:message level=&amp;quot;modal&amp;quot;&amp;gt;&lt;br /&gt;
                Tragen Sie bitte eine Produktnummer ein!&lt;br /&gt;
            &amp;lt;/xf:message&amp;gt;&lt;br /&gt;
        &amp;lt;/xf:action&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit einigen speziell entworfenen dynamischen &#039;&#039;&#039;Widgets&#039;&#039;&#039; wie einem &#039;&#039;Tab-Control&#039;&#039;-Mechanismus (&#039;&#039;&amp;lt;xf:switch&amp;gt;&#039;&#039;) lässt sich damit zusammen mit dem Einsatz von Aktionen, Events und XPath-Berechnungen der Scripting-Einsatz oft komplett vermeiden.&lt;br /&gt;
&lt;br /&gt;
=Standardisierungsgeschichte=&lt;br /&gt;
* 10/2001: &#039;&#039;XML Events - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 08/2002: &#039;&#039;XForms 1.0 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 11/2003: &#039;&#039;XForms 1.0 - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 01/2004: &#039;&#039;XForms 1.1 - W3C Requirements&#039;&#039;&lt;br /&gt;
* 11/2004: &#039;&#039;XForms 1.1 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 10/2005: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Proposed Recommendation&#039;&#039;&lt;br /&gt;
* 03/2006: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 10/2007: &#039;&#039;XForms 1.0 (3rd Edition) -  W3C Recommendation&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Dubinko, Micah (2003): XForms Essentials. O’Reilly Media Inc., ISBN 0596003692.&lt;br /&gt;
* [http://www.w3.org/TR/xforms W3C - XForms 1.0 (Third Edition)]&lt;br /&gt;
* [http://www.w3.org/MarkUp/Forms W3C - The Forms Working Group]&lt;br /&gt;
* [http://www.w3schools.com/xforms W3Schools.com - XForms Tutorial]&lt;br /&gt;
* [http://www.w3.org/DOM/Activity W3C - Document Object Model Activity Statement]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Xforms Wikipedia - XForms]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11874</id>
		<title>XForms</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11874"/>
		<updated>2008-07-01T18:42:16Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Quellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition= &lt;br /&gt;
Die Beschreibungssprache &#039;&#039;&#039;XForms&#039;&#039;&#039; bietet eine deklarative Entwicklungsart für reichhaltige Webformulare, die XML als Transferformat akzeptieren und den Browser als Prozessknoten ausnutzen. Sie verspricht offensichtliche Schwächen der alten HTML-Formulargeneration zu beheben, ist nahtlos in gängige XML-Formate wie &#039;&#039;XHTML 1.0&#039;&#039; oder &#039;&#039;SVG&#039;&#039; integrierbar und wird nativer Bestandteil von &#039;&#039;XHTML 2.0&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
XForms wird im Rahmen des [http://www.w3.org W3C]-Konsortiums durch die &#039;&#039;Forms Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XForms 1.0&#039;&#039; trägt den finalen Status einer &#039;&#039;W3C Empfehlung&#039;&#039; und greift massiv auf [[XPath]] für Adressierung und Berechnungen zurück.&lt;br /&gt;
&lt;br /&gt;
=Designziele=&lt;br /&gt;
Bei XForms wurden aus den analysierten Schwächen von herkömmlichen HTML-Formularen einige Designziele abgeleitet:&lt;br /&gt;
&lt;br /&gt;
* Eine einfachere, barrierefreie Interpretation auf heterogenen Geräten durch Absichts- statt Präsentationsorientierung.&lt;br /&gt;
* Eine strukturierte Entwicklungsform über die Trennung von Formulardaten und Präsentation nach dem MVC-Pattern.&lt;br /&gt;
* Ein reichhaltigeres Datenmodell für die Speicherung und den Transfer von Formulardaten durch typisiertes XML.&lt;br /&gt;
* Eine dynamischere, interaktive Bedienoberfläche ohne Scripting-Aufwand durch eventgekoppelte Aktions- und Widgetelemente.&lt;br /&gt;
* Eine Entlastung für Server und Netz, indem der Browser als Prozessknoten bei Validierung und Berechnungen mitarbeitet.&lt;br /&gt;
&lt;br /&gt;
=Formularstruktur nach MVC=&lt;br /&gt;
Bei XForms werden die Formulardaten (&#039;&#039;Model&#039;&#039;) von den korrespondierenden Formularfeldern (&#039;&#039;View&#039;&#039;) separiert beschrieben - die Steuerlogik (&#039;&#039;Controller&#039;&#039;) realisiert ein XForms-Prozessor im Browser. Mit XHTML als Trägerformat kann folgende repräsentative Struktur befüllt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;br /&gt;
     xmlns:xf=&amp;quot;http://www.w3.org/2002/xforms&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;head&amp;gt;&lt;br /&gt;
         Beschreibung des XForms Model&lt;br /&gt;
     &amp;lt;/head&amp;gt;&lt;br /&gt;
     &amp;lt;body&amp;gt;&lt;br /&gt;
         Beschreibung der XForms View&lt;br /&gt;
     &amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Anschauungsbeispiel einer Preisauskunft==&lt;br /&gt;
Als einführendes Beispiel wird nun für die Erklärung von Model- und View-Elementen eine primitive &#039;&#039;&#039;Preisauskunft&#039;&#039;&#039; für einen &#039;&#039;Produktkatalog&#039;&#039; konstruiert. Sie zeigt zu einer eingegebenen &#039;&#039;Produktnummer&#039;&#039; nach Betätigen des Formular-Buttons den &#039;&#039;Preis&#039;&#039; des Produktes an:&lt;br /&gt;
&lt;br /&gt;
[[Medium:Xforms_example.png]]&lt;br /&gt;
&lt;br /&gt;
==Model==&lt;br /&gt;
Das XForms &#039;&#039;&#039;Model&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:model&amp;gt;&#039;&#039;) beschreibt Daten und Aktionen, die zur Erbringung der Grundfunktion nötig aber unabhängig von einer konkreten Darstellung sind. Beim Modell zur &#039;&#039;Preisauskunft&#039;&#039; sind folgende Elemente von zentraler Bedeutung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:model&amp;gt;&lt;br /&gt;
    &amp;lt;xf:instance xmlns=&amp;quot;&amp;quot; id=&amp;quot;transfer&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;product num=&amp;quot;1337&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;price&amp;gt;99.99&amp;lt;/price&amp;gt;&lt;br /&gt;
        &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:instance&amp;gt;&lt;br /&gt;
    &amp;lt;xf:bind id=&amp;quot;num&amp;quot; nodeset=&amp;quot;/product/@num&amp;quot; required=&amp;quot;true()&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xf:submission id=&amp;quot;fetch&amp;quot; action=&amp;quot;prices.xql&amp;quot; method=&amp;quot;get&amp;quot;&lt;br /&gt;
        ref=&amp;quot;instance(&#039;transfer&#039;)&amp;quot; replace=&amp;quot;instance&amp;quot; instance=&amp;quot;transfer&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instanzen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:instance&amp;gt;&#039;&#039;): dienen als XML-Templates, die im Zuge der Formularbearbeitung gefüllt, dem Server zugeschickt oder von ihm empfangen und präsentiert werden. Der Server liest aus obigen Transferdaten später z.B. das gesetzte &#039;&#039;num&#039;&#039;-Attribut aus, befüllt entsprechend das &#039;&#039;price&#039;&#039;-Element und schickt alles zurück zum Formular.&lt;br /&gt;
* &#039;&#039;&#039;Übermittlungen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:submission&amp;gt;&#039;&#039;): legen Transferaktionen fest, die im Laufe der Formularbearbeitung initiiert werden. Attribute konfigurieren die Übermittlung: angesprochene URI (&#039;&#039;action&#039;&#039;), verwendete HTTP-Methode (&#039;&#039;method&#039;&#039;), mitzusendende XML-Daten (&#039;&#039;ref&#039;&#039;), was durch die Serverantwort ersetzt wird (&#039;&#039;replace&#039;&#039;) und wie hier bei Instanzersetzung die Zielauswahl (instance).&lt;br /&gt;
* &#039;&#039;&#039;Bindings&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:bind&amp;gt;&#039;&#039;): erlauben es mittels XPath (&#039;&#039;nodeset&#039;&#039;) Knoten aus den &#039;&#039;Instanzen&#039;&#039; auszuwählen und über Attribute an Sonderleistungen zu knüpfen: Festlegen eines Identifizierers (&#039;&#039;id&#039;&#039;), Ausweisen als verbindlich (&#039;&#039;required&#039;&#039;), Ausweisen als schreibgeschützt (&#039;&#039;readonly&#039;&#039;), Zuweisen eines Datentyps zur Validierung (&#039;&#039;type&#039;&#039;) oder Berechnung des Knoteninhalts über XPath (&#039;&#039;calculate&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==View==&lt;br /&gt;
Die XForms &#039;&#039;&#039;View&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:view&amp;gt;&#039;&#039;) bedient sich am vorbereiteten Datenmodell und setzt es in Steuerelemente um. Für das Modell zur &#039;&#039;Preisauskunft&#039;&#039; könnten dies mit einem Input-Feld, einem Output-Feld und einem Submit-Button geschehen, mit einigen Besonderheiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:group&amp;gt;&lt;br /&gt;
     &amp;lt;xf:label&amp;gt;Preisauskunft&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;xf:input bind=&amp;quot;num&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktnummer&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:input&amp;gt;	&lt;br /&gt;
     &amp;lt;xf:output ref=&amp;quot;/product/price&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktpreis&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:output&amp;gt;&lt;br /&gt;
     &amp;lt;submit submission=&amp;quot;fetch&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xf:label&amp;gt;Abfrage&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/submit&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:group&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Visuelle &#039;&#039;&#039;Gruppierung&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:group&amp;gt;&#039;&#039;): Steuerelemente lassen sich einfach als Gruppe hervorheben.&lt;br /&gt;
* &#039;&#039;&#039;Labels&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:label&amp;gt;&#039;&#039;): Feldbezeichnungen sind in XForms verpflichtend und direkt den Feldern als Kindelement zugeordnet.&lt;br /&gt;
* &#039;&#039;&#039;Widgets&#039;&#039;&#039;: Referenzieren die Modelldaten entweder über XPath-Ausdrücke mit (&#039;&#039;ref&#039;&#039; bei &#039;&#039;&amp;lt;xf:output&amp;gt;&#039;&#039;) oder über im Modell vorgegebene Identifizierer (&#039;&#039;bind&#039;&#039; &amp;amp; &#039;&#039;submission&#039;&#039; bei &#039;&#039;&amp;lt;xf:input&amp;gt;&#039;&#039; und &#039;&#039;&amp;lt;xf:submit&amp;gt;&#039;&#039;). Die erste Variante ist weniger sauber, da damit die referenzierte Instanzstruktur bekannt sein muss (engere Kopplung).&lt;br /&gt;
&lt;br /&gt;
=Absichtsorientierte Formularelemente=&lt;br /&gt;
&lt;br /&gt;
XForms interpretiert alle Steuerelemente streng absichts- und nicht präsentationsorientiert, um möglichst viele heterogene Endgeräte barrierefrei zu erreichen. Das bedeutet, dass ein Endgerät über die tatsächliche Darstellung entscheidet und so ein &#039;&#039;input&#039;&#039;-Feld für einen Datumsknoten z.B. in Browsern einen Kalender anbietet oder in blindengerechten Systemen einen Audiodialog formuliert. Das &#039;&#039;appearance&#039;&#039;-Attribut steht in allen Feldern zur Verfügung, um die Darstellungsabsicht abstrakt zu präzisieren: Eine Einzelauswahl (&#039;&#039;select1&#039;&#039;) wird damit in Browsern z.B. mit dem Wert &#039;&#039;full&#039;&#039; als Radio-Buttons, mit &#039;&#039;compact&#039;&#039; als List-Box oder mit &#039;&#039;minimal&#039;&#039; als Drop-Down-List dargestellt. Alle weiteren Details im Erscheinungsbild sind per CSS-Formatierung zu regeln. Die verfügbaren &#039;&#039;&#039;primitiven&#039;&#039;&#039; Widgets umfassen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;input&#039;&#039;: Eingabe von einzeiligem Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;secret&#039;&#039;: Eingabe von verdecktem Text wie Passwörter&lt;br /&gt;
* &#039;&#039;textarea&#039;&#039;: Eingabe von mehrzeiligem Text&lt;br /&gt;
* &#039;&#039;output&#039;&#039;: Ausgabe von Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;upload&#039;&#039;: Auswahlfeld für den Dateiupload&lt;br /&gt;
* &#039;&#039;range&#039;&#039;: Slider-Auswahl für einen Wertebereich&lt;br /&gt;
* &#039;&#039;trigger&#039;&#039;: Entspricht einem beliebigen Knopf&lt;br /&gt;
* &#039;&#039;submit&#039;&#039;: Entspricht einem Übermittlungsknopf&lt;br /&gt;
* &#039;&#039;select1&#039;&#039;: Liste zur Einzelauswahl&lt;br /&gt;
* &#039;&#039;select&#039;&#039;: Liste zur Mehrfachauswahl&lt;br /&gt;
&lt;br /&gt;
=Eventgetriebene Aktionen=&lt;br /&gt;
&lt;br /&gt;
Als &#039;&#039;&#039;Events&#039;&#039;&#039; kann XForms alle Ereignisse des [http://www.w3.org/DOM/Activity Document Object Model (DOM)] auswerten wie &#039;&#039;DOMActivate&#039;&#039;, das von der Auswahl eines Kontrollelements z.B. per Mouse-Click berichtet. XForms feuert auch eigene Ereignisse wie &#039;&#039;xforms-ready&#039;&#039; nach der Initialisierung, &#039;&#039;xforms-submit&#039;&#039; vor dem Ausführen einer Übermittlung oder &#039;&#039;xforms-value-changed&#039;&#039; vor dem Schreiben von Feldinhalten in das Datenmodell. Die Idee ist nun, dem Entwickler für solche Ereignisse Eingriffsmöglichkeiten als &#039;&#039;&#039;Aktions&#039;&#039;&#039;-Elemente bereitzustellen, wie z.B. &#039;&#039;&amp;lt;xf:message&amp;gt;&#039;&#039; zum Anzeigen einer Nachricht, &#039;&#039;&amp;lt;xf:setvalue&amp;gt;&#039;&#039; zum Setzen eines Instanzknotenwerts oder &#039;&#039;&amp;lt;xf:send&amp;gt;&#039;&#039; zum Starten einer Übermittlung. Mehrere Aktionen können in einer &#039;&#039;&amp;lt;xf:action&amp;gt;&#039;&#039; gruppiert und fortan wie eine Einzelaktion behandelt werden. Um eine Aktion an ein Event zu binden, setzt man schlicht ihr Attribut &#039;&#039;ev:event&#039;&#039; auf den Ereignissnamen. Eine Erweiterung zum &#039;&#039;Model&#039;&#039; der &#039;&#039;Preisauskunft&#039;&#039; setzt z.B. nach der Initialisierung Nummer und Preis auf 0 und zeigt einen modalen Dialog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;xf:model&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;xf:action ev:event=&amp;quot;xforms-ready&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xf:setvalue ref=&amp;quot;/product/price&amp;quot; value=&amp;quot;0.00&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xf:setvalue bind=&amp;quot;num&amp;quot;&amp;gt;0&amp;lt;/xf:setvalue&amp;gt;&lt;br /&gt;
            &amp;lt;xf:message level=&amp;quot;modal&amp;quot;&amp;gt;&lt;br /&gt;
                Tragen Sie bitte eine Produktnummer ein!&lt;br /&gt;
            &amp;lt;/xf:message&amp;gt;&lt;br /&gt;
        &amp;lt;/xf:action&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit einigen speziell entworfenen dynamischen &#039;&#039;&#039;Widgets&#039;&#039;&#039; wie einem &#039;&#039;Tab-Control&#039;&#039;-Mechanismus (&#039;&#039;&amp;lt;xf:switch&amp;gt;&#039;&#039;) lässt sich damit zusammen mit dem Einsatz von Aktionen, Events und XPath-Berechnungen der Scripting-Einsatz oft komplett vermeiden.&lt;br /&gt;
&lt;br /&gt;
=Standardisierungsgeschichte=&lt;br /&gt;
* 10/2001: &#039;&#039;XML Events - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 08/2002: &#039;&#039;XForms 1.0 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 11/2003: &#039;&#039;XForms 1.0 - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 01/2004: &#039;&#039;XForms 1.1 - W3C Requirements&#039;&#039;&lt;br /&gt;
* 11/2004: &#039;&#039;XForms 1.1 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 10/2005: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Proposed Recommendation&#039;&#039;&lt;br /&gt;
* 03/2006: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 10/2007: &#039;&#039;XForms 1.0 (3rd Edition) -  W3C Recommendation&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Dubinko, Micah (2003): XForms Essentials. O’Reilly Media Inc., ISBN 0596003692.&lt;br /&gt;
* [http://www.w3.org/TR/xforms W3C - XForms 1.0 (Third Edition)]&lt;br /&gt;
* [http://www.w3.org/MarkUp/Forms W3C - The Forms Working Group]&lt;br /&gt;
* [http://www.w3schools.com/xforms W3Schools.com - XForms Tutorial]&lt;br /&gt;
* [http://www.w3.org/DOM/Activity W3C - Document Object Model Activity Statement]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Xforms Wikipedia - XForms]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11873</id>
		<title>XForms</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11873"/>
		<updated>2008-07-01T18:41:45Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Quellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition= &lt;br /&gt;
Die Beschreibungssprache &#039;&#039;&#039;XForms&#039;&#039;&#039; bietet eine deklarative Entwicklungsart für reichhaltige Webformulare, die XML als Transferformat akzeptieren und den Browser als Prozessknoten ausnutzen. Sie verspricht offensichtliche Schwächen der alten HTML-Formulargeneration zu beheben, ist nahtlos in gängige XML-Formate wie &#039;&#039;XHTML 1.0&#039;&#039; oder &#039;&#039;SVG&#039;&#039; integrierbar und wird nativer Bestandteil von &#039;&#039;XHTML 2.0&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
XForms wird im Rahmen des [http://www.w3.org W3C]-Konsortiums durch die &#039;&#039;Forms Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XForms 1.0&#039;&#039; trägt den finalen Status einer &#039;&#039;W3C Empfehlung&#039;&#039; und greift massiv auf [[XPath]] für Adressierung und Berechnungen zurück.&lt;br /&gt;
&lt;br /&gt;
=Designziele=&lt;br /&gt;
Bei XForms wurden aus den analysierten Schwächen von herkömmlichen HTML-Formularen einige Designziele abgeleitet:&lt;br /&gt;
&lt;br /&gt;
* Eine einfachere, barrierefreie Interpretation auf heterogenen Geräten durch Absichts- statt Präsentationsorientierung.&lt;br /&gt;
* Eine strukturierte Entwicklungsform über die Trennung von Formulardaten und Präsentation nach dem MVC-Pattern.&lt;br /&gt;
* Ein reichhaltigeres Datenmodell für die Speicherung und den Transfer von Formulardaten durch typisiertes XML.&lt;br /&gt;
* Eine dynamischere, interaktive Bedienoberfläche ohne Scripting-Aufwand durch eventgekoppelte Aktions- und Widgetelemente.&lt;br /&gt;
* Eine Entlastung für Server und Netz, indem der Browser als Prozessknoten bei Validierung und Berechnungen mitarbeitet.&lt;br /&gt;
&lt;br /&gt;
=Formularstruktur nach MVC=&lt;br /&gt;
Bei XForms werden die Formulardaten (&#039;&#039;Model&#039;&#039;) von den korrespondierenden Formularfeldern (&#039;&#039;View&#039;&#039;) separiert beschrieben - die Steuerlogik (&#039;&#039;Controller&#039;&#039;) realisiert ein XForms-Prozessor im Browser. Mit XHTML als Trägerformat kann folgende repräsentative Struktur befüllt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;br /&gt;
     xmlns:xf=&amp;quot;http://www.w3.org/2002/xforms&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;head&amp;gt;&lt;br /&gt;
         Beschreibung des XForms Model&lt;br /&gt;
     &amp;lt;/head&amp;gt;&lt;br /&gt;
     &amp;lt;body&amp;gt;&lt;br /&gt;
         Beschreibung der XForms View&lt;br /&gt;
     &amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Anschauungsbeispiel einer Preisauskunft==&lt;br /&gt;
Als einführendes Beispiel wird nun für die Erklärung von Model- und View-Elementen eine primitive &#039;&#039;&#039;Preisauskunft&#039;&#039;&#039; für einen &#039;&#039;Produktkatalog&#039;&#039; konstruiert. Sie zeigt zu einer eingegebenen &#039;&#039;Produktnummer&#039;&#039; nach Betätigen des Formular-Buttons den &#039;&#039;Preis&#039;&#039; des Produktes an:&lt;br /&gt;
&lt;br /&gt;
[[Medium:Xforms_example.png]]&lt;br /&gt;
&lt;br /&gt;
==Model==&lt;br /&gt;
Das XForms &#039;&#039;&#039;Model&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:model&amp;gt;&#039;&#039;) beschreibt Daten und Aktionen, die zur Erbringung der Grundfunktion nötig aber unabhängig von einer konkreten Darstellung sind. Beim Modell zur &#039;&#039;Preisauskunft&#039;&#039; sind folgende Elemente von zentraler Bedeutung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:model&amp;gt;&lt;br /&gt;
    &amp;lt;xf:instance xmlns=&amp;quot;&amp;quot; id=&amp;quot;transfer&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;product num=&amp;quot;1337&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;price&amp;gt;99.99&amp;lt;/price&amp;gt;&lt;br /&gt;
        &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:instance&amp;gt;&lt;br /&gt;
    &amp;lt;xf:bind id=&amp;quot;num&amp;quot; nodeset=&amp;quot;/product/@num&amp;quot; required=&amp;quot;true()&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xf:submission id=&amp;quot;fetch&amp;quot; action=&amp;quot;prices.xql&amp;quot; method=&amp;quot;get&amp;quot;&lt;br /&gt;
        ref=&amp;quot;instance(&#039;transfer&#039;)&amp;quot; replace=&amp;quot;instance&amp;quot; instance=&amp;quot;transfer&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instanzen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:instance&amp;gt;&#039;&#039;): dienen als XML-Templates, die im Zuge der Formularbearbeitung gefüllt, dem Server zugeschickt oder von ihm empfangen und präsentiert werden. Der Server liest aus obigen Transferdaten später z.B. das gesetzte &#039;&#039;num&#039;&#039;-Attribut aus, befüllt entsprechend das &#039;&#039;price&#039;&#039;-Element und schickt alles zurück zum Formular.&lt;br /&gt;
* &#039;&#039;&#039;Übermittlungen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:submission&amp;gt;&#039;&#039;): legen Transferaktionen fest, die im Laufe der Formularbearbeitung initiiert werden. Attribute konfigurieren die Übermittlung: angesprochene URI (&#039;&#039;action&#039;&#039;), verwendete HTTP-Methode (&#039;&#039;method&#039;&#039;), mitzusendende XML-Daten (&#039;&#039;ref&#039;&#039;), was durch die Serverantwort ersetzt wird (&#039;&#039;replace&#039;&#039;) und wie hier bei Instanzersetzung die Zielauswahl (instance).&lt;br /&gt;
* &#039;&#039;&#039;Bindings&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:bind&amp;gt;&#039;&#039;): erlauben es mittels XPath (&#039;&#039;nodeset&#039;&#039;) Knoten aus den &#039;&#039;Instanzen&#039;&#039; auszuwählen und über Attribute an Sonderleistungen zu knüpfen: Festlegen eines Identifizierers (&#039;&#039;id&#039;&#039;), Ausweisen als verbindlich (&#039;&#039;required&#039;&#039;), Ausweisen als schreibgeschützt (&#039;&#039;readonly&#039;&#039;), Zuweisen eines Datentyps zur Validierung (&#039;&#039;type&#039;&#039;) oder Berechnung des Knoteninhalts über XPath (&#039;&#039;calculate&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==View==&lt;br /&gt;
Die XForms &#039;&#039;&#039;View&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:view&amp;gt;&#039;&#039;) bedient sich am vorbereiteten Datenmodell und setzt es in Steuerelemente um. Für das Modell zur &#039;&#039;Preisauskunft&#039;&#039; könnten dies mit einem Input-Feld, einem Output-Feld und einem Submit-Button geschehen, mit einigen Besonderheiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:group&amp;gt;&lt;br /&gt;
     &amp;lt;xf:label&amp;gt;Preisauskunft&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;xf:input bind=&amp;quot;num&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktnummer&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:input&amp;gt;	&lt;br /&gt;
     &amp;lt;xf:output ref=&amp;quot;/product/price&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktpreis&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:output&amp;gt;&lt;br /&gt;
     &amp;lt;submit submission=&amp;quot;fetch&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xf:label&amp;gt;Abfrage&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/submit&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:group&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Visuelle &#039;&#039;&#039;Gruppierung&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:group&amp;gt;&#039;&#039;): Steuerelemente lassen sich einfach als Gruppe hervorheben.&lt;br /&gt;
* &#039;&#039;&#039;Labels&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:label&amp;gt;&#039;&#039;): Feldbezeichnungen sind in XForms verpflichtend und direkt den Feldern als Kindelement zugeordnet.&lt;br /&gt;
* &#039;&#039;&#039;Widgets&#039;&#039;&#039;: Referenzieren die Modelldaten entweder über XPath-Ausdrücke mit (&#039;&#039;ref&#039;&#039; bei &#039;&#039;&amp;lt;xf:output&amp;gt;&#039;&#039;) oder über im Modell vorgegebene Identifizierer (&#039;&#039;bind&#039;&#039; &amp;amp; &#039;&#039;submission&#039;&#039; bei &#039;&#039;&amp;lt;xf:input&amp;gt;&#039;&#039; und &#039;&#039;&amp;lt;xf:submit&amp;gt;&#039;&#039;). Die erste Variante ist weniger sauber, da damit die referenzierte Instanzstruktur bekannt sein muss (engere Kopplung).&lt;br /&gt;
&lt;br /&gt;
=Absichtsorientierte Formularelemente=&lt;br /&gt;
&lt;br /&gt;
XForms interpretiert alle Steuerelemente streng absichts- und nicht präsentationsorientiert, um möglichst viele heterogene Endgeräte barrierefrei zu erreichen. Das bedeutet, dass ein Endgerät über die tatsächliche Darstellung entscheidet und so ein &#039;&#039;input&#039;&#039;-Feld für einen Datumsknoten z.B. in Browsern einen Kalender anbietet oder in blindengerechten Systemen einen Audiodialog formuliert. Das &#039;&#039;appearance&#039;&#039;-Attribut steht in allen Feldern zur Verfügung, um die Darstellungsabsicht abstrakt zu präzisieren: Eine Einzelauswahl (&#039;&#039;select1&#039;&#039;) wird damit in Browsern z.B. mit dem Wert &#039;&#039;full&#039;&#039; als Radio-Buttons, mit &#039;&#039;compact&#039;&#039; als List-Box oder mit &#039;&#039;minimal&#039;&#039; als Drop-Down-List dargestellt. Alle weiteren Details im Erscheinungsbild sind per CSS-Formatierung zu regeln. Die verfügbaren &#039;&#039;&#039;primitiven&#039;&#039;&#039; Widgets umfassen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;input&#039;&#039;: Eingabe von einzeiligem Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;secret&#039;&#039;: Eingabe von verdecktem Text wie Passwörter&lt;br /&gt;
* &#039;&#039;textarea&#039;&#039;: Eingabe von mehrzeiligem Text&lt;br /&gt;
* &#039;&#039;output&#039;&#039;: Ausgabe von Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;upload&#039;&#039;: Auswahlfeld für den Dateiupload&lt;br /&gt;
* &#039;&#039;range&#039;&#039;: Slider-Auswahl für einen Wertebereich&lt;br /&gt;
* &#039;&#039;trigger&#039;&#039;: Entspricht einem beliebigen Knopf&lt;br /&gt;
* &#039;&#039;submit&#039;&#039;: Entspricht einem Übermittlungsknopf&lt;br /&gt;
* &#039;&#039;select1&#039;&#039;: Liste zur Einzelauswahl&lt;br /&gt;
* &#039;&#039;select&#039;&#039;: Liste zur Mehrfachauswahl&lt;br /&gt;
&lt;br /&gt;
=Eventgetriebene Aktionen=&lt;br /&gt;
&lt;br /&gt;
Als &#039;&#039;&#039;Events&#039;&#039;&#039; kann XForms alle Ereignisse des [http://www.w3.org/DOM/Activity Document Object Model (DOM)] auswerten wie &#039;&#039;DOMActivate&#039;&#039;, das von der Auswahl eines Kontrollelements z.B. per Mouse-Click berichtet. XForms feuert auch eigene Ereignisse wie &#039;&#039;xforms-ready&#039;&#039; nach der Initialisierung, &#039;&#039;xforms-submit&#039;&#039; vor dem Ausführen einer Übermittlung oder &#039;&#039;xforms-value-changed&#039;&#039; vor dem Schreiben von Feldinhalten in das Datenmodell. Die Idee ist nun, dem Entwickler für solche Ereignisse Eingriffsmöglichkeiten als &#039;&#039;&#039;Aktions&#039;&#039;&#039;-Elemente bereitzustellen, wie z.B. &#039;&#039;&amp;lt;xf:message&amp;gt;&#039;&#039; zum Anzeigen einer Nachricht, &#039;&#039;&amp;lt;xf:setvalue&amp;gt;&#039;&#039; zum Setzen eines Instanzknotenwerts oder &#039;&#039;&amp;lt;xf:send&amp;gt;&#039;&#039; zum Starten einer Übermittlung. Mehrere Aktionen können in einer &#039;&#039;&amp;lt;xf:action&amp;gt;&#039;&#039; gruppiert und fortan wie eine Einzelaktion behandelt werden. Um eine Aktion an ein Event zu binden, setzt man schlicht ihr Attribut &#039;&#039;ev:event&#039;&#039; auf den Ereignissnamen. Eine Erweiterung zum &#039;&#039;Model&#039;&#039; der &#039;&#039;Preisauskunft&#039;&#039; setzt z.B. nach der Initialisierung Nummer und Preis auf 0 und zeigt einen modalen Dialog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;xf:model&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;xf:action ev:event=&amp;quot;xforms-ready&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xf:setvalue ref=&amp;quot;/product/price&amp;quot; value=&amp;quot;0.00&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xf:setvalue bind=&amp;quot;num&amp;quot;&amp;gt;0&amp;lt;/xf:setvalue&amp;gt;&lt;br /&gt;
            &amp;lt;xf:message level=&amp;quot;modal&amp;quot;&amp;gt;&lt;br /&gt;
                Tragen Sie bitte eine Produktnummer ein!&lt;br /&gt;
            &amp;lt;/xf:message&amp;gt;&lt;br /&gt;
        &amp;lt;/xf:action&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit einigen speziell entworfenen dynamischen &#039;&#039;&#039;Widgets&#039;&#039;&#039; wie einem &#039;&#039;Tab-Control&#039;&#039;-Mechanismus (&#039;&#039;&amp;lt;xf:switch&amp;gt;&#039;&#039;) lässt sich damit zusammen mit dem Einsatz von Aktionen, Events und XPath-Berechnungen der Scripting-Einsatz oft komplett vermeiden.&lt;br /&gt;
&lt;br /&gt;
=Standardisierungsgeschichte=&lt;br /&gt;
* 10/2001: &#039;&#039;XML Events - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 08/2002: &#039;&#039;XForms 1.0 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 11/2003: &#039;&#039;XForms 1.0 - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 01/2004: &#039;&#039;XForms 1.1 - W3C Requirements&#039;&#039;&lt;br /&gt;
* 11/2004: &#039;&#039;XForms 1.1 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 10/2005: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Proposed Recommendation&#039;&#039;&lt;br /&gt;
* 03/2006: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 10/2007: &#039;&#039;XForms 1.0 (3rd Edition) -  W3C Recommendation&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Dubinko, Micah (2003): XForms Essentials. O’Reilly Media Inc., ISBN 0596003692.&lt;br /&gt;
* [http://www.w3.org/TR/xforms W3C - XForms 1.0 (Third Edition)]&lt;br /&gt;
* [http://www.w3.org/DOM/Activity W3C - Document Object Model Activity Statement]&lt;br /&gt;
* [http://www.w3.org/MarkUp/Forms W3C - The Forms Working Group]&lt;br /&gt;
* [http://www.w3schools.com/xforms W3Schools.com - XForms Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Xforms Wikipedia - XForms]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11872</id>
		<title>XForms</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11872"/>
		<updated>2008-07-01T18:13:06Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Anschauungsbeispiel einer Preisauskunft */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition= &lt;br /&gt;
Die Beschreibungssprache &#039;&#039;&#039;XForms&#039;&#039;&#039; bietet eine deklarative Entwicklungsart für reichhaltige Webformulare, die XML als Transferformat akzeptieren und den Browser als Prozessknoten ausnutzen. Sie verspricht offensichtliche Schwächen der alten HTML-Formulargeneration zu beheben, ist nahtlos in gängige XML-Formate wie &#039;&#039;XHTML 1.0&#039;&#039; oder &#039;&#039;SVG&#039;&#039; integrierbar und wird nativer Bestandteil von &#039;&#039;XHTML 2.0&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
XForms wird im Rahmen des [http://www.w3.org W3C]-Konsortiums durch die &#039;&#039;Forms Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XForms 1.0&#039;&#039; trägt den finalen Status einer &#039;&#039;W3C Empfehlung&#039;&#039; und greift massiv auf [[XPath]] für Adressierung und Berechnungen zurück.&lt;br /&gt;
&lt;br /&gt;
=Designziele=&lt;br /&gt;
Bei XForms wurden aus den analysierten Schwächen von herkömmlichen HTML-Formularen einige Designziele abgeleitet:&lt;br /&gt;
&lt;br /&gt;
* Eine einfachere, barrierefreie Interpretation auf heterogenen Geräten durch Absichts- statt Präsentationsorientierung.&lt;br /&gt;
* Eine strukturierte Entwicklungsform über die Trennung von Formulardaten und Präsentation nach dem MVC-Pattern.&lt;br /&gt;
* Ein reichhaltigeres Datenmodell für die Speicherung und den Transfer von Formulardaten durch typisiertes XML.&lt;br /&gt;
* Eine dynamischere, interaktive Bedienoberfläche ohne Scripting-Aufwand durch eventgekoppelte Aktions- und Widgetelemente.&lt;br /&gt;
* Eine Entlastung für Server und Netz, indem der Browser als Prozessknoten bei Validierung und Berechnungen mitarbeitet.&lt;br /&gt;
&lt;br /&gt;
=Formularstruktur nach MVC=&lt;br /&gt;
Bei XForms werden die Formulardaten (&#039;&#039;Model&#039;&#039;) von den korrespondierenden Formularfeldern (&#039;&#039;View&#039;&#039;) separiert beschrieben - die Steuerlogik (&#039;&#039;Controller&#039;&#039;) realisiert ein XForms-Prozessor im Browser. Mit XHTML als Trägerformat kann folgende repräsentative Struktur befüllt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;br /&gt;
     xmlns:xf=&amp;quot;http://www.w3.org/2002/xforms&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;head&amp;gt;&lt;br /&gt;
         Beschreibung des XForms Model&lt;br /&gt;
     &amp;lt;/head&amp;gt;&lt;br /&gt;
     &amp;lt;body&amp;gt;&lt;br /&gt;
         Beschreibung der XForms View&lt;br /&gt;
     &amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Anschauungsbeispiel einer Preisauskunft==&lt;br /&gt;
Als einführendes Beispiel wird nun für die Erklärung von Model- und View-Elementen eine primitive &#039;&#039;&#039;Preisauskunft&#039;&#039;&#039; für einen &#039;&#039;Produktkatalog&#039;&#039; konstruiert. Sie zeigt zu einer eingegebenen &#039;&#039;Produktnummer&#039;&#039; nach Betätigen des Formular-Buttons den &#039;&#039;Preis&#039;&#039; des Produktes an:&lt;br /&gt;
&lt;br /&gt;
[[Medium:Xforms_example.png]]&lt;br /&gt;
&lt;br /&gt;
==Model==&lt;br /&gt;
Das XForms &#039;&#039;&#039;Model&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:model&amp;gt;&#039;&#039;) beschreibt Daten und Aktionen, die zur Erbringung der Grundfunktion nötig aber unabhängig von einer konkreten Darstellung sind. Beim Modell zur &#039;&#039;Preisauskunft&#039;&#039; sind folgende Elemente von zentraler Bedeutung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:model&amp;gt;&lt;br /&gt;
    &amp;lt;xf:instance xmlns=&amp;quot;&amp;quot; id=&amp;quot;transfer&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;product num=&amp;quot;1337&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;price&amp;gt;99.99&amp;lt;/price&amp;gt;&lt;br /&gt;
        &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:instance&amp;gt;&lt;br /&gt;
    &amp;lt;xf:bind id=&amp;quot;num&amp;quot; nodeset=&amp;quot;/product/@num&amp;quot; required=&amp;quot;true()&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xf:submission id=&amp;quot;fetch&amp;quot; action=&amp;quot;prices.xql&amp;quot; method=&amp;quot;get&amp;quot;&lt;br /&gt;
        ref=&amp;quot;instance(&#039;transfer&#039;)&amp;quot; replace=&amp;quot;instance&amp;quot; instance=&amp;quot;transfer&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instanzen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:instance&amp;gt;&#039;&#039;): dienen als XML-Templates, die im Zuge der Formularbearbeitung gefüllt, dem Server zugeschickt oder von ihm empfangen und präsentiert werden. Der Server liest aus obigen Transferdaten später z.B. das gesetzte &#039;&#039;num&#039;&#039;-Attribut aus, befüllt entsprechend das &#039;&#039;price&#039;&#039;-Element und schickt alles zurück zum Formular.&lt;br /&gt;
* &#039;&#039;&#039;Übermittlungen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:submission&amp;gt;&#039;&#039;): legen Transferaktionen fest, die im Laufe der Formularbearbeitung initiiert werden. Attribute konfigurieren die Übermittlung: angesprochene URI (&#039;&#039;action&#039;&#039;), verwendete HTTP-Methode (&#039;&#039;method&#039;&#039;), mitzusendende XML-Daten (&#039;&#039;ref&#039;&#039;), was durch die Serverantwort ersetzt wird (&#039;&#039;replace&#039;&#039;) und wie hier bei Instanzersetzung die Zielauswahl (instance).&lt;br /&gt;
* &#039;&#039;&#039;Bindings&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:bind&amp;gt;&#039;&#039;): erlauben es mittels XPath (&#039;&#039;nodeset&#039;&#039;) Knoten aus den &#039;&#039;Instanzen&#039;&#039; auszuwählen und über Attribute an Sonderleistungen zu knüpfen: Festlegen eines Identifizierers (&#039;&#039;id&#039;&#039;), Ausweisen als verbindlich (&#039;&#039;required&#039;&#039;), Ausweisen als schreibgeschützt (&#039;&#039;readonly&#039;&#039;), Zuweisen eines Datentyps zur Validierung (&#039;&#039;type&#039;&#039;) oder Berechnung des Knoteninhalts über XPath (&#039;&#039;calculate&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==View==&lt;br /&gt;
Die XForms &#039;&#039;&#039;View&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:view&amp;gt;&#039;&#039;) bedient sich am vorbereiteten Datenmodell und setzt es in Steuerelemente um. Für das Modell zur &#039;&#039;Preisauskunft&#039;&#039; könnten dies mit einem Input-Feld, einem Output-Feld und einem Submit-Button geschehen, mit einigen Besonderheiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:group&amp;gt;&lt;br /&gt;
     &amp;lt;xf:label&amp;gt;Preisauskunft&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;xf:input bind=&amp;quot;num&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktnummer&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:input&amp;gt;	&lt;br /&gt;
     &amp;lt;xf:output ref=&amp;quot;/product/price&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktpreis&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:output&amp;gt;&lt;br /&gt;
     &amp;lt;submit submission=&amp;quot;fetch&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xf:label&amp;gt;Abfrage&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/submit&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:group&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Visuelle &#039;&#039;&#039;Gruppierung&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:group&amp;gt;&#039;&#039;): Steuerelemente lassen sich einfach als Gruppe hervorheben.&lt;br /&gt;
* &#039;&#039;&#039;Labels&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:label&amp;gt;&#039;&#039;): Feldbezeichnungen sind in XForms verpflichtend und direkt den Feldern als Kindelement zugeordnet.&lt;br /&gt;
* &#039;&#039;&#039;Widgets&#039;&#039;&#039;: Referenzieren die Modelldaten entweder über XPath-Ausdrücke mit (&#039;&#039;ref&#039;&#039; bei &#039;&#039;&amp;lt;xf:output&amp;gt;&#039;&#039;) oder über im Modell vorgegebene Identifizierer (&#039;&#039;bind&#039;&#039; &amp;amp; &#039;&#039;submission&#039;&#039; bei &#039;&#039;&amp;lt;xf:input&amp;gt;&#039;&#039; und &#039;&#039;&amp;lt;xf:submit&amp;gt;&#039;&#039;). Die erste Variante ist weniger sauber, da damit die referenzierte Instanzstruktur bekannt sein muss (engere Kopplung).&lt;br /&gt;
&lt;br /&gt;
=Absichtsorientierte Formularelemente=&lt;br /&gt;
&lt;br /&gt;
XForms interpretiert alle Steuerelemente streng absichts- und nicht präsentationsorientiert, um möglichst viele heterogene Endgeräte barrierefrei zu erreichen. Das bedeutet, dass ein Endgerät über die tatsächliche Darstellung entscheidet und so ein &#039;&#039;input&#039;&#039;-Feld für einen Datumsknoten z.B. in Browsern einen Kalender anbietet oder in blindengerechten Systemen einen Audiodialog formuliert. Das &#039;&#039;appearance&#039;&#039;-Attribut steht in allen Feldern zur Verfügung, um die Darstellungsabsicht abstrakt zu präzisieren: Eine Einzelauswahl (&#039;&#039;select1&#039;&#039;) wird damit in Browsern z.B. mit dem Wert &#039;&#039;full&#039;&#039; als Radio-Buttons, mit &#039;&#039;compact&#039;&#039; als List-Box oder mit &#039;&#039;minimal&#039;&#039; als Drop-Down-List dargestellt. Alle weiteren Details im Erscheinungsbild sind per CSS-Formatierung zu regeln. Die verfügbaren &#039;&#039;&#039;primitiven&#039;&#039;&#039; Widgets umfassen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;input&#039;&#039;: Eingabe von einzeiligem Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;secret&#039;&#039;: Eingabe von verdecktem Text wie Passwörter&lt;br /&gt;
* &#039;&#039;textarea&#039;&#039;: Eingabe von mehrzeiligem Text&lt;br /&gt;
* &#039;&#039;output&#039;&#039;: Ausgabe von Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;upload&#039;&#039;: Auswahlfeld für den Dateiupload&lt;br /&gt;
* &#039;&#039;range&#039;&#039;: Slider-Auswahl für einen Wertebereich&lt;br /&gt;
* &#039;&#039;trigger&#039;&#039;: Entspricht einem beliebigen Knopf&lt;br /&gt;
* &#039;&#039;submit&#039;&#039;: Entspricht einem Übermittlungsknopf&lt;br /&gt;
* &#039;&#039;select1&#039;&#039;: Liste zur Einzelauswahl&lt;br /&gt;
* &#039;&#039;select&#039;&#039;: Liste zur Mehrfachauswahl&lt;br /&gt;
&lt;br /&gt;
=Eventgetriebene Aktionen=&lt;br /&gt;
&lt;br /&gt;
Als &#039;&#039;&#039;Events&#039;&#039;&#039; kann XForms alle Ereignisse des [http://www.w3.org/DOM/Activity Document Object Model (DOM)] auswerten wie &#039;&#039;DOMActivate&#039;&#039;, das von der Auswahl eines Kontrollelements z.B. per Mouse-Click berichtet. XForms feuert auch eigene Ereignisse wie &#039;&#039;xforms-ready&#039;&#039; nach der Initialisierung, &#039;&#039;xforms-submit&#039;&#039; vor dem Ausführen einer Übermittlung oder &#039;&#039;xforms-value-changed&#039;&#039; vor dem Schreiben von Feldinhalten in das Datenmodell. Die Idee ist nun, dem Entwickler für solche Ereignisse Eingriffsmöglichkeiten als &#039;&#039;&#039;Aktions&#039;&#039;&#039;-Elemente bereitzustellen, wie z.B. &#039;&#039;&amp;lt;xf:message&amp;gt;&#039;&#039; zum Anzeigen einer Nachricht, &#039;&#039;&amp;lt;xf:setvalue&amp;gt;&#039;&#039; zum Setzen eines Instanzknotenwerts oder &#039;&#039;&amp;lt;xf:send&amp;gt;&#039;&#039; zum Starten einer Übermittlung. Mehrere Aktionen können in einer &#039;&#039;&amp;lt;xf:action&amp;gt;&#039;&#039; gruppiert und fortan wie eine Einzelaktion behandelt werden. Um eine Aktion an ein Event zu binden, setzt man schlicht ihr Attribut &#039;&#039;ev:event&#039;&#039; auf den Ereignissnamen. Eine Erweiterung zum &#039;&#039;Model&#039;&#039; der &#039;&#039;Preisauskunft&#039;&#039; setzt z.B. nach der Initialisierung Nummer und Preis auf 0 und zeigt einen modalen Dialog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;xf:model&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;xf:action ev:event=&amp;quot;xforms-ready&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xf:setvalue ref=&amp;quot;/product/price&amp;quot; value=&amp;quot;0.00&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xf:setvalue bind=&amp;quot;num&amp;quot;&amp;gt;0&amp;lt;/xf:setvalue&amp;gt;&lt;br /&gt;
            &amp;lt;xf:message level=&amp;quot;modal&amp;quot;&amp;gt;&lt;br /&gt;
                Tragen Sie bitte eine Produktnummer ein!&lt;br /&gt;
            &amp;lt;/xf:message&amp;gt;&lt;br /&gt;
        &amp;lt;/xf:action&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit einigen speziell entworfenen dynamischen &#039;&#039;&#039;Widgets&#039;&#039;&#039; wie einem &#039;&#039;Tab-Control&#039;&#039;-Mechanismus (&#039;&#039;&amp;lt;xf:switch&amp;gt;&#039;&#039;) lässt sich damit zusammen mit dem Einsatz von Aktionen, Events und XPath-Berechnungen der Scripting-Einsatz oft komplett vermeiden.&lt;br /&gt;
&lt;br /&gt;
=Standardisierungsgeschichte=&lt;br /&gt;
* 10/2001: &#039;&#039;XML Events - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 08/2002: &#039;&#039;XForms 1.0 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 11/2003: &#039;&#039;XForms 1.0 - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 01/2004: &#039;&#039;XForms 1.1 - W3C Requirements&#039;&#039;&lt;br /&gt;
* 11/2004: &#039;&#039;XForms 1.1 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 10/2005: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Proposed Recommendation&#039;&#039;&lt;br /&gt;
* 03/2006: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 10/2007: &#039;&#039;XForms 1.0 (3rd Edition) -  W3C Recommendation&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Dubinko, Micah (2003): XForms Essentials. O’Reilly Media Inc., ISBN 0596003692.&lt;br /&gt;
* [http://www.w3.org/TR/xforms W3C - XForms 1.0 (Third Edition)]&lt;br /&gt;
* [http://www.w3.org/MarkUp/Forms W3C - The Forms Working Group]&lt;br /&gt;
* [http://www.w3schools.com/xforms W3Schools.com - XForms Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Xforms Wikipedia - XForms]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11871</id>
		<title>XForms</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11871"/>
		<updated>2008-07-01T18:11:23Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Eventgetriebene Aktionen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition= &lt;br /&gt;
Die Beschreibungssprache &#039;&#039;&#039;XForms&#039;&#039;&#039; bietet eine deklarative Entwicklungsart für reichhaltige Webformulare, die XML als Transferformat akzeptieren und den Browser als Prozessknoten ausnutzen. Sie verspricht offensichtliche Schwächen der alten HTML-Formulargeneration zu beheben, ist nahtlos in gängige XML-Formate wie &#039;&#039;XHTML 1.0&#039;&#039; oder &#039;&#039;SVG&#039;&#039; integrierbar und wird nativer Bestandteil von &#039;&#039;XHTML 2.0&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
XForms wird im Rahmen des [http://www.w3.org W3C]-Konsortiums durch die &#039;&#039;Forms Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XForms 1.0&#039;&#039; trägt den finalen Status einer &#039;&#039;W3C Empfehlung&#039;&#039; und greift massiv auf [[XPath]] für Adressierung und Berechnungen zurück.&lt;br /&gt;
&lt;br /&gt;
=Designziele=&lt;br /&gt;
Bei XForms wurden aus den analysierten Schwächen von herkömmlichen HTML-Formularen einige Designziele abgeleitet:&lt;br /&gt;
&lt;br /&gt;
* Eine einfachere, barrierefreie Interpretation auf heterogenen Geräten durch Absichts- statt Präsentationsorientierung.&lt;br /&gt;
* Eine strukturierte Entwicklungsform über die Trennung von Formulardaten und Präsentation nach dem MVC-Pattern.&lt;br /&gt;
* Ein reichhaltigeres Datenmodell für die Speicherung und den Transfer von Formulardaten durch typisiertes XML.&lt;br /&gt;
* Eine dynamischere, interaktive Bedienoberfläche ohne Scripting-Aufwand durch eventgekoppelte Aktions- und Widgetelemente.&lt;br /&gt;
* Eine Entlastung für Server und Netz, indem der Browser als Prozessknoten bei Validierung und Berechnungen mitarbeitet.&lt;br /&gt;
&lt;br /&gt;
=Formularstruktur nach MVC=&lt;br /&gt;
Bei XForms werden die Formulardaten (&#039;&#039;Model&#039;&#039;) von den korrespondierenden Formularfeldern (&#039;&#039;View&#039;&#039;) separiert beschrieben - die Steuerlogik (&#039;&#039;Controller&#039;&#039;) realisiert ein XForms-Prozessor im Browser. Mit XHTML als Trägerformat kann folgende repräsentative Struktur befüllt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;br /&gt;
     xmlns:xf=&amp;quot;http://www.w3.org/2002/xforms&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;head&amp;gt;&lt;br /&gt;
         Beschreibung des XForms Model&lt;br /&gt;
     &amp;lt;/head&amp;gt;&lt;br /&gt;
     &amp;lt;body&amp;gt;&lt;br /&gt;
         Beschreibung der XForms View&lt;br /&gt;
     &amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Anschauungsbeispiel einer Preisauskunft==&lt;br /&gt;
Als einführendes Beispiel wird nun für die Erklärung von Model- und View-Elementen eine primitive &#039;&#039;&#039;Preisauskunft&#039;&#039;&#039; für einen &#039;&#039;Produktkatalog&#039;&#039; konstruiert. Sie zeigt zu einer eingegebenen &#039;&#039;Produktnummer&#039;&#039; nach betätigen des Formular-Buttons den &#039;&#039;Preis&#039;&#039; des Produktes an:&lt;br /&gt;
&lt;br /&gt;
[[Medium:Xforms_example.png]]&lt;br /&gt;
&lt;br /&gt;
==Model==&lt;br /&gt;
Das XForms &#039;&#039;&#039;Model&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:model&amp;gt;&#039;&#039;) beschreibt Daten und Aktionen, die zur Erbringung der Grundfunktion nötig aber unabhängig von einer konkreten Darstellung sind. Beim Modell zur &#039;&#039;Preisauskunft&#039;&#039; sind folgende Elemente von zentraler Bedeutung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:model&amp;gt;&lt;br /&gt;
    &amp;lt;xf:instance xmlns=&amp;quot;&amp;quot; id=&amp;quot;transfer&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;product num=&amp;quot;1337&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;price&amp;gt;99.99&amp;lt;/price&amp;gt;&lt;br /&gt;
        &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:instance&amp;gt;&lt;br /&gt;
    &amp;lt;xf:bind id=&amp;quot;num&amp;quot; nodeset=&amp;quot;/product/@num&amp;quot; required=&amp;quot;true()&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xf:submission id=&amp;quot;fetch&amp;quot; action=&amp;quot;prices.xql&amp;quot; method=&amp;quot;get&amp;quot;&lt;br /&gt;
        ref=&amp;quot;instance(&#039;transfer&#039;)&amp;quot; replace=&amp;quot;instance&amp;quot; instance=&amp;quot;transfer&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instanzen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:instance&amp;gt;&#039;&#039;): dienen als XML-Templates, die im Zuge der Formularbearbeitung gefüllt, dem Server zugeschickt oder von ihm empfangen und präsentiert werden. Der Server liest aus obigen Transferdaten später z.B. das gesetzte &#039;&#039;num&#039;&#039;-Attribut aus, befüllt entsprechend das &#039;&#039;price&#039;&#039;-Element und schickt alles zurück zum Formular.&lt;br /&gt;
* &#039;&#039;&#039;Übermittlungen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:submission&amp;gt;&#039;&#039;): legen Transferaktionen fest, die im Laufe der Formularbearbeitung initiiert werden. Attribute konfigurieren die Übermittlung: angesprochene URI (&#039;&#039;action&#039;&#039;), verwendete HTTP-Methode (&#039;&#039;method&#039;&#039;), mitzusendende XML-Daten (&#039;&#039;ref&#039;&#039;), was durch die Serverantwort ersetzt wird (&#039;&#039;replace&#039;&#039;) und wie hier bei Instanzersetzung die Zielauswahl (instance).&lt;br /&gt;
* &#039;&#039;&#039;Bindings&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:bind&amp;gt;&#039;&#039;): erlauben es mittels XPath (&#039;&#039;nodeset&#039;&#039;) Knoten aus den &#039;&#039;Instanzen&#039;&#039; auszuwählen und über Attribute an Sonderleistungen zu knüpfen: Festlegen eines Identifizierers (&#039;&#039;id&#039;&#039;), Ausweisen als verbindlich (&#039;&#039;required&#039;&#039;), Ausweisen als schreibgeschützt (&#039;&#039;readonly&#039;&#039;), Zuweisen eines Datentyps zur Validierung (&#039;&#039;type&#039;&#039;) oder Berechnung des Knoteninhalts über XPath (&#039;&#039;calculate&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==View==&lt;br /&gt;
Die XForms &#039;&#039;&#039;View&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:view&amp;gt;&#039;&#039;) bedient sich am vorbereiteten Datenmodell und setzt es in Steuerelemente um. Für das Modell zur &#039;&#039;Preisauskunft&#039;&#039; könnten dies mit einem Input-Feld, einem Output-Feld und einem Submit-Button geschehen, mit einigen Besonderheiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:group&amp;gt;&lt;br /&gt;
     &amp;lt;xf:label&amp;gt;Preisauskunft&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;xf:input bind=&amp;quot;num&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktnummer&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:input&amp;gt;	&lt;br /&gt;
     &amp;lt;xf:output ref=&amp;quot;/product/price&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktpreis&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:output&amp;gt;&lt;br /&gt;
     &amp;lt;submit submission=&amp;quot;fetch&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xf:label&amp;gt;Abfrage&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/submit&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:group&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Visuelle &#039;&#039;&#039;Gruppierung&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:group&amp;gt;&#039;&#039;): Steuerelemente lassen sich einfach als Gruppe hervorheben.&lt;br /&gt;
* &#039;&#039;&#039;Labels&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:label&amp;gt;&#039;&#039;): Feldbezeichnungen sind in XForms verpflichtend und direkt den Feldern als Kindelement zugeordnet.&lt;br /&gt;
* &#039;&#039;&#039;Widgets&#039;&#039;&#039;: Referenzieren die Modelldaten entweder über XPath-Ausdrücke mit (&#039;&#039;ref&#039;&#039; bei &#039;&#039;&amp;lt;xf:output&amp;gt;&#039;&#039;) oder über im Modell vorgegebene Identifizierer (&#039;&#039;bind&#039;&#039; &amp;amp; &#039;&#039;submission&#039;&#039; bei &#039;&#039;&amp;lt;xf:input&amp;gt;&#039;&#039; und &#039;&#039;&amp;lt;xf:submit&amp;gt;&#039;&#039;). Die erste Variante ist weniger sauber, da damit die referenzierte Instanzstruktur bekannt sein muss (engere Kopplung).&lt;br /&gt;
&lt;br /&gt;
=Absichtsorientierte Formularelemente=&lt;br /&gt;
&lt;br /&gt;
XForms interpretiert alle Steuerelemente streng absichts- und nicht präsentationsorientiert, um möglichst viele heterogene Endgeräte barrierefrei zu erreichen. Das bedeutet, dass ein Endgerät über die tatsächliche Darstellung entscheidet und so ein &#039;&#039;input&#039;&#039;-Feld für einen Datumsknoten z.B. in Browsern einen Kalender anbietet oder in blindengerechten Systemen einen Audiodialog formuliert. Das &#039;&#039;appearance&#039;&#039;-Attribut steht in allen Feldern zur Verfügung, um die Darstellungsabsicht abstrakt zu präzisieren: Eine Einzelauswahl (&#039;&#039;select1&#039;&#039;) wird damit in Browsern z.B. mit dem Wert &#039;&#039;full&#039;&#039; als Radio-Buttons, mit &#039;&#039;compact&#039;&#039; als List-Box oder mit &#039;&#039;minimal&#039;&#039; als Drop-Down-List dargestellt. Alle weiteren Details im Erscheinungsbild sind per CSS-Formatierung zu regeln. Die verfügbaren &#039;&#039;&#039;primitiven&#039;&#039;&#039; Widgets umfassen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;input&#039;&#039;: Eingabe von einzeiligem Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;secret&#039;&#039;: Eingabe von verdecktem Text wie Passwörter&lt;br /&gt;
* &#039;&#039;textarea&#039;&#039;: Eingabe von mehrzeiligem Text&lt;br /&gt;
* &#039;&#039;output&#039;&#039;: Ausgabe von Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;upload&#039;&#039;: Auswahlfeld für den Dateiupload&lt;br /&gt;
* &#039;&#039;range&#039;&#039;: Slider-Auswahl für einen Wertebereich&lt;br /&gt;
* &#039;&#039;trigger&#039;&#039;: Entspricht einem beliebigen Knopf&lt;br /&gt;
* &#039;&#039;submit&#039;&#039;: Entspricht einem Übermittlungsknopf&lt;br /&gt;
* &#039;&#039;select1&#039;&#039;: Liste zur Einzelauswahl&lt;br /&gt;
* &#039;&#039;select&#039;&#039;: Liste zur Mehrfachauswahl&lt;br /&gt;
&lt;br /&gt;
=Eventgetriebene Aktionen=&lt;br /&gt;
&lt;br /&gt;
Als &#039;&#039;&#039;Events&#039;&#039;&#039; kann XForms alle Ereignisse des [http://www.w3.org/DOM/Activity Document Object Model (DOM)] auswerten wie &#039;&#039;DOMActivate&#039;&#039;, das von der Auswahl eines Kontrollelements z.B. per Mouse-Click berichtet. XForms feuert auch eigene Ereignisse wie &#039;&#039;xforms-ready&#039;&#039; nach der Initialisierung, &#039;&#039;xforms-submit&#039;&#039; vor dem Ausführen einer Übermittlung oder &#039;&#039;xforms-value-changed&#039;&#039; vor dem Schreiben von Feldinhalten in das Datenmodell. Die Idee ist nun, dem Entwickler für solche Ereignisse Eingriffsmöglichkeiten als &#039;&#039;&#039;Aktions&#039;&#039;&#039;-Elemente bereitzustellen, wie z.B. &#039;&#039;&amp;lt;xf:message&amp;gt;&#039;&#039; zum Anzeigen einer Nachricht, &#039;&#039;&amp;lt;xf:setvalue&amp;gt;&#039;&#039; zum Setzen eines Instanzknotenwerts oder &#039;&#039;&amp;lt;xf:send&amp;gt;&#039;&#039; zum Starten einer Übermittlung. Mehrere Aktionen können in einer &#039;&#039;&amp;lt;xf:action&amp;gt;&#039;&#039; gruppiert und fortan wie eine Einzelaktion behandelt werden. Um eine Aktion an ein Event zu binden, setzt man schlicht ihr Attribut &#039;&#039;ev:event&#039;&#039; auf den Ereignissnamen. Eine Erweiterung zum &#039;&#039;Model&#039;&#039; der &#039;&#039;Preisauskunft&#039;&#039; setzt z.B. nach der Initialisierung Nummer und Preis auf 0 und zeigt einen modalen Dialog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;xf:model&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;xf:action ev:event=&amp;quot;xforms-ready&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xf:setvalue ref=&amp;quot;/product/price&amp;quot; value=&amp;quot;0.00&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xf:setvalue bind=&amp;quot;num&amp;quot;&amp;gt;0&amp;lt;/xf:setvalue&amp;gt;&lt;br /&gt;
            &amp;lt;xf:message level=&amp;quot;modal&amp;quot;&amp;gt;&lt;br /&gt;
                Tragen Sie bitte eine Produktnummer ein!&lt;br /&gt;
            &amp;lt;/xf:message&amp;gt;&lt;br /&gt;
        &amp;lt;/xf:action&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit einigen speziell entworfenen dynamischen &#039;&#039;&#039;Widgets&#039;&#039;&#039; wie einem &#039;&#039;Tab-Control&#039;&#039;-Mechanismus (&#039;&#039;&amp;lt;xf:switch&amp;gt;&#039;&#039;) lässt sich damit zusammen mit dem Einsatz von Aktionen, Events und XPath-Berechnungen der Scripting-Einsatz oft komplett vermeiden.&lt;br /&gt;
&lt;br /&gt;
=Standardisierungsgeschichte=&lt;br /&gt;
* 10/2001: &#039;&#039;XML Events - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 08/2002: &#039;&#039;XForms 1.0 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 11/2003: &#039;&#039;XForms 1.0 - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 01/2004: &#039;&#039;XForms 1.1 - W3C Requirements&#039;&#039;&lt;br /&gt;
* 11/2004: &#039;&#039;XForms 1.1 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 10/2005: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Proposed Recommendation&#039;&#039;&lt;br /&gt;
* 03/2006: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 10/2007: &#039;&#039;XForms 1.0 (3rd Edition) -  W3C Recommendation&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Dubinko, Micah (2003): XForms Essentials. O’Reilly Media Inc., ISBN 0596003692.&lt;br /&gt;
* [http://www.w3.org/TR/xforms W3C - XForms 1.0 (Third Edition)]&lt;br /&gt;
* [http://www.w3.org/MarkUp/Forms W3C - The Forms Working Group]&lt;br /&gt;
* [http://www.w3schools.com/xforms W3Schools.com - XForms Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Xforms Wikipedia - XForms]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11870</id>
		<title>XForms</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11870"/>
		<updated>2008-07-01T18:08:24Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Eventgetriebene Aktionen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition= &lt;br /&gt;
Die Beschreibungssprache &#039;&#039;&#039;XForms&#039;&#039;&#039; bietet eine deklarative Entwicklungsart für reichhaltige Webformulare, die XML als Transferformat akzeptieren und den Browser als Prozessknoten ausnutzen. Sie verspricht offensichtliche Schwächen der alten HTML-Formulargeneration zu beheben, ist nahtlos in gängige XML-Formate wie &#039;&#039;XHTML 1.0&#039;&#039; oder &#039;&#039;SVG&#039;&#039; integrierbar und wird nativer Bestandteil von &#039;&#039;XHTML 2.0&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
XForms wird im Rahmen des [http://www.w3.org W3C]-Konsortiums durch die &#039;&#039;Forms Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XForms 1.0&#039;&#039; trägt den finalen Status einer &#039;&#039;W3C Empfehlung&#039;&#039; und greift massiv auf [[XPath]] für Adressierung und Berechnungen zurück.&lt;br /&gt;
&lt;br /&gt;
=Designziele=&lt;br /&gt;
Bei XForms wurden aus den analysierten Schwächen von herkömmlichen HTML-Formularen einige Designziele abgeleitet:&lt;br /&gt;
&lt;br /&gt;
* Eine einfachere, barrierefreie Interpretation auf heterogenen Geräten durch Absichts- statt Präsentationsorientierung.&lt;br /&gt;
* Eine strukturierte Entwicklungsform über die Trennung von Formulardaten und Präsentation nach dem MVC-Pattern.&lt;br /&gt;
* Ein reichhaltigeres Datenmodell für die Speicherung und den Transfer von Formulardaten durch typisiertes XML.&lt;br /&gt;
* Eine dynamischere, interaktive Bedienoberfläche ohne Scripting-Aufwand durch eventgekoppelte Aktions- und Widgetelemente.&lt;br /&gt;
* Eine Entlastung für Server und Netz, indem der Browser als Prozessknoten bei Validierung und Berechnungen mitarbeitet.&lt;br /&gt;
&lt;br /&gt;
=Formularstruktur nach MVC=&lt;br /&gt;
Bei XForms werden die Formulardaten (&#039;&#039;Model&#039;&#039;) von den korrespondierenden Formularfeldern (&#039;&#039;View&#039;&#039;) separiert beschrieben - die Steuerlogik (&#039;&#039;Controller&#039;&#039;) realisiert ein XForms-Prozessor im Browser. Mit XHTML als Trägerformat kann folgende repräsentative Struktur befüllt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;br /&gt;
     xmlns:xf=&amp;quot;http://www.w3.org/2002/xforms&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;head&amp;gt;&lt;br /&gt;
         Beschreibung des XForms Model&lt;br /&gt;
     &amp;lt;/head&amp;gt;&lt;br /&gt;
     &amp;lt;body&amp;gt;&lt;br /&gt;
         Beschreibung der XForms View&lt;br /&gt;
     &amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Anschauungsbeispiel einer Preisauskunft==&lt;br /&gt;
Als einführendes Beispiel wird nun für die Erklärung von Model- und View-Elementen eine primitive &#039;&#039;&#039;Preisauskunft&#039;&#039;&#039; für einen &#039;&#039;Produktkatalog&#039;&#039; konstruiert. Sie zeigt zu einer eingegebenen &#039;&#039;Produktnummer&#039;&#039; nach betätigen des Formular-Buttons den &#039;&#039;Preis&#039;&#039; des Produktes an:&lt;br /&gt;
&lt;br /&gt;
[[Medium:Xforms_example.png]]&lt;br /&gt;
&lt;br /&gt;
==Model==&lt;br /&gt;
Das XForms &#039;&#039;&#039;Model&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:model&amp;gt;&#039;&#039;) beschreibt Daten und Aktionen, die zur Erbringung der Grundfunktion nötig aber unabhängig von einer konkreten Darstellung sind. Beim Modell zur &#039;&#039;Preisauskunft&#039;&#039; sind folgende Elemente von zentraler Bedeutung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:model&amp;gt;&lt;br /&gt;
    &amp;lt;xf:instance xmlns=&amp;quot;&amp;quot; id=&amp;quot;transfer&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;product num=&amp;quot;1337&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;price&amp;gt;99.99&amp;lt;/price&amp;gt;&lt;br /&gt;
        &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:instance&amp;gt;&lt;br /&gt;
    &amp;lt;xf:bind id=&amp;quot;num&amp;quot; nodeset=&amp;quot;/product/@num&amp;quot; required=&amp;quot;true()&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xf:submission id=&amp;quot;fetch&amp;quot; action=&amp;quot;prices.xql&amp;quot; method=&amp;quot;get&amp;quot;&lt;br /&gt;
        ref=&amp;quot;instance(&#039;transfer&#039;)&amp;quot; replace=&amp;quot;instance&amp;quot; instance=&amp;quot;transfer&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instanzen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:instance&amp;gt;&#039;&#039;): dienen als XML-Templates, die im Zuge der Formularbearbeitung gefüllt, dem Server zugeschickt oder von ihm empfangen und präsentiert werden. Der Server liest aus obigen Transferdaten später z.B. das gesetzte &#039;&#039;num&#039;&#039;-Attribut aus, befüllt entsprechend das &#039;&#039;price&#039;&#039;-Element und schickt alles zurück zum Formular.&lt;br /&gt;
* &#039;&#039;&#039;Übermittlungen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:submission&amp;gt;&#039;&#039;): legen Transferaktionen fest, die im Laufe der Formularbearbeitung initiiert werden. Attribute konfigurieren die Übermittlung: angesprochene URI (&#039;&#039;action&#039;&#039;), verwendete HTTP-Methode (&#039;&#039;method&#039;&#039;), mitzusendende XML-Daten (&#039;&#039;ref&#039;&#039;), was durch die Serverantwort ersetzt wird (&#039;&#039;replace&#039;&#039;) und wie hier bei Instanzersetzung die Zielauswahl (instance).&lt;br /&gt;
* &#039;&#039;&#039;Bindings&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:bind&amp;gt;&#039;&#039;): erlauben es mittels XPath (&#039;&#039;nodeset&#039;&#039;) Knoten aus den &#039;&#039;Instanzen&#039;&#039; auszuwählen und über Attribute an Sonderleistungen zu knüpfen: Festlegen eines Identifizierers (&#039;&#039;id&#039;&#039;), Ausweisen als verbindlich (&#039;&#039;required&#039;&#039;), Ausweisen als schreibgeschützt (&#039;&#039;readonly&#039;&#039;), Zuweisen eines Datentyps zur Validierung (&#039;&#039;type&#039;&#039;) oder Berechnung des Knoteninhalts über XPath (&#039;&#039;calculate&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==View==&lt;br /&gt;
Die XForms &#039;&#039;&#039;View&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:view&amp;gt;&#039;&#039;) bedient sich am vorbereiteten Datenmodell und setzt es in Steuerelemente um. Für das Modell zur &#039;&#039;Preisauskunft&#039;&#039; könnten dies mit einem Input-Feld, einem Output-Feld und einem Submit-Button geschehen, mit einigen Besonderheiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:group&amp;gt;&lt;br /&gt;
     &amp;lt;xf:label&amp;gt;Preisauskunft&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;xf:input bind=&amp;quot;num&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktnummer&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:input&amp;gt;	&lt;br /&gt;
     &amp;lt;xf:output ref=&amp;quot;/product/price&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktpreis&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:output&amp;gt;&lt;br /&gt;
     &amp;lt;submit submission=&amp;quot;fetch&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xf:label&amp;gt;Abfrage&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/submit&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:group&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Visuelle &#039;&#039;&#039;Gruppierung&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:group&amp;gt;&#039;&#039;): Steuerelemente lassen sich einfach als Gruppe hervorheben.&lt;br /&gt;
* &#039;&#039;&#039;Labels&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:label&amp;gt;&#039;&#039;): Feldbezeichnungen sind in XForms verpflichtend und direkt den Feldern als Kindelement zugeordnet.&lt;br /&gt;
* &#039;&#039;&#039;Widgets&#039;&#039;&#039;: Referenzieren die Modelldaten entweder über XPath-Ausdrücke mit (&#039;&#039;ref&#039;&#039; bei &#039;&#039;&amp;lt;xf:output&amp;gt;&#039;&#039;) oder über im Modell vorgegebene Identifizierer (&#039;&#039;bind&#039;&#039; &amp;amp; &#039;&#039;submission&#039;&#039; bei &#039;&#039;&amp;lt;xf:input&amp;gt;&#039;&#039; und &#039;&#039;&amp;lt;xf:submit&amp;gt;&#039;&#039;). Die erste Variante ist weniger sauber, da damit die referenzierte Instanzstruktur bekannt sein muss (engere Kopplung).&lt;br /&gt;
&lt;br /&gt;
=Absichtsorientierte Formularelemente=&lt;br /&gt;
&lt;br /&gt;
XForms interpretiert alle Steuerelemente streng absichts- und nicht präsentationsorientiert, um möglichst viele heterogene Endgeräte barrierefrei zu erreichen. Das bedeutet, dass ein Endgerät über die tatsächliche Darstellung entscheidet und so ein &#039;&#039;input&#039;&#039;-Feld für einen Datumsknoten z.B. in Browsern einen Kalender anbietet oder in blindengerechten Systemen einen Audiodialog formuliert. Das &#039;&#039;appearance&#039;&#039;-Attribut steht in allen Feldern zur Verfügung, um die Darstellungsabsicht abstrakt zu präzisieren: Eine Einzelauswahl (&#039;&#039;select1&#039;&#039;) wird damit in Browsern z.B. mit dem Wert &#039;&#039;full&#039;&#039; als Radio-Buttons, mit &#039;&#039;compact&#039;&#039; als List-Box oder mit &#039;&#039;minimal&#039;&#039; als Drop-Down-List dargestellt. Alle weiteren Details im Erscheinungsbild sind per CSS-Formatierung zu regeln. Die verfügbaren &#039;&#039;&#039;primitiven&#039;&#039;&#039; Widgets umfassen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;input&#039;&#039;: Eingabe von einzeiligem Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;secret&#039;&#039;: Eingabe von verdecktem Text wie Passwörter&lt;br /&gt;
* &#039;&#039;textarea&#039;&#039;: Eingabe von mehrzeiligem Text&lt;br /&gt;
* &#039;&#039;output&#039;&#039;: Ausgabe von Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;upload&#039;&#039;: Auswahlfeld für den Dateiupload&lt;br /&gt;
* &#039;&#039;range&#039;&#039;: Slider-Auswahl für einen Wertebereich&lt;br /&gt;
* &#039;&#039;trigger&#039;&#039;: Entspricht einem beliebigen Knopf&lt;br /&gt;
* &#039;&#039;submit&#039;&#039;: Entspricht einem Übermittlungsknopf&lt;br /&gt;
* &#039;&#039;select1&#039;&#039;: Liste zur Einzelauswahl&lt;br /&gt;
* &#039;&#039;select&#039;&#039;: Liste zur Mehrfachauswahl&lt;br /&gt;
&lt;br /&gt;
=Eventgetriebene Aktionen=&lt;br /&gt;
&lt;br /&gt;
Als &#039;&#039;&#039;Events&#039;&#039;&#039; kann XForms alle Ereignisse des [http://www.w3.org/DOM/Activity Document Object Model (DOM)] auswerten wie &#039;&#039;DOMActivate&#039;&#039;, das von der Auswahl eines Kontrollelements z.B. per Mouse-Click berichtet. XForms feuert auch eigene Ereignisse wie &#039;&#039;xforms-ready&#039;&#039; nach der Initialisierung, &#039;&#039;xforms-submit&#039;&#039; vor dem Ausführen einer Übermittlung oder &#039;&#039;xforms-value-changed&#039;&#039; vor dem Schreiben von Feldinhalten in das Datenmodell. Die Idee ist nun, dem Entwickler für solche Ereignisse Eingriffsmöglichkeiten als &#039;&#039;&#039;Aktions&#039;&#039;&#039;-Elemente bereitzustellen, wie z.B. &#039;&#039;&amp;lt;xf:message&amp;gt;&#039;&#039; zum Anzeigen einer Nachricht, &#039;&#039;&amp;lt;xf:setvalue&amp;gt;&#039;&#039; zum Setzen eines Instanzknotenwerts oder &#039;&#039;&amp;lt;xf:send&amp;gt;&#039;&#039; zum Starten einer Übermittlung. Mehrere Aktionen können in einer &#039;&#039;&amp;lt;xf:action&amp;gt;&#039;&#039; gruppiert und fortan wie eine Einzelaktion behandelt werden. Um eine Aktion an ein Event zu binden, setzt man schlicht ihr Attribut &#039;&#039;ev:event&#039;&#039; auf den Ereignissnamen. Eine Erweiterung zum &#039;&#039;Model&#039;&#039; der &#039;&#039;Preisauskunft&#039;&#039; setzt z.B. nach der Initialisierung Nummer und Preis auf 0 und zeigt einen modalen Dialog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;xf:model&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;xf:action ev:event=&amp;quot;xforms-ready&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xf:setvalue ref=&amp;quot;/product/price&amp;quot; value=&amp;quot;0.00&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;xf:setvalue bind=&amp;quot;num&amp;quot;&amp;gt;0&amp;lt;/xf:setvalue&amp;gt;&lt;br /&gt;
            &amp;lt;xf:message level=&amp;quot;modal&amp;quot;&amp;gt;&lt;br /&gt;
                Tragen Sie bitte eine Produktnummer ein!&lt;br /&gt;
            &amp;lt;/xf:message&amp;gt;&lt;br /&gt;
        &amp;lt;/xf:action&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Standardisierungsgeschichte=&lt;br /&gt;
* 10/2001: &#039;&#039;XML Events - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 08/2002: &#039;&#039;XForms 1.0 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 11/2003: &#039;&#039;XForms 1.0 - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 01/2004: &#039;&#039;XForms 1.1 - W3C Requirements&#039;&#039;&lt;br /&gt;
* 11/2004: &#039;&#039;XForms 1.1 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 10/2005: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Proposed Recommendation&#039;&#039;&lt;br /&gt;
* 03/2006: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 10/2007: &#039;&#039;XForms 1.0 (3rd Edition) -  W3C Recommendation&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Dubinko, Micah (2003): XForms Essentials. O’Reilly Media Inc., ISBN 0596003692.&lt;br /&gt;
* [http://www.w3.org/TR/xforms W3C - XForms 1.0 (Third Edition)]&lt;br /&gt;
* [http://www.w3.org/MarkUp/Forms W3C - The Forms Working Group]&lt;br /&gt;
* [http://www.w3schools.com/xforms W3Schools.com - XForms Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Xforms Wikipedia - XForms]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11869</id>
		<title>XForms</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11869"/>
		<updated>2008-07-01T18:07:03Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Eventgetriebene Aktionen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition= &lt;br /&gt;
Die Beschreibungssprache &#039;&#039;&#039;XForms&#039;&#039;&#039; bietet eine deklarative Entwicklungsart für reichhaltige Webformulare, die XML als Transferformat akzeptieren und den Browser als Prozessknoten ausnutzen. Sie verspricht offensichtliche Schwächen der alten HTML-Formulargeneration zu beheben, ist nahtlos in gängige XML-Formate wie &#039;&#039;XHTML 1.0&#039;&#039; oder &#039;&#039;SVG&#039;&#039; integrierbar und wird nativer Bestandteil von &#039;&#039;XHTML 2.0&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
XForms wird im Rahmen des [http://www.w3.org W3C]-Konsortiums durch die &#039;&#039;Forms Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XForms 1.0&#039;&#039; trägt den finalen Status einer &#039;&#039;W3C Empfehlung&#039;&#039; und greift massiv auf [[XPath]] für Adressierung und Berechnungen zurück.&lt;br /&gt;
&lt;br /&gt;
=Designziele=&lt;br /&gt;
Bei XForms wurden aus den analysierten Schwächen von herkömmlichen HTML-Formularen einige Designziele abgeleitet:&lt;br /&gt;
&lt;br /&gt;
* Eine einfachere, barrierefreie Interpretation auf heterogenen Geräten durch Absichts- statt Präsentationsorientierung.&lt;br /&gt;
* Eine strukturierte Entwicklungsform über die Trennung von Formulardaten und Präsentation nach dem MVC-Pattern.&lt;br /&gt;
* Ein reichhaltigeres Datenmodell für die Speicherung und den Transfer von Formulardaten durch typisiertes XML.&lt;br /&gt;
* Eine dynamischere, interaktive Bedienoberfläche ohne Scripting-Aufwand durch eventgekoppelte Aktions- und Widgetelemente.&lt;br /&gt;
* Eine Entlastung für Server und Netz, indem der Browser als Prozessknoten bei Validierung und Berechnungen mitarbeitet.&lt;br /&gt;
&lt;br /&gt;
=Formularstruktur nach MVC=&lt;br /&gt;
Bei XForms werden die Formulardaten (&#039;&#039;Model&#039;&#039;) von den korrespondierenden Formularfeldern (&#039;&#039;View&#039;&#039;) separiert beschrieben - die Steuerlogik (&#039;&#039;Controller&#039;&#039;) realisiert ein XForms-Prozessor im Browser. Mit XHTML als Trägerformat kann folgende repräsentative Struktur befüllt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;br /&gt;
     xmlns:xf=&amp;quot;http://www.w3.org/2002/xforms&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;head&amp;gt;&lt;br /&gt;
         Beschreibung des XForms Model&lt;br /&gt;
     &amp;lt;/head&amp;gt;&lt;br /&gt;
     &amp;lt;body&amp;gt;&lt;br /&gt;
         Beschreibung der XForms View&lt;br /&gt;
     &amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Anschauungsbeispiel einer Preisauskunft==&lt;br /&gt;
Als einführendes Beispiel wird nun für die Erklärung von Model- und View-Elementen eine primitive &#039;&#039;&#039;Preisauskunft&#039;&#039;&#039; für einen &#039;&#039;Produktkatalog&#039;&#039; konstruiert. Sie zeigt zu einer eingegebenen &#039;&#039;Produktnummer&#039;&#039; nach betätigen des Formular-Buttons den &#039;&#039;Preis&#039;&#039; des Produktes an:&lt;br /&gt;
&lt;br /&gt;
[[Medium:Xforms_example.png]]&lt;br /&gt;
&lt;br /&gt;
==Model==&lt;br /&gt;
Das XForms &#039;&#039;&#039;Model&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:model&amp;gt;&#039;&#039;) beschreibt Daten und Aktionen, die zur Erbringung der Grundfunktion nötig aber unabhängig von einer konkreten Darstellung sind. Beim Modell zur &#039;&#039;Preisauskunft&#039;&#039; sind folgende Elemente von zentraler Bedeutung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:model&amp;gt;&lt;br /&gt;
    &amp;lt;xf:instance xmlns=&amp;quot;&amp;quot; id=&amp;quot;transfer&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;product num=&amp;quot;1337&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;price&amp;gt;99.99&amp;lt;/price&amp;gt;&lt;br /&gt;
        &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:instance&amp;gt;&lt;br /&gt;
    &amp;lt;xf:bind id=&amp;quot;num&amp;quot; nodeset=&amp;quot;/product/@num&amp;quot; required=&amp;quot;true()&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xf:submission id=&amp;quot;fetch&amp;quot; action=&amp;quot;prices.xql&amp;quot; method=&amp;quot;get&amp;quot;&lt;br /&gt;
        ref=&amp;quot;instance(&#039;transfer&#039;)&amp;quot; replace=&amp;quot;instance&amp;quot; instance=&amp;quot;transfer&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instanzen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:instance&amp;gt;&#039;&#039;): dienen als XML-Templates, die im Zuge der Formularbearbeitung gefüllt, dem Server zugeschickt oder von ihm empfangen und präsentiert werden. Der Server liest aus obigen Transferdaten später z.B. das gesetzte &#039;&#039;num&#039;&#039;-Attribut aus, befüllt entsprechend das &#039;&#039;price&#039;&#039;-Element und schickt alles zurück zum Formular.&lt;br /&gt;
* &#039;&#039;&#039;Übermittlungen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:submission&amp;gt;&#039;&#039;): legen Transferaktionen fest, die im Laufe der Formularbearbeitung initiiert werden. Attribute konfigurieren die Übermittlung: angesprochene URI (&#039;&#039;action&#039;&#039;), verwendete HTTP-Methode (&#039;&#039;method&#039;&#039;), mitzusendende XML-Daten (&#039;&#039;ref&#039;&#039;), was durch die Serverantwort ersetzt wird (&#039;&#039;replace&#039;&#039;) und wie hier bei Instanzersetzung die Zielauswahl (instance).&lt;br /&gt;
* &#039;&#039;&#039;Bindings&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:bind&amp;gt;&#039;&#039;): erlauben es mittels XPath (&#039;&#039;nodeset&#039;&#039;) Knoten aus den &#039;&#039;Instanzen&#039;&#039; auszuwählen und über Attribute an Sonderleistungen zu knüpfen: Festlegen eines Identifizierers (&#039;&#039;id&#039;&#039;), Ausweisen als verbindlich (&#039;&#039;required&#039;&#039;), Ausweisen als schreibgeschützt (&#039;&#039;readonly&#039;&#039;), Zuweisen eines Datentyps zur Validierung (&#039;&#039;type&#039;&#039;) oder Berechnung des Knoteninhalts über XPath (&#039;&#039;calculate&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==View==&lt;br /&gt;
Die XForms &#039;&#039;&#039;View&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:view&amp;gt;&#039;&#039;) bedient sich am vorbereiteten Datenmodell und setzt es in Steuerelemente um. Für das Modell zur &#039;&#039;Preisauskunft&#039;&#039; könnten dies mit einem Input-Feld, einem Output-Feld und einem Submit-Button geschehen, mit einigen Besonderheiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:group&amp;gt;&lt;br /&gt;
     &amp;lt;xf:label&amp;gt;Preisauskunft&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;xf:input bind=&amp;quot;num&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktnummer&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:input&amp;gt;	&lt;br /&gt;
     &amp;lt;xf:output ref=&amp;quot;/product/price&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktpreis&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:output&amp;gt;&lt;br /&gt;
     &amp;lt;submit submission=&amp;quot;fetch&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xf:label&amp;gt;Abfrage&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/submit&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:group&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Visuelle &#039;&#039;&#039;Gruppierung&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:group&amp;gt;&#039;&#039;): Steuerelemente lassen sich einfach als Gruppe hervorheben.&lt;br /&gt;
* &#039;&#039;&#039;Labels&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:label&amp;gt;&#039;&#039;): Feldbezeichnungen sind in XForms verpflichtend und direkt den Feldern als Kindelement zugeordnet.&lt;br /&gt;
* &#039;&#039;&#039;Widgets&#039;&#039;&#039;: Referenzieren die Modelldaten entweder über XPath-Ausdrücke mit (&#039;&#039;ref&#039;&#039; bei &#039;&#039;&amp;lt;xf:output&amp;gt;&#039;&#039;) oder über im Modell vorgegebene Identifizierer (&#039;&#039;bind&#039;&#039; &amp;amp; &#039;&#039;submission&#039;&#039; bei &#039;&#039;&amp;lt;xf:input&amp;gt;&#039;&#039; und &#039;&#039;&amp;lt;xf:submit&amp;gt;&#039;&#039;). Die erste Variante ist weniger sauber, da damit die referenzierte Instanzstruktur bekannt sein muss (engere Kopplung).&lt;br /&gt;
&lt;br /&gt;
=Absichtsorientierte Formularelemente=&lt;br /&gt;
&lt;br /&gt;
XForms interpretiert alle Steuerelemente streng absichts- und nicht präsentationsorientiert, um möglichst viele heterogene Endgeräte barrierefrei zu erreichen. Das bedeutet, dass ein Endgerät über die tatsächliche Darstellung entscheidet und so ein &#039;&#039;input&#039;&#039;-Feld für einen Datumsknoten z.B. in Browsern einen Kalender anbietet oder in blindengerechten Systemen einen Audiodialog formuliert. Das &#039;&#039;appearance&#039;&#039;-Attribut steht in allen Feldern zur Verfügung, um die Darstellungsabsicht abstrakt zu präzisieren: Eine Einzelauswahl (&#039;&#039;select1&#039;&#039;) wird damit in Browsern z.B. mit dem Wert &#039;&#039;full&#039;&#039; als Radio-Buttons, mit &#039;&#039;compact&#039;&#039; als List-Box oder mit &#039;&#039;minimal&#039;&#039; als Drop-Down-List dargestellt. Alle weiteren Details im Erscheinungsbild sind per CSS-Formatierung zu regeln. Die verfügbaren &#039;&#039;&#039;primitiven&#039;&#039;&#039; Widgets umfassen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;input&#039;&#039;: Eingabe von einzeiligem Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;secret&#039;&#039;: Eingabe von verdecktem Text wie Passwörter&lt;br /&gt;
* &#039;&#039;textarea&#039;&#039;: Eingabe von mehrzeiligem Text&lt;br /&gt;
* &#039;&#039;output&#039;&#039;: Ausgabe von Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;upload&#039;&#039;: Auswahlfeld für den Dateiupload&lt;br /&gt;
* &#039;&#039;range&#039;&#039;: Slider-Auswahl für einen Wertebereich&lt;br /&gt;
* &#039;&#039;trigger&#039;&#039;: Entspricht einem beliebigen Knopf&lt;br /&gt;
* &#039;&#039;submit&#039;&#039;: Entspricht einem Übermittlungsknopf&lt;br /&gt;
* &#039;&#039;select1&#039;&#039;: Liste zur Einzelauswahl&lt;br /&gt;
* &#039;&#039;select&#039;&#039;: Liste zur Mehrfachauswahl&lt;br /&gt;
&lt;br /&gt;
=Eventgetriebene Aktionen=&lt;br /&gt;
&lt;br /&gt;
Als &#039;&#039;&#039;Events&#039;&#039;&#039; kann XForms alle Ereignisse des [http://www.w3.org/DOM/Activity Document Object Model (DOM)] auswerten wie &#039;&#039;DOMActivate&#039;&#039;, das von der Auswahl eines Kontrollelements z.B. per Mouse-Click berichtet. XForms feuert auch eigene Ereignisse wie &#039;&#039;xforms-ready&#039;&#039; nach der Initialisierung, &#039;&#039;xforms-submit&#039;&#039; vor dem Ausführen einer Übermittlung oder &#039;&#039;xforms-value-changed&#039;&#039; vor dem Schreiben von Feldinhalten in das Datenmodell. Die Idee ist nun, dem Entwickler für solche Ereignisse Eingriffsmöglichkeiten als &#039;&#039;&#039;Aktions&#039;&#039;&#039;-Elemente bereitzustellen, wie z.B. &#039;&#039;&amp;lt;xf:message&amp;gt;&#039;&#039; zum Anzeigen einer Nachricht, &#039;&#039;&amp;lt;xf:setvalue&amp;gt;&#039;&#039; zum Setzen eines Instanzknotenwerts oder &#039;&#039;&amp;lt;xf:send&amp;gt;&#039;&#039; zum Starten einer Übermittlung. Mehrere Aktionen können in einer &#039;&#039;&amp;lt;xf:action&amp;gt;&#039;&#039; gruppiert und fortan wie eine Einzelaktion behandelt werden. Um nun eine Aktion an ein Event zu binden, setzt man schlicht ihr Attribut &#039;&#039;ev:event&#039;&#039; auf den Ereignissnamen. Diese Erweiterung zum &#039;&#039;Model&#039;&#039; der &#039;&#039;Preisauskunft&#039;&#039; setzt z.B. nach der Initialisierung Nummer und Preis zurück und zeigt einen modalen Dialog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;xf:action ev:event=&amp;quot;xforms-ready&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xf:setvalue ref=&amp;quot;/product/price&amp;quot; value=&amp;quot;0.00&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;xf:setvalue bind=&amp;quot;num&amp;quot;&amp;gt;0&amp;lt;/xf:setvalue&amp;gt;&lt;br /&gt;
        &amp;lt;xf:message level=&amp;quot;modal&amp;quot;&amp;gt;&lt;br /&gt;
            Tragen Sie bitte eine Produktnummer ein!&lt;br /&gt;
        &amp;lt;/xf:message&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:action&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Standardisierungsgeschichte=&lt;br /&gt;
* 10/2001: &#039;&#039;XML Events - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 08/2002: &#039;&#039;XForms 1.0 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 11/2003: &#039;&#039;XForms 1.0 - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 01/2004: &#039;&#039;XForms 1.1 - W3C Requirements&#039;&#039;&lt;br /&gt;
* 11/2004: &#039;&#039;XForms 1.1 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 10/2005: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Proposed Recommendation&#039;&#039;&lt;br /&gt;
* 03/2006: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 10/2007: &#039;&#039;XForms 1.0 (3rd Edition) -  W3C Recommendation&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Dubinko, Micah (2003): XForms Essentials. O’Reilly Media Inc., ISBN 0596003692.&lt;br /&gt;
* [http://www.w3.org/TR/xforms W3C - XForms 1.0 (Third Edition)]&lt;br /&gt;
* [http://www.w3.org/MarkUp/Forms W3C - The Forms Working Group]&lt;br /&gt;
* [http://www.w3schools.com/xforms W3Schools.com - XForms Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Xforms Wikipedia - XForms]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11868</id>
		<title>XForms</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11868"/>
		<updated>2008-07-01T17:59:24Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Absichtsorientierte Formularelemente */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition= &lt;br /&gt;
Die Beschreibungssprache &#039;&#039;&#039;XForms&#039;&#039;&#039; bietet eine deklarative Entwicklungsart für reichhaltige Webformulare, die XML als Transferformat akzeptieren und den Browser als Prozessknoten ausnutzen. Sie verspricht offensichtliche Schwächen der alten HTML-Formulargeneration zu beheben, ist nahtlos in gängige XML-Formate wie &#039;&#039;XHTML 1.0&#039;&#039; oder &#039;&#039;SVG&#039;&#039; integrierbar und wird nativer Bestandteil von &#039;&#039;XHTML 2.0&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
XForms wird im Rahmen des [http://www.w3.org W3C]-Konsortiums durch die &#039;&#039;Forms Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XForms 1.0&#039;&#039; trägt den finalen Status einer &#039;&#039;W3C Empfehlung&#039;&#039; und greift massiv auf [[XPath]] für Adressierung und Berechnungen zurück.&lt;br /&gt;
&lt;br /&gt;
=Designziele=&lt;br /&gt;
Bei XForms wurden aus den analysierten Schwächen von herkömmlichen HTML-Formularen einige Designziele abgeleitet:&lt;br /&gt;
&lt;br /&gt;
* Eine einfachere, barrierefreie Interpretation auf heterogenen Geräten durch Absichts- statt Präsentationsorientierung.&lt;br /&gt;
* Eine strukturierte Entwicklungsform über die Trennung von Formulardaten und Präsentation nach dem MVC-Pattern.&lt;br /&gt;
* Ein reichhaltigeres Datenmodell für die Speicherung und den Transfer von Formulardaten durch typisiertes XML.&lt;br /&gt;
* Eine dynamischere, interaktive Bedienoberfläche ohne Scripting-Aufwand durch eventgekoppelte Aktions- und Widgetelemente.&lt;br /&gt;
* Eine Entlastung für Server und Netz, indem der Browser als Prozessknoten bei Validierung und Berechnungen mitarbeitet.&lt;br /&gt;
&lt;br /&gt;
=Formularstruktur nach MVC=&lt;br /&gt;
Bei XForms werden die Formulardaten (&#039;&#039;Model&#039;&#039;) von den korrespondierenden Formularfeldern (&#039;&#039;View&#039;&#039;) separiert beschrieben - die Steuerlogik (&#039;&#039;Controller&#039;&#039;) realisiert ein XForms-Prozessor im Browser. Mit XHTML als Trägerformat kann folgende repräsentative Struktur befüllt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;br /&gt;
     xmlns:xf=&amp;quot;http://www.w3.org/2002/xforms&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;head&amp;gt;&lt;br /&gt;
         Beschreibung des XForms Model&lt;br /&gt;
     &amp;lt;/head&amp;gt;&lt;br /&gt;
     &amp;lt;body&amp;gt;&lt;br /&gt;
         Beschreibung der XForms View&lt;br /&gt;
     &amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Anschauungsbeispiel einer Preisauskunft==&lt;br /&gt;
Als einführendes Beispiel wird nun für die Erklärung von Model- und View-Elementen eine primitive &#039;&#039;&#039;Preisauskunft&#039;&#039;&#039; für einen &#039;&#039;Produktkatalog&#039;&#039; konstruiert. Sie zeigt zu einer eingegebenen &#039;&#039;Produktnummer&#039;&#039; nach betätigen des Formular-Buttons den &#039;&#039;Preis&#039;&#039; des Produktes an:&lt;br /&gt;
&lt;br /&gt;
[[Medium:Xforms_example.png]]&lt;br /&gt;
&lt;br /&gt;
==Model==&lt;br /&gt;
Das XForms &#039;&#039;&#039;Model&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:model&amp;gt;&#039;&#039;) beschreibt Daten und Aktionen, die zur Erbringung der Grundfunktion nötig aber unabhängig von einer konkreten Darstellung sind. Beim Modell zur &#039;&#039;Preisauskunft&#039;&#039; sind folgende Elemente von zentraler Bedeutung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:model&amp;gt;&lt;br /&gt;
    &amp;lt;xf:instance xmlns=&amp;quot;&amp;quot; id=&amp;quot;transfer&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;product num=&amp;quot;1337&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;price&amp;gt;99.99&amp;lt;/price&amp;gt;&lt;br /&gt;
        &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:instance&amp;gt;&lt;br /&gt;
    &amp;lt;xf:bind id=&amp;quot;num&amp;quot; nodeset=&amp;quot;/product/@num&amp;quot; required=&amp;quot;true()&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xf:submission id=&amp;quot;fetch&amp;quot; action=&amp;quot;prices.xql&amp;quot; method=&amp;quot;get&amp;quot;&lt;br /&gt;
        ref=&amp;quot;instance(&#039;transfer&#039;)&amp;quot; replace=&amp;quot;instance&amp;quot; instance=&amp;quot;transfer&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instanzen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:instance&amp;gt;&#039;&#039;): dienen als XML-Templates, die im Zuge der Formularbearbeitung gefüllt, dem Server zugeschickt oder von ihm empfangen und präsentiert werden. Der Server liest aus obigen Transferdaten später z.B. das gesetzte &#039;&#039;num&#039;&#039;-Attribut aus, befüllt entsprechend das &#039;&#039;price&#039;&#039;-Element und schickt alles zurück zum Formular.&lt;br /&gt;
* &#039;&#039;&#039;Übermittlungen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:submission&amp;gt;&#039;&#039;): legen Transferaktionen fest, die im Laufe der Formularbearbeitung initiiert werden. Attribute konfigurieren die Übermittlung: angesprochene URI (&#039;&#039;action&#039;&#039;), verwendete HTTP-Methode (&#039;&#039;method&#039;&#039;), mitzusendende XML-Daten (&#039;&#039;ref&#039;&#039;), was durch die Serverantwort ersetzt wird (&#039;&#039;replace&#039;&#039;) und wie hier bei Instanzersetzung die Zielauswahl (instance).&lt;br /&gt;
* &#039;&#039;&#039;Bindings&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:bind&amp;gt;&#039;&#039;): erlauben es mittels XPath (&#039;&#039;nodeset&#039;&#039;) Knoten aus den &#039;&#039;Instanzen&#039;&#039; auszuwählen und über Attribute an Sonderleistungen zu knüpfen: Festlegen eines Identifizierers (&#039;&#039;id&#039;&#039;), Ausweisen als verbindlich (&#039;&#039;required&#039;&#039;), Ausweisen als schreibgeschützt (&#039;&#039;readonly&#039;&#039;), Zuweisen eines Datentyps zur Validierung (&#039;&#039;type&#039;&#039;) oder Berechnung des Knoteninhalts über XPath (&#039;&#039;calculate&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==View==&lt;br /&gt;
Die XForms &#039;&#039;&#039;View&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:view&amp;gt;&#039;&#039;) bedient sich am vorbereiteten Datenmodell und setzt es in Steuerelemente um. Für das Modell zur &#039;&#039;Preisauskunft&#039;&#039; könnten dies mit einem Input-Feld, einem Output-Feld und einem Submit-Button geschehen, mit einigen Besonderheiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:group&amp;gt;&lt;br /&gt;
     &amp;lt;xf:label&amp;gt;Preisauskunft&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;xf:input bind=&amp;quot;num&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktnummer&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:input&amp;gt;	&lt;br /&gt;
     &amp;lt;xf:output ref=&amp;quot;/product/price&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktpreis&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:output&amp;gt;&lt;br /&gt;
     &amp;lt;submit submission=&amp;quot;fetch&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xf:label&amp;gt;Abfrage&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/submit&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:group&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Visuelle &#039;&#039;&#039;Gruppierung&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:group&amp;gt;&#039;&#039;): Steuerelemente lassen sich einfach als Gruppe hervorheben.&lt;br /&gt;
* &#039;&#039;&#039;Labels&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:label&amp;gt;&#039;&#039;): Feldbezeichnungen sind in XForms verpflichtend und direkt den Feldern als Kindelement zugeordnet.&lt;br /&gt;
* &#039;&#039;&#039;Widgets&#039;&#039;&#039;: Referenzieren die Modelldaten entweder über XPath-Ausdrücke mit (&#039;&#039;ref&#039;&#039; bei &#039;&#039;&amp;lt;xf:output&amp;gt;&#039;&#039;) oder über im Modell vorgegebene Identifizierer (&#039;&#039;bind&#039;&#039; &amp;amp; &#039;&#039;submission&#039;&#039; bei &#039;&#039;&amp;lt;xf:input&amp;gt;&#039;&#039; und &#039;&#039;&amp;lt;xf:submit&amp;gt;&#039;&#039;). Die erste Variante ist weniger sauber, da damit die referenzierte Instanzstruktur bekannt sein muss (engere Kopplung).&lt;br /&gt;
&lt;br /&gt;
=Absichtsorientierte Formularelemente=&lt;br /&gt;
&lt;br /&gt;
XForms interpretiert alle Steuerelemente streng absichts- und nicht präsentationsorientiert, um möglichst viele heterogene Endgeräte barrierefrei zu erreichen. Das bedeutet, dass ein Endgerät über die tatsächliche Darstellung entscheidet und so ein &#039;&#039;input&#039;&#039;-Feld für einen Datumsknoten z.B. in Browsern einen Kalender anbietet oder in blindengerechten Systemen einen Audiodialog formuliert. Das &#039;&#039;appearance&#039;&#039;-Attribut steht in allen Feldern zur Verfügung, um die Darstellungsabsicht abstrakt zu präzisieren: Eine Einzelauswahl (&#039;&#039;select1&#039;&#039;) wird damit in Browsern z.B. mit dem Wert &#039;&#039;full&#039;&#039; als Radio-Buttons, mit &#039;&#039;compact&#039;&#039; als List-Box oder mit &#039;&#039;minimal&#039;&#039; als Drop-Down-List dargestellt. Alle weiteren Details im Erscheinungsbild sind per CSS-Formatierung zu regeln. Die verfügbaren &#039;&#039;&#039;primitiven&#039;&#039;&#039; Widgets umfassen:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;input&#039;&#039;: Eingabe von einzeiligem Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;secret&#039;&#039;: Eingabe von verdecktem Text wie Passwörter&lt;br /&gt;
* &#039;&#039;textarea&#039;&#039;: Eingabe von mehrzeiligem Text&lt;br /&gt;
* &#039;&#039;output&#039;&#039;: Ausgabe von Text, Zahlen, Datum, ...&lt;br /&gt;
* &#039;&#039;upload&#039;&#039;: Auswahlfeld für den Dateiupload&lt;br /&gt;
* &#039;&#039;range&#039;&#039;: Slider-Auswahl für einen Wertebereich&lt;br /&gt;
* &#039;&#039;trigger&#039;&#039;: Entspricht einem beliebigen Knopf&lt;br /&gt;
* &#039;&#039;submit&#039;&#039;: Entspricht einem Übermittlungsknopf&lt;br /&gt;
* &#039;&#039;select1&#039;&#039;: Liste zur Einzelauswahl&lt;br /&gt;
* &#039;&#039;select&#039;&#039;: Liste zur Mehrfachauswahl&lt;br /&gt;
&lt;br /&gt;
=Eventgetriebene Aktionen=&lt;br /&gt;
&lt;br /&gt;
=Standardisierungsgeschichte=&lt;br /&gt;
* 10/2001: &#039;&#039;XML Events - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 08/2002: &#039;&#039;XForms 1.0 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 11/2003: &#039;&#039;XForms 1.0 - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 01/2004: &#039;&#039;XForms 1.1 - W3C Requirements&#039;&#039;&lt;br /&gt;
* 11/2004: &#039;&#039;XForms 1.1 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 10/2005: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Proposed Recommendation&#039;&#039;&lt;br /&gt;
* 03/2006: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 10/2007: &#039;&#039;XForms 1.0 (3rd Edition) -  W3C Recommendation&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Dubinko, Micah (2003): XForms Essentials. O’Reilly Media Inc., ISBN 0596003692.&lt;br /&gt;
* [http://www.w3.org/TR/xforms W3C - XForms 1.0 (Third Edition)]&lt;br /&gt;
* [http://www.w3.org/MarkUp/Forms W3C - The Forms Working Group]&lt;br /&gt;
* [http://www.w3schools.com/xforms W3Schools.com - XForms Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Xforms Wikipedia - XForms]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11867</id>
		<title>XForms</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11867"/>
		<updated>2008-07-01T17:47:49Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Anschauungsbeispiel einer Preisauskunft */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition= &lt;br /&gt;
Die Beschreibungssprache &#039;&#039;&#039;XForms&#039;&#039;&#039; bietet eine deklarative Entwicklungsart für reichhaltige Webformulare, die XML als Transferformat akzeptieren und den Browser als Prozessknoten ausnutzen. Sie verspricht offensichtliche Schwächen der alten HTML-Formulargeneration zu beheben, ist nahtlos in gängige XML-Formate wie &#039;&#039;XHTML 1.0&#039;&#039; oder &#039;&#039;SVG&#039;&#039; integrierbar und wird nativer Bestandteil von &#039;&#039;XHTML 2.0&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
XForms wird im Rahmen des [http://www.w3.org W3C]-Konsortiums durch die &#039;&#039;Forms Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XForms 1.0&#039;&#039; trägt den finalen Status einer &#039;&#039;W3C Empfehlung&#039;&#039; und greift massiv auf [[XPath]] für Adressierung und Berechnungen zurück.&lt;br /&gt;
&lt;br /&gt;
=Designziele=&lt;br /&gt;
Bei XForms wurden aus den analysierten Schwächen von herkömmlichen HTML-Formularen einige Designziele abgeleitet:&lt;br /&gt;
&lt;br /&gt;
* Eine einfachere, barrierefreie Interpretation auf heterogenen Geräten durch Absichts- statt Präsentationsorientierung.&lt;br /&gt;
* Eine strukturierte Entwicklungsform über die Trennung von Formulardaten und Präsentation nach dem MVC-Pattern.&lt;br /&gt;
* Ein reichhaltigeres Datenmodell für die Speicherung und den Transfer von Formulardaten durch typisiertes XML.&lt;br /&gt;
* Eine dynamischere, interaktive Bedienoberfläche ohne Scripting-Aufwand durch eventgekoppelte Aktions- und Widgetelemente.&lt;br /&gt;
* Eine Entlastung für Server und Netz, indem der Browser als Prozessknoten bei Validierung und Berechnungen mitarbeitet.&lt;br /&gt;
&lt;br /&gt;
=Formularstruktur nach MVC=&lt;br /&gt;
Bei XForms werden die Formulardaten (&#039;&#039;Model&#039;&#039;) von den korrespondierenden Formularfeldern (&#039;&#039;View&#039;&#039;) separiert beschrieben - die Steuerlogik (&#039;&#039;Controller&#039;&#039;) realisiert ein XForms-Prozessor im Browser. Mit XHTML als Trägerformat kann folgende repräsentative Struktur befüllt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;br /&gt;
     xmlns:xf=&amp;quot;http://www.w3.org/2002/xforms&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;head&amp;gt;&lt;br /&gt;
         Beschreibung des XForms Model&lt;br /&gt;
     &amp;lt;/head&amp;gt;&lt;br /&gt;
     &amp;lt;body&amp;gt;&lt;br /&gt;
         Beschreibung der XForms View&lt;br /&gt;
     &amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Anschauungsbeispiel einer Preisauskunft==&lt;br /&gt;
Als einführendes Beispiel wird nun für die Erklärung von Model- und View-Elementen eine primitive &#039;&#039;&#039;Preisauskunft&#039;&#039;&#039; für einen &#039;&#039;Produktkatalog&#039;&#039; konstruiert. Sie zeigt zu einer eingegebenen &#039;&#039;Produktnummer&#039;&#039; nach betätigen des Formular-Buttons den &#039;&#039;Preis&#039;&#039; des Produktes an:&lt;br /&gt;
&lt;br /&gt;
[[Medium:Xforms_example.png]]&lt;br /&gt;
&lt;br /&gt;
==Model==&lt;br /&gt;
Das XForms &#039;&#039;&#039;Model&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:model&amp;gt;&#039;&#039;) beschreibt Daten und Aktionen, die zur Erbringung der Grundfunktion nötig aber unabhängig von einer konkreten Darstellung sind. Beim Modell zur &#039;&#039;Preisauskunft&#039;&#039; sind folgende Elemente von zentraler Bedeutung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:model&amp;gt;&lt;br /&gt;
    &amp;lt;xf:instance xmlns=&amp;quot;&amp;quot; id=&amp;quot;transfer&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;product num=&amp;quot;1337&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;price&amp;gt;99.99&amp;lt;/price&amp;gt;&lt;br /&gt;
        &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:instance&amp;gt;&lt;br /&gt;
    &amp;lt;xf:bind id=&amp;quot;num&amp;quot; nodeset=&amp;quot;/product/@num&amp;quot; required=&amp;quot;true()&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xf:submission id=&amp;quot;fetch&amp;quot; action=&amp;quot;prices.xql&amp;quot; method=&amp;quot;get&amp;quot;&lt;br /&gt;
        ref=&amp;quot;instance(&#039;transfer&#039;)&amp;quot; replace=&amp;quot;instance&amp;quot; instance=&amp;quot;transfer&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instanzen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:instance&amp;gt;&#039;&#039;): dienen als XML-Templates, die im Zuge der Formularbearbeitung gefüllt, dem Server zugeschickt oder von ihm empfangen und präsentiert werden. Der Server liest aus obigen Transferdaten später z.B. das gesetzte &#039;&#039;num&#039;&#039;-Attribut aus, befüllt entsprechend das &#039;&#039;price&#039;&#039;-Element und schickt alles zurück zum Formular.&lt;br /&gt;
* &#039;&#039;&#039;Übermittlungen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:submission&amp;gt;&#039;&#039;): legen Transferaktionen fest, die im Laufe der Formularbearbeitung initiiert werden. Attribute konfigurieren die Übermittlung: angesprochene URI (&#039;&#039;action&#039;&#039;), verwendete HTTP-Methode (&#039;&#039;method&#039;&#039;), mitzusendende XML-Daten (&#039;&#039;ref&#039;&#039;), was durch die Serverantwort ersetzt wird (&#039;&#039;replace&#039;&#039;) und wie hier bei Instanzersetzung die Zielauswahl (instance).&lt;br /&gt;
* &#039;&#039;&#039;Bindings&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:bind&amp;gt;&#039;&#039;): erlauben es mittels XPath (&#039;&#039;nodeset&#039;&#039;) Knoten aus den &#039;&#039;Instanzen&#039;&#039; auszuwählen und über Attribute an Sonderleistungen zu knüpfen: Festlegen eines Identifizierers (&#039;&#039;id&#039;&#039;), Ausweisen als verbindlich (&#039;&#039;required&#039;&#039;), Ausweisen als schreibgeschützt (&#039;&#039;readonly&#039;&#039;), Zuweisen eines Datentyps zur Validierung (&#039;&#039;type&#039;&#039;) oder Berechnung des Knoteninhalts über XPath (&#039;&#039;calculate&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==View==&lt;br /&gt;
Die XForms &#039;&#039;&#039;View&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:view&amp;gt;&#039;&#039;) bedient sich am vorbereiteten Datenmodell und setzt es in Steuerelemente um. Für das Modell zur &#039;&#039;Preisauskunft&#039;&#039; könnten dies mit einem Input-Feld, einem Output-Feld und einem Submit-Button geschehen, mit einigen Besonderheiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:group&amp;gt;&lt;br /&gt;
     &amp;lt;xf:label&amp;gt;Preisauskunft&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;xf:input bind=&amp;quot;num&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktnummer&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:input&amp;gt;	&lt;br /&gt;
     &amp;lt;xf:output ref=&amp;quot;/product/price&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktpreis&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:output&amp;gt;&lt;br /&gt;
     &amp;lt;submit submission=&amp;quot;fetch&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xf:label&amp;gt;Abfrage&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/submit&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:group&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Visuelle &#039;&#039;&#039;Gruppierung&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:group&amp;gt;&#039;&#039;): Steuerelemente lassen sich einfach als Gruppe hervorheben.&lt;br /&gt;
* &#039;&#039;&#039;Labels&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:label&amp;gt;&#039;&#039;): Feldbezeichnungen sind in XForms verpflichtend und direkt den Feldern als Kindelement zugeordnet.&lt;br /&gt;
* &#039;&#039;&#039;Widgets&#039;&#039;&#039;: Referenzieren die Modelldaten entweder über XPath-Ausdrücke mit (&#039;&#039;ref&#039;&#039; bei &#039;&#039;&amp;lt;xf:output&amp;gt;&#039;&#039;) oder über im Modell vorgegebene Identifizierer (&#039;&#039;bind&#039;&#039; &amp;amp; &#039;&#039;submission&#039;&#039; bei &#039;&#039;&amp;lt;xf:input&amp;gt;&#039;&#039; und &#039;&#039;&amp;lt;xf:submit&amp;gt;&#039;&#039;). Die erste Variante ist weniger sauber, da damit die referenzierte Instanzstruktur bekannt sein muss (engere Kopplung).&lt;br /&gt;
&lt;br /&gt;
=Absichtsorientierte Formularelemente=&lt;br /&gt;
&lt;br /&gt;
=Eventgetriebene Aktionen=&lt;br /&gt;
&lt;br /&gt;
=Standardisierungsgeschichte=&lt;br /&gt;
* 10/2001: &#039;&#039;XML Events - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 08/2002: &#039;&#039;XForms 1.0 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 11/2003: &#039;&#039;XForms 1.0 - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 01/2004: &#039;&#039;XForms 1.1 - W3C Requirements&#039;&#039;&lt;br /&gt;
* 11/2004: &#039;&#039;XForms 1.1 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 10/2005: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Proposed Recommendation&#039;&#039;&lt;br /&gt;
* 03/2006: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 10/2007: &#039;&#039;XForms 1.0 (3rd Edition) -  W3C Recommendation&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Dubinko, Micah (2003): XForms Essentials. O’Reilly Media Inc., ISBN 0596003692.&lt;br /&gt;
* [http://www.w3.org/TR/xforms W3C - XForms 1.0 (Third Edition)]&lt;br /&gt;
* [http://www.w3.org/MarkUp/Forms W3C - The Forms Working Group]&lt;br /&gt;
* [http://www.w3schools.com/xforms W3Schools.com - XForms Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Xforms Wikipedia - XForms]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Datei:Xforms_example.png&amp;diff=11866</id>
		<title>Datei:Xforms example.png</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Datei:Xforms_example.png&amp;diff=11866"/>
		<updated>2008-07-01T17:46:57Z</updated>

		<summary type="html">&lt;p&gt;FaPe: XForms-Formular für eine primitive Preisauskunft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XForms-Formular für eine primitive Preisauskunft&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11865</id>
		<title>XForms</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11865"/>
		<updated>2008-07-01T17:46:22Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Formularstruktur nach MVC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition= &lt;br /&gt;
Die Beschreibungssprache &#039;&#039;&#039;XForms&#039;&#039;&#039; bietet eine deklarative Entwicklungsart für reichhaltige Webformulare, die XML als Transferformat akzeptieren und den Browser als Prozessknoten ausnutzen. Sie verspricht offensichtliche Schwächen der alten HTML-Formulargeneration zu beheben, ist nahtlos in gängige XML-Formate wie &#039;&#039;XHTML 1.0&#039;&#039; oder &#039;&#039;SVG&#039;&#039; integrierbar und wird nativer Bestandteil von &#039;&#039;XHTML 2.0&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
XForms wird im Rahmen des [http://www.w3.org W3C]-Konsortiums durch die &#039;&#039;Forms Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XForms 1.0&#039;&#039; trägt den finalen Status einer &#039;&#039;W3C Empfehlung&#039;&#039; und greift massiv auf [[XPath]] für Adressierung und Berechnungen zurück.&lt;br /&gt;
&lt;br /&gt;
=Designziele=&lt;br /&gt;
Bei XForms wurden aus den analysierten Schwächen von herkömmlichen HTML-Formularen einige Designziele abgeleitet:&lt;br /&gt;
&lt;br /&gt;
* Eine einfachere, barrierefreie Interpretation auf heterogenen Geräten durch Absichts- statt Präsentationsorientierung.&lt;br /&gt;
* Eine strukturierte Entwicklungsform über die Trennung von Formulardaten und Präsentation nach dem MVC-Pattern.&lt;br /&gt;
* Ein reichhaltigeres Datenmodell für die Speicherung und den Transfer von Formulardaten durch typisiertes XML.&lt;br /&gt;
* Eine dynamischere, interaktive Bedienoberfläche ohne Scripting-Aufwand durch eventgekoppelte Aktions- und Widgetelemente.&lt;br /&gt;
* Eine Entlastung für Server und Netz, indem der Browser als Prozessknoten bei Validierung und Berechnungen mitarbeitet.&lt;br /&gt;
&lt;br /&gt;
=Formularstruktur nach MVC=&lt;br /&gt;
Bei XForms werden die Formulardaten (&#039;&#039;Model&#039;&#039;) von den korrespondierenden Formularfeldern (&#039;&#039;View&#039;&#039;) separiert beschrieben - die Steuerlogik (&#039;&#039;Controller&#039;&#039;) realisiert ein XForms-Prozessor im Browser. Mit XHTML als Trägerformat kann folgende repräsentative Struktur befüllt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;br /&gt;
     xmlns:xf=&amp;quot;http://www.w3.org/2002/xforms&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;head&amp;gt;&lt;br /&gt;
         Beschreibung des XForms Model&lt;br /&gt;
     &amp;lt;/head&amp;gt;&lt;br /&gt;
     &amp;lt;body&amp;gt;&lt;br /&gt;
         Beschreibung der XForms View&lt;br /&gt;
     &amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Anschauungsbeispiel einer Preisauskunft==&lt;br /&gt;
Als einführendes Beispiel wird nun für die Erklärung von Model- und View-Elementen eine primitive &#039;&#039;&#039;Preisauskunft&#039;&#039;&#039; für einen &#039;&#039;Produktkatalog&#039;&#039; konstruiert. Sie zeigt zu einer eingegebenen &#039;&#039;Produktnummer&#039;&#039; den &#039;&#039;Preis&#039;&#039; des Produktes an:&lt;br /&gt;
&lt;br /&gt;
Resultat:&lt;br /&gt;
[[Medium:Xforms_example.png]]&lt;br /&gt;
&lt;br /&gt;
==Model==&lt;br /&gt;
Das XForms &#039;&#039;&#039;Model&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:model&amp;gt;&#039;&#039;) beschreibt Daten und Aktionen, die zur Erbringung der Grundfunktion nötig aber unabhängig von einer konkreten Darstellung sind. Beim Modell zur &#039;&#039;Preisauskunft&#039;&#039; sind folgende Elemente von zentraler Bedeutung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:model&amp;gt;&lt;br /&gt;
    &amp;lt;xf:instance xmlns=&amp;quot;&amp;quot; id=&amp;quot;transfer&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;product num=&amp;quot;1337&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;price&amp;gt;99.99&amp;lt;/price&amp;gt;&lt;br /&gt;
        &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;/xf:instance&amp;gt;&lt;br /&gt;
    &amp;lt;xf:bind id=&amp;quot;num&amp;quot; nodeset=&amp;quot;/product/@num&amp;quot; required=&amp;quot;true()&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;xf:submission id=&amp;quot;fetch&amp;quot; action=&amp;quot;prices.xql&amp;quot; method=&amp;quot;get&amp;quot;&lt;br /&gt;
        ref=&amp;quot;instance(&#039;transfer&#039;)&amp;quot; replace=&amp;quot;instance&amp;quot; instance=&amp;quot;transfer&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:model&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Instanzen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:instance&amp;gt;&#039;&#039;): dienen als XML-Templates, die im Zuge der Formularbearbeitung gefüllt, dem Server zugeschickt oder von ihm empfangen und präsentiert werden. Der Server liest aus obigen Transferdaten später z.B. das gesetzte &#039;&#039;num&#039;&#039;-Attribut aus, befüllt entsprechend das &#039;&#039;price&#039;&#039;-Element und schickt alles zurück zum Formular.&lt;br /&gt;
* &#039;&#039;&#039;Übermittlungen&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:submission&amp;gt;&#039;&#039;): legen Transferaktionen fest, die im Laufe der Formularbearbeitung initiiert werden. Attribute konfigurieren die Übermittlung: angesprochene URI (&#039;&#039;action&#039;&#039;), verwendete HTTP-Methode (&#039;&#039;method&#039;&#039;), mitzusendende XML-Daten (&#039;&#039;ref&#039;&#039;), was durch die Serverantwort ersetzt wird (&#039;&#039;replace&#039;&#039;) und wie hier bei Instanzersetzung die Zielauswahl (instance).&lt;br /&gt;
* &#039;&#039;&#039;Bindings&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:bind&amp;gt;&#039;&#039;): erlauben es mittels XPath (&#039;&#039;nodeset&#039;&#039;) Knoten aus den &#039;&#039;Instanzen&#039;&#039; auszuwählen und über Attribute an Sonderleistungen zu knüpfen: Festlegen eines Identifizierers (&#039;&#039;id&#039;&#039;), Ausweisen als verbindlich (&#039;&#039;required&#039;&#039;), Ausweisen als schreibgeschützt (&#039;&#039;readonly&#039;&#039;), Zuweisen eines Datentyps zur Validierung (&#039;&#039;type&#039;&#039;) oder Berechnung des Knoteninhalts über XPath (&#039;&#039;calculate&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==View==&lt;br /&gt;
Die XForms &#039;&#039;&#039;View&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:view&amp;gt;&#039;&#039;) bedient sich am vorbereiteten Datenmodell und setzt es in Steuerelemente um. Für das Modell zur &#039;&#039;Preisauskunft&#039;&#039; könnten dies mit einem Input-Feld, einem Output-Feld und einem Submit-Button geschehen, mit einigen Besonderheiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;xf:group&amp;gt;&lt;br /&gt;
     &amp;lt;xf:label&amp;gt;Preisauskunft&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;xf:input bind=&amp;quot;num&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktnummer&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:input&amp;gt;	&lt;br /&gt;
     &amp;lt;xf:output ref=&amp;quot;/product/price&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;xf:label&amp;gt;Produktpreis&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/xf:output&amp;gt;&lt;br /&gt;
     &amp;lt;submit submission=&amp;quot;fetch&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xf:label&amp;gt;Abfrage&amp;lt;/xf:label&amp;gt;&lt;br /&gt;
     &amp;lt;/submit&amp;gt;&lt;br /&gt;
 &amp;lt;/xf:group&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Visuelle &#039;&#039;&#039;Gruppierung&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:group&amp;gt;&#039;&#039;): Steuerelemente lassen sich einfach als Gruppe hervorheben.&lt;br /&gt;
* &#039;&#039;&#039;Labels&#039;&#039;&#039; (&#039;&#039;&amp;lt;xf:label&amp;gt;&#039;&#039;): Feldbezeichnungen sind in XForms verpflichtend und direkt den Feldern als Kindelement zugeordnet.&lt;br /&gt;
* &#039;&#039;&#039;Widgets&#039;&#039;&#039;: Referenzieren die Modelldaten entweder über XPath-Ausdrücke mit (&#039;&#039;ref&#039;&#039; bei &#039;&#039;&amp;lt;xf:output&amp;gt;&#039;&#039;) oder über im Modell vorgegebene Identifizierer (&#039;&#039;bind&#039;&#039; &amp;amp; &#039;&#039;submission&#039;&#039; bei &#039;&#039;&amp;lt;xf:input&amp;gt;&#039;&#039; und &#039;&#039;&amp;lt;xf:submit&amp;gt;&#039;&#039;). Die erste Variante ist weniger sauber, da damit die referenzierte Instanzstruktur bekannt sein muss (engere Kopplung).&lt;br /&gt;
&lt;br /&gt;
=Absichtsorientierte Formularelemente=&lt;br /&gt;
&lt;br /&gt;
=Eventgetriebene Aktionen=&lt;br /&gt;
&lt;br /&gt;
=Standardisierungsgeschichte=&lt;br /&gt;
* 10/2001: &#039;&#039;XML Events - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 08/2002: &#039;&#039;XForms 1.0 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 11/2003: &#039;&#039;XForms 1.0 - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 01/2004: &#039;&#039;XForms 1.1 - W3C Requirements&#039;&#039;&lt;br /&gt;
* 11/2004: &#039;&#039;XForms 1.1 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 10/2005: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Proposed Recommendation&#039;&#039;&lt;br /&gt;
* 03/2006: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 10/2007: &#039;&#039;XForms 1.0 (3rd Edition) -  W3C Recommendation&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Dubinko, Micah (2003): XForms Essentials. O’Reilly Media Inc., ISBN 0596003692.&lt;br /&gt;
* [http://www.w3.org/TR/xforms W3C - XForms 1.0 (Third Edition)]&lt;br /&gt;
* [http://www.w3.org/MarkUp/Forms W3C - The Forms Working Group]&lt;br /&gt;
* [http://www.w3schools.com/xforms W3Schools.com - XForms Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Xforms Wikipedia - XForms]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11864</id>
		<title>XForms</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11864"/>
		<updated>2008-07-01T16:17:17Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Designziele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition= &lt;br /&gt;
Die Beschreibungssprache &#039;&#039;&#039;XForms&#039;&#039;&#039; bietet eine deklarative Entwicklungsart für reichhaltige Webformulare, die XML als Transferformat akzeptieren und den Browser als Prozessknoten ausnutzen. Sie verspricht offensichtliche Schwächen der alten HTML-Formulargeneration zu beheben, ist nahtlos in gängige XML-Formate wie &#039;&#039;XHTML 1.0&#039;&#039; oder &#039;&#039;SVG&#039;&#039; integrierbar und wird nativer Bestandteil von &#039;&#039;XHTML 2.0&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
XForms wird im Rahmen des [http://www.w3.org W3C]-Konsortiums durch die &#039;&#039;Forms Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XForms 1.0&#039;&#039; trägt den finalen Status einer &#039;&#039;W3C Empfehlung&#039;&#039; und greift massiv auf [[XPath]] für Adressierung und Berechnungen zurück.&lt;br /&gt;
&lt;br /&gt;
=Designziele=&lt;br /&gt;
Bei XForms wurden aus den analysierten Schwächen von herkömmlichen HTML-Formularen einige Designziele abgeleitet:&lt;br /&gt;
&lt;br /&gt;
* Eine einfachere, barrierefreie Interpretation auf heterogenen Geräten durch Absichts- statt Präsentationsorientierung.&lt;br /&gt;
* Eine strukturierte Entwicklungsform über die Trennung von Formulardaten und Präsentation nach dem MVC-Pattern.&lt;br /&gt;
* Ein reichhaltigeres Datenmodell für die Speicherung und den Transfer von Formulardaten durch typisiertes XML.&lt;br /&gt;
* Eine dynamischere, interaktive Bedienoberfläche ohne Scripting-Aufwand durch eventgekoppelte Aktions- und Widgetelemente.&lt;br /&gt;
* Eine Entlastung für Server und Netz, indem der Browser als Prozessknoten bei Validierung und Berechnungen mitarbeitet.&lt;br /&gt;
&lt;br /&gt;
=Formularstruktur nach MVC=&lt;br /&gt;
&lt;br /&gt;
=Absichtsorientierte Formularelemente=&lt;br /&gt;
&lt;br /&gt;
=Eventgetriebene Aktionen=&lt;br /&gt;
&lt;br /&gt;
=Standardisierungsgeschichte=&lt;br /&gt;
* 10/2001: &#039;&#039;XML Events - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 08/2002: &#039;&#039;XForms 1.0 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 11/2003: &#039;&#039;XForms 1.0 - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 01/2004: &#039;&#039;XForms 1.1 - W3C Requirements&#039;&#039;&lt;br /&gt;
* 11/2004: &#039;&#039;XForms 1.1 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 10/2005: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Proposed Recommendation&#039;&#039;&lt;br /&gt;
* 03/2006: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 10/2007: &#039;&#039;XForms 1.0 (3rd Edition) -  W3C Recommendation&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Dubinko, Micah (2003): XForms Essentials. O’Reilly Media Inc., ISBN 0596003692.&lt;br /&gt;
* [http://www.w3.org/TR/xforms W3C - XForms 1.0 (Third Edition)]&lt;br /&gt;
* [http://www.w3.org/MarkUp/Forms W3C - The Forms Working Group]&lt;br /&gt;
* [http://www.w3schools.com/xforms W3Schools.com - XForms Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Xforms Wikipedia - XForms]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11863</id>
		<title>XForms</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11863"/>
		<updated>2008-07-01T16:15:01Z</updated>

		<summary type="html">&lt;p&gt;FaPe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition= &lt;br /&gt;
Die Beschreibungssprache &#039;&#039;&#039;XForms&#039;&#039;&#039; bietet eine deklarative Entwicklungsart für reichhaltige Webformulare, die XML als Transferformat akzeptieren und den Browser als Prozessknoten ausnutzen. Sie verspricht offensichtliche Schwächen der alten HTML-Formulargeneration zu beheben, ist nahtlos in gängige XML-Formate wie &#039;&#039;XHTML 1.0&#039;&#039; oder &#039;&#039;SVG&#039;&#039; integrierbar und wird nativer Bestandteil von &#039;&#039;XHTML 2.0&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
XForms wird im Rahmen des [http://www.w3.org W3C]-Konsortiums durch die &#039;&#039;Forms Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XForms 1.0&#039;&#039; trägt den finalen Status einer &#039;&#039;W3C Empfehlung&#039;&#039; und greift massiv auf [[XPath]] für Adressierung und Berechnungen zurück.&lt;br /&gt;
&lt;br /&gt;
=Designziele=&lt;br /&gt;
Bei XForms wurden aus den analysierten Schwächen von herkömmlichen HTML-Formularen einige Designentscheidungen abgeleitet:&lt;br /&gt;
&lt;br /&gt;
* Eine einfachere, barrierefreie Interpretation auf heterogenen Geräten durch Absichts- statt Präsentationsorientierung.&lt;br /&gt;
* Eine strukturierte Entwicklungsform über die Trennung von Formulardaten und Präsentation nach dem MVC-Pattern.&lt;br /&gt;
* Ein reichhaltigeres Datenmodell für die Speicherung und den Transfer von Formulardaten durch typisiertes XML.&lt;br /&gt;
* Eine dynamischere, interaktive Bedienoberfläche ohne Scripting-Aufwand durch eventgekoppelte Aktions- und Widgetelemente.&lt;br /&gt;
* Eine Entlastung für Server und Netz, indem der Browser als Prozessknoten bei Validierung und Berechnungen mitarbeitet.&lt;br /&gt;
&lt;br /&gt;
=Formularstruktur nach MVC=&lt;br /&gt;
&lt;br /&gt;
=Absichtsorientierte Formularelemente=&lt;br /&gt;
&lt;br /&gt;
=Eventgetriebene Aktionen=&lt;br /&gt;
&lt;br /&gt;
=Standardisierungsgeschichte=&lt;br /&gt;
* 10/2001: &#039;&#039;XML Events - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 08/2002: &#039;&#039;XForms 1.0 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 11/2003: &#039;&#039;XForms 1.0 - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 01/2004: &#039;&#039;XForms 1.1 - W3C Requirements&#039;&#039;&lt;br /&gt;
* 11/2004: &#039;&#039;XForms 1.1 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 10/2005: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Proposed Recommendation&#039;&#039;&lt;br /&gt;
* 03/2006: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 10/2007: &#039;&#039;XForms 1.0 (3rd Edition) -  W3C Recommendation&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Dubinko, Micah (2003): XForms Essentials. O’Reilly Media Inc., ISBN 0596003692.&lt;br /&gt;
* [http://www.w3.org/TR/xforms W3C - XForms 1.0 (Third Edition)]&lt;br /&gt;
* [http://www.w3.org/MarkUp/Forms W3C - The Forms Working Group]&lt;br /&gt;
* [http://www.w3schools.com/xforms W3Schools.com - XForms Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Xforms Wikipedia - XForms]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11862</id>
		<title>XForms</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11862"/>
		<updated>2008-07-01T16:09:06Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Designziele */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition= &lt;br /&gt;
Die Beschreibungssprache &#039;&#039;&#039;XForms&#039;&#039;&#039; bietet eine deklarative Entwicklungsart für reichhaltige Webformulare, die XML als Transferformat akzeptieren und den Browser als Prozessknoten ausnutzen. Sie verspricht offensichtliche Schwächen der alten HTML-Formulargeneration zu beheben, ist nahtlos in gängige XML-Formate wie &#039;&#039;XHTML 1.0&#039;&#039; oder &#039;&#039;SVG&#039;&#039; integrierbar und wird nativer Bestandteil von &#039;&#039;XHTML 2.0&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
XForms wird im Rahmen des [http://www.w3.org W3C]-Konsortiums durch die &#039;&#039;Forms Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XForms 1.0&#039;&#039; trägt den finalen Status einer &#039;&#039;W3C Empfehlung&#039;&#039; und greift massiv auf [[XPath]] für Adressierung und Berechnungen zurück.&lt;br /&gt;
&lt;br /&gt;
=Designziele=&lt;br /&gt;
Bei XForms wurden aus den analysierten Schwächen von herkömmlichen HTML-Formularen einige Designentscheidungen abgeleitet:&lt;br /&gt;
&lt;br /&gt;
* Eine einfachere, barrierefreie Interpretation auf heterogenen Geräten durch Absichts- statt Präsentationsorientierung.&lt;br /&gt;
* Eine strukturierte Entwicklungsform über die Trennung von Formulardaten und Präsentation nach dem MVC-Pattern.&lt;br /&gt;
* Ein reichhaltigeres Datenmodell für die Speicherung und den Transfer von Formulardaten durch typisiertes XML.&lt;br /&gt;
* Eine dynamischere, interaktive Bedienoberfläche ohne Scripting-Aufwand durch eventgekoppelte Aktions- und Widgetelemente.&lt;br /&gt;
* Eine Entlastung für Server und Netz, indem der Browser als Prozessknoten bei Validierung und Berechnungen mitarbeitet.&lt;br /&gt;
&lt;br /&gt;
=Standardisierungsgeschichte=&lt;br /&gt;
* 10/2001: &#039;&#039;XML Events - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 08/2002: &#039;&#039;XForms 1.0 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 11/2003: &#039;&#039;XForms 1.0 - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 01/2004: &#039;&#039;XForms 1.1 - W3C Requirements&#039;&#039;&lt;br /&gt;
* 11/2004: &#039;&#039;XForms 1.1 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 10/2005: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Proposed Recommendation&#039;&#039;&lt;br /&gt;
* 03/2006: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 10/2007: &#039;&#039;XForms 1.0 (3rd Edition) -  W3C Recommendation&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Dubinko, Micah (2003): XForms Essentials. O’Reilly Media Inc., ISBN 0596003692.&lt;br /&gt;
* [http://www.w3.org/TR/xforms W3C - XForms 1.0 (Third Edition)]&lt;br /&gt;
* [http://www.w3.org/MarkUp/Forms W3C - The Forms Working Group]&lt;br /&gt;
* [http://www.w3schools.com/xforms W3Schools.com - XForms Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Xforms Wikipedia - XForms]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11861</id>
		<title>XForms</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XForms&amp;diff=11861"/>
		<updated>2008-07-01T16:03:51Z</updated>

		<summary type="html">&lt;p&gt;FaPe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition= &lt;br /&gt;
Die Beschreibungssprache &#039;&#039;&#039;XForms&#039;&#039;&#039; bietet eine deklarative Entwicklungsart für reichhaltige Webformulare, die XML als Transferformat akzeptieren und den Browser als Prozessknoten ausnutzen. Sie verspricht offensichtliche Schwächen der alten HTML-Formulargeneration zu beheben, ist nahtlos in gängige XML-Formate wie &#039;&#039;XHTML 1.0&#039;&#039; oder &#039;&#039;SVG&#039;&#039; integrierbar und wird nativer Bestandteil von &#039;&#039;XHTML 2.0&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
XForms wird im Rahmen des [http://www.w3.org W3C]-Konsortiums durch die &#039;&#039;Forms Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XForms 1.0&#039;&#039; trägt den finalen Status einer &#039;&#039;W3C Empfehlung&#039;&#039; und greift massiv auf [[XPath]] für Adressierung und Berechnungen zurück.&lt;br /&gt;
&lt;br /&gt;
=Designziele=&lt;br /&gt;
Bei XForms wurden aus den analysierten Schwächen von herkömmlichen HTML-Formularen einige Designentscheidungen abgeleitet:&lt;br /&gt;
&lt;br /&gt;
* Eine einfachere, barrierefreie Interpretation auf heterogenen Geräten durch Absichts- statt Präsentationsorientierung.&lt;br /&gt;
* Eine strukturierte Entwicklungsform über die Trennung von Formulardaten und Präsentation nach dem MVC-Pattern.&lt;br /&gt;
* Ein reichhaltigeres Datenmodell für die Speicherung und den Transfer von Formulardaten durch typisiertes XML.&lt;br /&gt;
* Eine dynamischere, interaktive Bedienoberfläche ohne Scripting-Aufwand durch erweiterte Formularelemente.&lt;br /&gt;
* Eine Entlastung für Server und Netz, indem der Browser als Prozessknoten bei Validierung und Berechnungen mitarbeitet.&lt;br /&gt;
&lt;br /&gt;
=Standardisierungsgeschichte=&lt;br /&gt;
* 10/2001: &#039;&#039;XML Events - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 08/2002: &#039;&#039;XForms 1.0 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 11/2003: &#039;&#039;XForms 1.0 - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 01/2004: &#039;&#039;XForms 1.1 - W3C Requirements&#039;&#039;&lt;br /&gt;
* 11/2004: &#039;&#039;XForms 1.1 - W3C Working Draft&#039;&#039;&lt;br /&gt;
* 10/2005: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Proposed Recommendation&#039;&#039;&lt;br /&gt;
* 03/2006: &#039;&#039;XForms 1.0 (2nd Edition) - W3C Recommendation&#039;&#039;&lt;br /&gt;
* 10/2007: &#039;&#039;XForms 1.0 (3rd Edition) -  W3C Recommendation&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* Dubinko, Micah (2003): XForms Essentials. O’Reilly Media Inc., ISBN 0596003692.&lt;br /&gt;
* [http://www.w3.org/TR/xforms W3C - XForms 1.0 (Third Edition)]&lt;br /&gt;
* [http://www.w3.org/MarkUp/Forms W3C - The Forms Working Group]&lt;br /&gt;
* [http://www.w3schools.com/xforms W3Schools.com - XForms Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Xforms Wikipedia - XForms]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11860</id>
		<title>XML Path Language</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11860"/>
		<updated>2008-07-01T14:34:14Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Achse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Definition =&lt;br /&gt;
Die &#039;&#039;&#039;XML Path Language (XPath)&#039;&#039;&#039; ist eine Abfragesprache, die XML-Fragmente als Baum interpretiert und daraus eine Selektion einer Knotenmenge ermöglicht (Lokalisierung).&lt;br /&gt;
&lt;br /&gt;
XPath wird im Rahmen des [http://www.w3.org W3C]-Konsortiums gemeinsam durch die &#039;&#039;XSL Working Group&#039;&#039; und &#039;&#039;XML Linking Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XPath 2.0&#039;&#039; und Vorgänger tragen den finalen Status der &#039;&#039;W3C Empfehlung&#039;&#039;. XPath gilt als essentielles Fundament für weitere XML-basierte W3C-Standards wie [[XQuery]], [[XSLT]] oder [[XForms]].&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
Ein XPath bietet praktisch eine gefilterte Sicht auf ein &#039;&#039;&#039;unverändertes&#039;&#039;&#039; Eingabedokument, die nur interessierende XML-Knoten zeigt. Den Vorgang bezeichnet man daher auch oft als Navigation oder Addressierung in einem XML-Dokument.&lt;br /&gt;
&lt;br /&gt;
=Datenmodell=&lt;br /&gt;
Als Datenmodell dient eine logische Interpretation geparster XML-Dokumente als baumartig geordnete Sequenz von Einheiten. Über die Ordnung bestimmen Verschachtelung und Dokumentreihenfolge. Die Einheiten heißen &#039;&#039;Knoten&#039;&#039; und können an Blattpositionen &#039;&#039;Werte&#039;&#039; atomaren Typs tragen.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;Knotentypen&#039;&#039; umfassen:&lt;br /&gt;
* Wurzelknoten (root nodes)&lt;br /&gt;
* Elementknoten (element nodes)&lt;br /&gt;
* Textknoten (text nodes)&lt;br /&gt;
* Attributknoten (attribut nodes)&lt;br /&gt;
* Namensraumknoten (namespace nodes)&lt;br /&gt;
* Verarbeitungsanweisungs-Knoten (processing instruction nodes)&lt;br /&gt;
* Kommentarknoten (comment nodes)&lt;br /&gt;
&lt;br /&gt;
Als &#039;&#039;Wertetypen&#039;&#039; dienen:&lt;br /&gt;
* XML Schema Datentypen (z.B. integer, string, ...)&lt;br /&gt;
* Weitere fünf XPath-Typen (z.B. anyAtomicType, untyped, ...)&lt;br /&gt;
&lt;br /&gt;
Alle Knoteneigenschaften können über Quasifunktionen (Accessors) ausgelesen werden, die z.B. den qualifizierten Namen, getragene Typ und Wert oder Eltern und Kinder in der Ordnung zurückgeben. Das Datenmodell wird mittlerweile als [http://www.w3.org/TR/xpath-datamodel XQuery 1.0 and XPath 2.0 Data Model] eigenständig standardisiert.&lt;br /&gt;
&lt;br /&gt;
=Lokalisierung=&lt;br /&gt;
Ein XPath-Lokalisierungspfad ist nun ein Ausdruck, der eine Menge von 0 bis n Knoten aus diesem Baum auswählt, welche hinsichtlich sukzessiver, durch &#039;&#039;/&#039;&#039; separierter Lokalisierungskriterien übereinstimmen. Beginnt der Pfad bereits mit einem Schrägstrich, so ist er absolut d.h. beginnend von der Wurzel auszuwerten, andernfalls relativ zum Kontext. Jeder Lokalisierungsschritt präzisiert die Selektion und hat die folgende Syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/&amp;lt;Achse&amp;gt;::&amp;lt;Knotentest&amp;gt;&amp;lt;Prädikat&amp;gt;*&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Achse==&lt;br /&gt;
Achsen werden stets vom aktuellen Kontextknoten angelegt und grenzen die Auswahl für den nächsten Schritt auf eine Untermenge ein, die in einer bestimmten Beziehung zum Kontextknoten stehen. Diese erinnern oft an Familienbeziehungen und resultieren aus der Baumstruktur:&lt;br /&gt;
&lt;br /&gt;
[[Medium:Xpath_axes.png]]&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Achsen umfassen:&lt;br /&gt;
* self: der Knoten selber&lt;br /&gt;
* child: Kinder des Knotens&lt;br /&gt;
* parent: Eltern des Knotens&lt;br /&gt;
* descendant: Kinder und Kindeskinder des Knotens&lt;br /&gt;
* ancestor: Eltern und Vorfahren des Knotens&lt;br /&gt;
* attribute: Attribute des Knotens&lt;br /&gt;
* preceding: Vorhergehend in Dokumentrichtung&lt;br /&gt;
* following: Nachfolgend in Dokumentrichtung&lt;br /&gt;
* Kombinationen sind teils verfügbar wie z.B. descendant-or-self&lt;br /&gt;
&lt;br /&gt;
==Knotentest==&lt;br /&gt;
Ein Knotentest wählt nun aus der durch die Achse eingeschränkten Menge diejenigen Knoten aus, die den Knotentest bestehen. Zur Prüfung kann man folgende Alternativen wählen:&lt;br /&gt;
&lt;br /&gt;
* Knotenname: Formulierung durch die Angabe eines Knotennamens (* dient als Wildcard).&lt;br /&gt;
* Knotentyp: Formulierung durch die Angabe einer XPath-Funktion, die den Typ zurückgibt (z.B. text() für Textknoten, attribute() für Attributknoten).&lt;br /&gt;
&lt;br /&gt;
==Prädikate==&lt;br /&gt;
Prädikate werden in eckige Klammern gefasst und können beliebig oft angehängt werden. Sie filtern die Knotenmenge erneut über zwei mögliche Arten:&lt;br /&gt;
&lt;br /&gt;
* Listenindex: Wählt für den Listenindex n aus der Knotenmenge nur den n-ten Knoten aus ([1] entspricht dem ersten).&lt;br /&gt;
* Boolscher Ausdruck: Wählt aus der Knotenmenge nur diejenigen, die den Ausdruck auf &#039;&#039;true&#039;&#039; auswerten.&lt;br /&gt;
&lt;br /&gt;
==Achsenabkürzungen==&lt;br /&gt;
Um den Schreibaufwand zu reduzieren wurden angeregt von Navigationsschematas aus Dateisystemen einige Abkürzungen für häufige Achsenschritte eingeführt:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;child::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;descendant-or-self::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;self::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;parent::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;attribute::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Funktionen und Operatoren==&lt;br /&gt;
XPath-Ausdrücken stehen logische, numerische, String-manipulierende oder kontextbezogene Funktionen und Operationen bereit, um Ausdrücke zu errechnen oder zu verbinden. Für eine vollständige Liste sei auf [http://www.w3.org/TR/xpath-functions XQuery 1.0 and XPath 2.0 Functions and Operators] verwiesen.&lt;br /&gt;
&lt;br /&gt;
=Beispiele= &lt;br /&gt;
Gegeben sei folgendes XML-Eingabedokument:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;!-- modified from XQuery by Priscilla Walmsley (c) O&#039;Reilly Media 2007 --&amp;gt;&lt;br /&gt;
 &amp;lt;!-- Product catalog input document--&amp;gt;&lt;br /&gt;
 &amp;lt;catalog&amp;gt;&lt;br /&gt;
    &amp;lt;product dept=&amp;quot;Storage&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;1337&amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;name lang=&amp;quot;EN&amp;quot;&amp;gt;SuperDrive&amp;lt;/name&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;product dept=&amp;quot;CPU&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;3337&amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;name lang=&amp;quot;DE&amp;quot;&amp;gt;Rechengenie&amp;lt;/name&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;product dept=&amp;quot;Storage&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;2337&amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;name lang=&amp;quot;EN&amp;quot;&amp;gt;XtremeDrive&amp;lt;/name&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/product&amp;gt;&lt;br /&gt;
 &amp;lt;/catalog&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/child::catalog&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;/child::*&amp;lt;/code&amp;gt; wählen hier beide den &#039;&#039;Katalog&#039;&#039;knoten&lt;br /&gt;
* &amp;lt;code&amp;gt;/child::catalog/child::product&amp;lt;/code&amp;gt; oder kurz &amp;lt;code&amp;gt;/catalog/product&amp;lt;/code&amp;gt; selektiert die 3 &#039;&#039;Produkt&#039;&#039;knoten&lt;br /&gt;
* &amp;lt;code&amp;gt;/descendant-or-self::product&amp;lt;/code&amp;gt; oder kurz &amp;lt;code&amp;gt;//product&amp;lt;/code&amp;gt; selektiert ebenfalls die 3 &#039;&#039;Produkt&#039;&#039;knoten&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[@dept=&amp;quot;Storage&amp;quot;]&amp;lt;/code&amp;gt; selektiert die beiden &#039;&#039;Produkt&#039;&#039;knoten der Sparte &#039;&#039;Storage&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[@dept=&amp;quot;Storage&amp;quot;][1]&amp;lt;/code&amp;gt; schränkt diese Auswahl auf den ersten Knoten der Sparte &#039;&#039;Storage&#039;&#039; ein, also &#039;&#039;SuperDrive&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;//text()&amp;lt;/code&amp;gt; wählt alle Textknoten aus dem Dokument also &#039;&#039;1337&#039;&#039;, &#039;&#039;SuperDrive&#039;&#039;, &#039;&#039;33337&#039;&#039;, &#039;&#039;HighSpeedCPU&#039;&#039;, &#039;&#039;2337&#039;&#039;, &#039;&#039;XtremeDrive&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[./name/@lang=&amp;quot;EN&amp;quot;]&amp;lt;/code&amp;gt; selektiert nur die &#039;&#039;Produkt&#039;&#039;knoten mit einem &#039;&#039;englischen&#039;&#039; Namenselement&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[./name/@lang=&amp;quot;EN&amp;quot; and data(./name)=&amp;quot;SuperDrive&amp;quot;]&amp;lt;/code&amp;gt; wählt entsprechend das &#039;&#039;Produkt&#039;&#039; mit dem &#039;&#039;englischen&#039;&#039; Namen &#039;&#039;SuperDrive&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Quellen =&lt;br /&gt;
* Skulschus, Marco; Kozik, Jan; Wiederstein, Marcus (2007): XSLT, XPath und XQuery. Comelio Medien, ISBN 3939701181.&lt;br /&gt;
* Walmsley, Priscilla (2007): XQuery. O’Reilly Media Inc., ISBN 0596006349.&lt;br /&gt;
* [http://www.w3.org/TR/xpath W3C - XML Path Language (XPath) Version 1.0]&lt;br /&gt;
* [http://www.w3.org/TR/xpath20 W3C - XML Path Language (XPath) Version 2.0]&lt;br /&gt;
* [http://www.w3.org/TR/xpath-datamodel W3C - XQuery 1.0 and XPath 2.0 Data Model (XDM)]&lt;br /&gt;
* [http://www.w3.org/TR/xpath-functions W3C - XQuery 1.0 and XPath 2.0 Functions and Operators]&lt;br /&gt;
* [http://www.w3schools.com/xpath/default.asp W3C Schools - XPath Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/XPath Wikipedia - XPath]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;br /&gt;
{{Verbesserungswürdiger Inhalt&lt;br /&gt;
| Genauer             = true &lt;br /&gt;
| Sprache = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11859</id>
		<title>XML Path Language</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11859"/>
		<updated>2008-07-01T14:09:16Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Bemerkungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Definition =&lt;br /&gt;
Die &#039;&#039;&#039;XML Path Language (XPath)&#039;&#039;&#039; ist eine Abfragesprache, die XML-Fragmente als Baum interpretiert und daraus eine Selektion einer Knotenmenge ermöglicht (Lokalisierung).&lt;br /&gt;
&lt;br /&gt;
XPath wird im Rahmen des [http://www.w3.org W3C]-Konsortiums gemeinsam durch die &#039;&#039;XSL Working Group&#039;&#039; und &#039;&#039;XML Linking Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XPath 2.0&#039;&#039; und Vorgänger tragen den finalen Status der &#039;&#039;W3C Empfehlung&#039;&#039;. XPath gilt als essentielles Fundament für weitere XML-basierte W3C-Standards wie [[XQuery]], [[XSLT]] oder [[XForms]].&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
Ein XPath bietet praktisch eine gefilterte Sicht auf ein &#039;&#039;&#039;unverändertes&#039;&#039;&#039; Eingabedokument, die nur interessierende XML-Knoten zeigt. Den Vorgang bezeichnet man daher auch oft als Navigation oder Addressierung in einem XML-Dokument.&lt;br /&gt;
&lt;br /&gt;
=Datenmodell=&lt;br /&gt;
Als Datenmodell dient eine logische Interpretation geparster XML-Dokumente als baumartig geordnete Sequenz von Einheiten. Über die Ordnung bestimmen Verschachtelung und Dokumentreihenfolge. Die Einheiten heißen &#039;&#039;Knoten&#039;&#039; und können an Blattpositionen &#039;&#039;Werte&#039;&#039; atomaren Typs tragen.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;Knotentypen&#039;&#039; umfassen:&lt;br /&gt;
* Wurzelknoten (root nodes)&lt;br /&gt;
* Elementknoten (element nodes)&lt;br /&gt;
* Textknoten (text nodes)&lt;br /&gt;
* Attributknoten (attribut nodes)&lt;br /&gt;
* Namensraumknoten (namespace nodes)&lt;br /&gt;
* Verarbeitungsanweisungs-Knoten (processing instruction nodes)&lt;br /&gt;
* Kommentarknoten (comment nodes)&lt;br /&gt;
&lt;br /&gt;
Als &#039;&#039;Wertetypen&#039;&#039; dienen:&lt;br /&gt;
* XML Schema Datentypen (z.B. integer, string, ...)&lt;br /&gt;
* Weitere fünf XPath-Typen (z.B. anyAtomicType, untyped, ...)&lt;br /&gt;
&lt;br /&gt;
Alle Knoteneigenschaften können über Quasifunktionen (Accessors) ausgelesen werden, die z.B. den qualifizierten Namen, getragene Typ und Wert oder Eltern und Kinder in der Ordnung zurückgeben. Das Datenmodell wird mittlerweile als [http://www.w3.org/TR/xpath-datamodel XQuery 1.0 and XPath 2.0 Data Model] eigenständig standardisiert.&lt;br /&gt;
&lt;br /&gt;
=Lokalisierung=&lt;br /&gt;
Ein XPath-Lokalisierungspfad ist nun ein Ausdruck, der eine Menge von 0 bis n Knoten aus diesem Baum auswählt, welche hinsichtlich sukzessiver, durch &#039;&#039;/&#039;&#039; separierter Lokalisierungskriterien übereinstimmen. Beginnt der Pfad bereits mit einem Schrägstrich, so ist er absolut d.h. beginnend von der Wurzel auszuwerten, andernfalls relativ zum Kontext. Jeder Lokalisierungsschritt präzisiert die Selektion und hat die folgende Syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/&amp;lt;Achse&amp;gt;::&amp;lt;Knotentest&amp;gt;&amp;lt;Prädikat&amp;gt;*&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Achse==&lt;br /&gt;
Achsen werden stets vom aktuellen Kontextknoten angelegt und grenzen die Auswahl für den nächsten Schritt auf eine Untermenge ein, die in einer bestimmten Beziehung zum Kontextknoten stehen. Diese erinnern oft an Familienbeziehungen und resultieren aus der Baumstruktur:&lt;br /&gt;
&lt;br /&gt;
[[Medium:Xpath_axes.png]]&lt;br /&gt;
&lt;br /&gt;
* self: der Knoten selber&lt;br /&gt;
* child: Kinder des Knotens&lt;br /&gt;
* parent: Eltern des Knotens&lt;br /&gt;
* descendant: Kinder und Kindeskinder des Knotens&lt;br /&gt;
* ancestors: Eltern und Vorfahren des Knotens&lt;br /&gt;
* attribute: Attribute des Knotens&lt;br /&gt;
* preceding: Vorhergehend in Dokumentrichtung&lt;br /&gt;
* following: Nachfolgend in Dokumentrichtung&lt;br /&gt;
* Einige Kombinationen stehen auch bereit wie z.B. descendant-or-self&lt;br /&gt;
&lt;br /&gt;
==Knotentest==&lt;br /&gt;
Ein Knotentest wählt nun aus der durch die Achse eingeschränkten Menge diejenigen Knoten aus, die den Knotentest bestehen. Zur Prüfung kann man folgende Alternativen wählen:&lt;br /&gt;
&lt;br /&gt;
* Knotenname: Formulierung durch die Angabe eines Knotennamens (* dient als Wildcard).&lt;br /&gt;
* Knotentyp: Formulierung durch die Angabe einer XPath-Funktion, die den Typ zurückgibt (z.B. text() für Textknoten, attribute() für Attributknoten).&lt;br /&gt;
&lt;br /&gt;
==Prädikate==&lt;br /&gt;
Prädikate werden in eckige Klammern gefasst und können beliebig oft angehängt werden. Sie filtern die Knotenmenge erneut über zwei mögliche Arten:&lt;br /&gt;
&lt;br /&gt;
* Listenindex: Wählt für den Listenindex n aus der Knotenmenge nur den n-ten Knoten aus ([1] entspricht dem ersten).&lt;br /&gt;
* Boolscher Ausdruck: Wählt aus der Knotenmenge nur diejenigen, die den Ausdruck auf &#039;&#039;true&#039;&#039; auswerten.&lt;br /&gt;
&lt;br /&gt;
==Achsenabkürzungen==&lt;br /&gt;
Um den Schreibaufwand zu reduzieren wurden angeregt von Navigationsschematas aus Dateisystemen einige Abkürzungen für häufige Achsenschritte eingeführt:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;child::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;descendant-or-self::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;self::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;parent::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;attribute::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Funktionen und Operatoren==&lt;br /&gt;
XPath-Ausdrücken stehen logische, numerische, String-manipulierende oder kontextbezogene Funktionen und Operationen bereit, um Ausdrücke zu errechnen oder zu verbinden. Für eine vollständige Liste sei auf [http://www.w3.org/TR/xpath-functions XQuery 1.0 and XPath 2.0 Functions and Operators] verwiesen.&lt;br /&gt;
&lt;br /&gt;
=Beispiele= &lt;br /&gt;
Gegeben sei folgendes XML-Eingabedokument:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;!-- modified from XQuery by Priscilla Walmsley (c) O&#039;Reilly Media 2007 --&amp;gt;&lt;br /&gt;
 &amp;lt;!-- Product catalog input document--&amp;gt;&lt;br /&gt;
 &amp;lt;catalog&amp;gt;&lt;br /&gt;
    &amp;lt;product dept=&amp;quot;Storage&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;1337&amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;name lang=&amp;quot;EN&amp;quot;&amp;gt;SuperDrive&amp;lt;/name&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;product dept=&amp;quot;CPU&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;3337&amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;name lang=&amp;quot;DE&amp;quot;&amp;gt;Rechengenie&amp;lt;/name&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;product dept=&amp;quot;Storage&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;2337&amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;name lang=&amp;quot;EN&amp;quot;&amp;gt;XtremeDrive&amp;lt;/name&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/product&amp;gt;&lt;br /&gt;
 &amp;lt;/catalog&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/child::catalog&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;/child::*&amp;lt;/code&amp;gt; wählen hier beide den &#039;&#039;Katalog&#039;&#039;knoten&lt;br /&gt;
* &amp;lt;code&amp;gt;/child::catalog/child::product&amp;lt;/code&amp;gt; oder kurz &amp;lt;code&amp;gt;/catalog/product&amp;lt;/code&amp;gt; selektiert die 3 &#039;&#039;Produkt&#039;&#039;knoten&lt;br /&gt;
* &amp;lt;code&amp;gt;/descendant-or-self::product&amp;lt;/code&amp;gt; oder kurz &amp;lt;code&amp;gt;//product&amp;lt;/code&amp;gt; selektiert ebenfalls die 3 &#039;&#039;Produkt&#039;&#039;knoten&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[@dept=&amp;quot;Storage&amp;quot;]&amp;lt;/code&amp;gt; selektiert die beiden &#039;&#039;Produkt&#039;&#039;knoten der Sparte &#039;&#039;Storage&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[@dept=&amp;quot;Storage&amp;quot;][1]&amp;lt;/code&amp;gt; schränkt diese Auswahl auf den ersten Knoten der Sparte &#039;&#039;Storage&#039;&#039; ein, also &#039;&#039;SuperDrive&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;//text()&amp;lt;/code&amp;gt; wählt alle Textknoten aus dem Dokument also &#039;&#039;1337&#039;&#039;, &#039;&#039;SuperDrive&#039;&#039;, &#039;&#039;33337&#039;&#039;, &#039;&#039;HighSpeedCPU&#039;&#039;, &#039;&#039;2337&#039;&#039;, &#039;&#039;XtremeDrive&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[./name/@lang=&amp;quot;EN&amp;quot;]&amp;lt;/code&amp;gt; selektiert nur die &#039;&#039;Produkt&#039;&#039;knoten mit einem &#039;&#039;englischen&#039;&#039; Namenselement&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[./name/@lang=&amp;quot;EN&amp;quot; and data(./name)=&amp;quot;SuperDrive&amp;quot;]&amp;lt;/code&amp;gt; wählt entsprechend das &#039;&#039;Produkt&#039;&#039; mit dem &#039;&#039;englischen&#039;&#039; Namen &#039;&#039;SuperDrive&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Quellen =&lt;br /&gt;
* Skulschus, Marco; Kozik, Jan; Wiederstein, Marcus (2007): XSLT, XPath und XQuery. Comelio Medien, ISBN 3939701181.&lt;br /&gt;
* Walmsley, Priscilla (2007): XQuery. O’Reilly Media Inc., ISBN 0596006349.&lt;br /&gt;
* [http://www.w3.org/TR/xpath W3C - XML Path Language (XPath) Version 1.0]&lt;br /&gt;
* [http://www.w3.org/TR/xpath20 W3C - XML Path Language (XPath) Version 2.0]&lt;br /&gt;
* [http://www.w3.org/TR/xpath-datamodel W3C - XQuery 1.0 and XPath 2.0 Data Model (XDM)]&lt;br /&gt;
* [http://www.w3.org/TR/xpath-functions W3C - XQuery 1.0 and XPath 2.0 Functions and Operators]&lt;br /&gt;
* [http://www.w3schools.com/xpath/default.asp W3C Schools - XPath Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/XPath Wikipedia - XPath]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;br /&gt;
{{Verbesserungswürdiger Inhalt&lt;br /&gt;
| Genauer             = true &lt;br /&gt;
| Sprache = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11858</id>
		<title>XML Path Language</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11858"/>
		<updated>2008-07-01T12:27:25Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Quellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Definition =&lt;br /&gt;
Die &#039;&#039;&#039;XML Path Language (XPath)&#039;&#039;&#039; ist eine Abfragesprache, die XML-Fragmente als Baum interpretiert und daraus eine Selektion einer Knotenmenge ermöglicht (Lokalisierung).&lt;br /&gt;
&lt;br /&gt;
XPath wird im Rahmen des [http://www.w3.org W3C]-Konsortiums gemeinsam durch die &#039;&#039;XSL Working Group&#039;&#039; und &#039;&#039;XML Linking Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XPath 2.0&#039;&#039; und Vorgänger tragen den finalen Status der &#039;&#039;W3C Empfehlung&#039;&#039;. XPath gilt als essentielles Fundament für weitere XML-basierte W3C-Standards wie [[XQuery]], [[XSLT]] oder [[XForms]].&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
XPath ermöglicht praktisch filternde Sichten auf &#039;&#039;&#039;unveränderte&#039;&#039;&#039; Eingabedokumente, die nur interessierende XML-Knoten und deren Inhalt umfassen.&lt;br /&gt;
&lt;br /&gt;
=Datenmodell=&lt;br /&gt;
Als Datenmodell dient eine logische Interpretation geparster XML-Dokumente als baumartig geordnete Sequenz von Einheiten. Über die Ordnung bestimmen Verschachtelung und Dokumentreihenfolge. Die Einheiten heißen &#039;&#039;Knoten&#039;&#039; und können an Blattpositionen &#039;&#039;Werte&#039;&#039; atomaren Typs tragen.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;Knotentypen&#039;&#039; umfassen:&lt;br /&gt;
* Wurzelknoten (root nodes)&lt;br /&gt;
* Elementknoten (element nodes)&lt;br /&gt;
* Textknoten (text nodes)&lt;br /&gt;
* Attributknoten (attribut nodes)&lt;br /&gt;
* Namensraumknoten (namespace nodes)&lt;br /&gt;
* Verarbeitungsanweisungs-Knoten (processing instruction nodes)&lt;br /&gt;
* Kommentarknoten (comment nodes)&lt;br /&gt;
&lt;br /&gt;
Als &#039;&#039;Wertetypen&#039;&#039; dienen:&lt;br /&gt;
* XML Schema Datentypen (z.B. integer, string, ...)&lt;br /&gt;
* Weitere fünf XPath-Typen (z.B. anyAtomicType, untyped, ...)&lt;br /&gt;
&lt;br /&gt;
Alle Knoteneigenschaften können über Quasifunktionen (Accessors) ausgelesen werden, die z.B. den qualifizierten Namen, getragene Typ und Wert oder Eltern und Kinder in der Ordnung zurückgeben. Das Datenmodell wird mittlerweile als [http://www.w3.org/TR/xpath-datamodel XQuery 1.0 and XPath 2.0 Data Model] eigenständig standardisiert.&lt;br /&gt;
&lt;br /&gt;
=Lokalisierung=&lt;br /&gt;
Ein XPath-Lokalisierungspfad ist nun ein Ausdruck, der eine Menge von 0 bis n Knoten aus diesem Baum auswählt, welche hinsichtlich sukzessiver, durch &#039;&#039;/&#039;&#039; separierter Lokalisierungskriterien übereinstimmen. Beginnt der Pfad bereits mit einem Schrägstrich, so ist er absolut d.h. beginnend von der Wurzel auszuwerten, andernfalls relativ zum Kontext. Jeder Lokalisierungsschritt präzisiert die Selektion und hat die folgende Syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/&amp;lt;Achse&amp;gt;::&amp;lt;Knotentest&amp;gt;&amp;lt;Prädikat&amp;gt;*&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Achse==&lt;br /&gt;
Achsen werden stets vom aktuellen Kontextknoten angelegt und grenzen die Auswahl für den nächsten Schritt auf eine Untermenge ein, die in einer bestimmten Beziehung zum Kontextknoten stehen. Diese erinnern oft an Familienbeziehungen und resultieren aus der Baumstruktur:&lt;br /&gt;
&lt;br /&gt;
[[Medium:Xpath_axes.png]]&lt;br /&gt;
&lt;br /&gt;
* self: der Knoten selber&lt;br /&gt;
* child: Kinder des Knotens&lt;br /&gt;
* parent: Eltern des Knotens&lt;br /&gt;
* descendant: Kinder und Kindeskinder des Knotens&lt;br /&gt;
* ancestors: Eltern und Vorfahren des Knotens&lt;br /&gt;
* attribute: Attribute des Knotens&lt;br /&gt;
* preceding: Vorhergehend in Dokumentrichtung&lt;br /&gt;
* following: Nachfolgend in Dokumentrichtung&lt;br /&gt;
* Einige Kombinationen stehen auch bereit wie z.B. descendant-or-self&lt;br /&gt;
&lt;br /&gt;
==Knotentest==&lt;br /&gt;
Ein Knotentest wählt nun aus der durch die Achse eingeschränkten Menge diejenigen Knoten aus, die den Knotentest bestehen. Zur Prüfung kann man folgende Alternativen wählen:&lt;br /&gt;
&lt;br /&gt;
* Knotenname: Formulierung durch die Angabe eines Knotennamens (* dient als Wildcard).&lt;br /&gt;
* Knotentyp: Formulierung durch die Angabe einer XPath-Funktion, die den Typ zurückgibt (z.B. text() für Textknoten, attribute() für Attributknoten).&lt;br /&gt;
&lt;br /&gt;
==Prädikate==&lt;br /&gt;
Prädikate werden in eckige Klammern gefasst und können beliebig oft angehängt werden. Sie filtern die Knotenmenge erneut über zwei mögliche Arten:&lt;br /&gt;
&lt;br /&gt;
* Listenindex: Wählt für den Listenindex n aus der Knotenmenge nur den n-ten Knoten aus ([1] entspricht dem ersten).&lt;br /&gt;
* Boolscher Ausdruck: Wählt aus der Knotenmenge nur diejenigen, die den Ausdruck auf &#039;&#039;true&#039;&#039; auswerten.&lt;br /&gt;
&lt;br /&gt;
==Achsenabkürzungen==&lt;br /&gt;
Um den Schreibaufwand zu reduzieren wurden angeregt von Navigationsschematas aus Dateisystemen einige Abkürzungen für häufige Achsenschritte eingeführt:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;child::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;descendant-or-self::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;self::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;parent::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;attribute::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Funktionen und Operatoren==&lt;br /&gt;
XPath-Ausdrücken stehen logische, numerische, String-manipulierende oder kontextbezogene Funktionen und Operationen bereit, um Ausdrücke zu errechnen oder zu verbinden. Für eine vollständige Liste sei auf [http://www.w3.org/TR/xpath-functions XQuery 1.0 and XPath 2.0 Functions and Operators] verwiesen.&lt;br /&gt;
&lt;br /&gt;
=Beispiele= &lt;br /&gt;
Gegeben sei folgendes XML-Eingabedokument:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;!-- modified from XQuery by Priscilla Walmsley (c) O&#039;Reilly Media 2007 --&amp;gt;&lt;br /&gt;
 &amp;lt;!-- Product catalog input document--&amp;gt;&lt;br /&gt;
 &amp;lt;catalog&amp;gt;&lt;br /&gt;
    &amp;lt;product dept=&amp;quot;Storage&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;1337&amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;name lang=&amp;quot;EN&amp;quot;&amp;gt;SuperDrive&amp;lt;/name&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;product dept=&amp;quot;CPU&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;3337&amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;name lang=&amp;quot;DE&amp;quot;&amp;gt;Rechengenie&amp;lt;/name&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;product dept=&amp;quot;Storage&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;2337&amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;name lang=&amp;quot;EN&amp;quot;&amp;gt;XtremeDrive&amp;lt;/name&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/product&amp;gt;&lt;br /&gt;
 &amp;lt;/catalog&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/child::catalog&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;/child::*&amp;lt;/code&amp;gt; wählen hier beide den &#039;&#039;Katalog&#039;&#039;knoten&lt;br /&gt;
* &amp;lt;code&amp;gt;/child::catalog/child::product&amp;lt;/code&amp;gt; oder kurz &amp;lt;code&amp;gt;/catalog/product&amp;lt;/code&amp;gt; selektiert die 3 &#039;&#039;Produkt&#039;&#039;knoten&lt;br /&gt;
* &amp;lt;code&amp;gt;/descendant-or-self::product&amp;lt;/code&amp;gt; oder kurz &amp;lt;code&amp;gt;//product&amp;lt;/code&amp;gt; selektiert ebenfalls die 3 &#039;&#039;Produkt&#039;&#039;knoten&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[@dept=&amp;quot;Storage&amp;quot;]&amp;lt;/code&amp;gt; selektiert die beiden &#039;&#039;Produkt&#039;&#039;knoten der Sparte &#039;&#039;Storage&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[@dept=&amp;quot;Storage&amp;quot;][1]&amp;lt;/code&amp;gt; schränkt diese Auswahl auf den ersten Knoten der Sparte &#039;&#039;Storage&#039;&#039; ein, also &#039;&#039;SuperDrive&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;//text()&amp;lt;/code&amp;gt; wählt alle Textknoten aus dem Dokument also &#039;&#039;1337&#039;&#039;, &#039;&#039;SuperDrive&#039;&#039;, &#039;&#039;33337&#039;&#039;, &#039;&#039;HighSpeedCPU&#039;&#039;, &#039;&#039;2337&#039;&#039;, &#039;&#039;XtremeDrive&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[./name/@lang=&amp;quot;EN&amp;quot;]&amp;lt;/code&amp;gt; selektiert nur die &#039;&#039;Produkt&#039;&#039;knoten mit einem &#039;&#039;englischen&#039;&#039; Namenselement&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[./name/@lang=&amp;quot;EN&amp;quot; and data(./name)=&amp;quot;SuperDrive&amp;quot;]&amp;lt;/code&amp;gt; wählt entsprechend das &#039;&#039;Produkt&#039;&#039; mit dem &#039;&#039;englischen&#039;&#039; Namen &#039;&#039;SuperDrive&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Quellen =&lt;br /&gt;
* Skulschus, Marco; Kozik, Jan; Wiederstein, Marcus (2007): XSLT, XPath und XQuery. Comelio Medien, ISBN 3939701181.&lt;br /&gt;
* Walmsley, Priscilla (2007): XQuery. O’Reilly Media Inc., ISBN 0596006349.&lt;br /&gt;
* [http://www.w3.org/TR/xpath W3C - XML Path Language (XPath) Version 1.0]&lt;br /&gt;
* [http://www.w3.org/TR/xpath20 W3C - XML Path Language (XPath) Version 2.0]&lt;br /&gt;
* [http://www.w3.org/TR/xpath-datamodel W3C - XQuery 1.0 and XPath 2.0 Data Model (XDM)]&lt;br /&gt;
* [http://www.w3.org/TR/xpath-functions W3C - XQuery 1.0 and XPath 2.0 Functions and Operators]&lt;br /&gt;
* [http://www.w3schools.com/xpath/default.asp W3C Schools - XPath Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/XPath Wikipedia - XPath]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;br /&gt;
{{Verbesserungswürdiger Inhalt&lt;br /&gt;
| Genauer             = true &lt;br /&gt;
| Sprache = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11857</id>
		<title>XML Path Language</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11857"/>
		<updated>2008-07-01T12:17:24Z</updated>

		<summary type="html">&lt;p&gt;FaPe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Definition =&lt;br /&gt;
Die &#039;&#039;&#039;XML Path Language (XPath)&#039;&#039;&#039; ist eine Abfragesprache, die XML-Fragmente als Baum interpretiert und daraus eine Selektion einer Knotenmenge ermöglicht (Lokalisierung).&lt;br /&gt;
&lt;br /&gt;
XPath wird im Rahmen des [http://www.w3.org W3C]-Konsortiums gemeinsam durch die &#039;&#039;XSL Working Group&#039;&#039; und &#039;&#039;XML Linking Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XPath 2.0&#039;&#039; und Vorgänger tragen den finalen Status der &#039;&#039;W3C Empfehlung&#039;&#039;. XPath gilt als essentielles Fundament für weitere XML-basierte W3C-Standards wie [[XQuery]], [[XSLT]] oder [[XForms]].&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
XPath ermöglicht praktisch filternde Sichten auf &#039;&#039;&#039;unveränderte&#039;&#039;&#039; Eingabedokumente, die nur interessierende XML-Knoten und deren Inhalt umfassen.&lt;br /&gt;
&lt;br /&gt;
=Datenmodell=&lt;br /&gt;
Als Datenmodell dient eine logische Interpretation geparster XML-Dokumente als baumartig geordnete Sequenz von Einheiten. Über die Ordnung bestimmen Verschachtelung und Dokumentreihenfolge. Die Einheiten heißen &#039;&#039;Knoten&#039;&#039; und können an Blattpositionen &#039;&#039;Werte&#039;&#039; atomaren Typs tragen.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;Knotentypen&#039;&#039; umfassen:&lt;br /&gt;
* Wurzelknoten (root nodes)&lt;br /&gt;
* Elementknoten (element nodes)&lt;br /&gt;
* Textknoten (text nodes)&lt;br /&gt;
* Attributknoten (attribut nodes)&lt;br /&gt;
* Namensraumknoten (namespace nodes)&lt;br /&gt;
* Verarbeitungsanweisungs-Knoten (processing instruction nodes)&lt;br /&gt;
* Kommentarknoten (comment nodes)&lt;br /&gt;
&lt;br /&gt;
Als &#039;&#039;Wertetypen&#039;&#039; dienen:&lt;br /&gt;
* XML Schema Datentypen (z.B. integer, string, ...)&lt;br /&gt;
* Weitere fünf XPath-Typen (z.B. anyAtomicType, untyped, ...)&lt;br /&gt;
&lt;br /&gt;
Alle Knoteneigenschaften können über Quasifunktionen (Accessors) ausgelesen werden, die z.B. den qualifizierten Namen, getragene Typ und Wert oder Eltern und Kinder in der Ordnung zurückgeben. Das Datenmodell wird mittlerweile als [http://www.w3.org/TR/xpath-datamodel XQuery 1.0 and XPath 2.0 Data Model] eigenständig standardisiert.&lt;br /&gt;
&lt;br /&gt;
=Lokalisierung=&lt;br /&gt;
Ein XPath-Lokalisierungspfad ist nun ein Ausdruck, der eine Menge von 0 bis n Knoten aus diesem Baum auswählt, welche hinsichtlich sukzessiver, durch &#039;&#039;/&#039;&#039; separierter Lokalisierungskriterien übereinstimmen. Beginnt der Pfad bereits mit einem Schrägstrich, so ist er absolut d.h. beginnend von der Wurzel auszuwerten, andernfalls relativ zum Kontext. Jeder Lokalisierungsschritt präzisiert die Selektion und hat die folgende Syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/&amp;lt;Achse&amp;gt;::&amp;lt;Knotentest&amp;gt;&amp;lt;Prädikat&amp;gt;*&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Achse==&lt;br /&gt;
Achsen werden stets vom aktuellen Kontextknoten angelegt und grenzen die Auswahl für den nächsten Schritt auf eine Untermenge ein, die in einer bestimmten Beziehung zum Kontextknoten stehen. Diese erinnern oft an Familienbeziehungen und resultieren aus der Baumstruktur:&lt;br /&gt;
&lt;br /&gt;
[[Medium:Xpath_axes.png]]&lt;br /&gt;
&lt;br /&gt;
* self: der Knoten selber&lt;br /&gt;
* child: Kinder des Knotens&lt;br /&gt;
* parent: Eltern des Knotens&lt;br /&gt;
* descendant: Kinder und Kindeskinder des Knotens&lt;br /&gt;
* ancestors: Eltern und Vorfahren des Knotens&lt;br /&gt;
* attribute: Attribute des Knotens&lt;br /&gt;
* preceding: Vorhergehend in Dokumentrichtung&lt;br /&gt;
* following: Nachfolgend in Dokumentrichtung&lt;br /&gt;
* Einige Kombinationen stehen auch bereit wie z.B. descendant-or-self&lt;br /&gt;
&lt;br /&gt;
==Knotentest==&lt;br /&gt;
Ein Knotentest wählt nun aus der durch die Achse eingeschränkten Menge diejenigen Knoten aus, die den Knotentest bestehen. Zur Prüfung kann man folgende Alternativen wählen:&lt;br /&gt;
&lt;br /&gt;
* Knotenname: Formulierung durch die Angabe eines Knotennamens (* dient als Wildcard).&lt;br /&gt;
* Knotentyp: Formulierung durch die Angabe einer XPath-Funktion, die den Typ zurückgibt (z.B. text() für Textknoten, attribute() für Attributknoten).&lt;br /&gt;
&lt;br /&gt;
==Prädikate==&lt;br /&gt;
Prädikate werden in eckige Klammern gefasst und können beliebig oft angehängt werden. Sie filtern die Knotenmenge erneut über zwei mögliche Arten:&lt;br /&gt;
&lt;br /&gt;
* Listenindex: Wählt für den Listenindex n aus der Knotenmenge nur den n-ten Knoten aus ([1] entspricht dem ersten).&lt;br /&gt;
* Boolscher Ausdruck: Wählt aus der Knotenmenge nur diejenigen, die den Ausdruck auf &#039;&#039;true&#039;&#039; auswerten.&lt;br /&gt;
&lt;br /&gt;
==Achsenabkürzungen==&lt;br /&gt;
Um den Schreibaufwand zu reduzieren wurden angeregt von Navigationsschematas aus Dateisystemen einige Abkürzungen für häufige Achsenschritte eingeführt:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;child::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;descendant-or-self::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;self::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;parent::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;attribute::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Funktionen und Operatoren==&lt;br /&gt;
XPath-Ausdrücken stehen logische, numerische, String-manipulierende oder kontextbezogene Funktionen und Operationen bereit, um Ausdrücke zu errechnen oder zu verbinden. Für eine vollständige Liste sei auf [http://www.w3.org/TR/xpath-functions XQuery 1.0 and XPath 2.0 Functions and Operators] verwiesen.&lt;br /&gt;
&lt;br /&gt;
=Beispiele= &lt;br /&gt;
Gegeben sei folgendes XML-Eingabedokument:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;lt;!-- modified from XQuery by Priscilla Walmsley (c) O&#039;Reilly Media 2007 --&amp;gt;&lt;br /&gt;
 &amp;lt;!-- Product catalog input document--&amp;gt;&lt;br /&gt;
 &amp;lt;catalog&amp;gt;&lt;br /&gt;
    &amp;lt;product dept=&amp;quot;Storage&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;1337&amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;name lang=&amp;quot;EN&amp;quot;&amp;gt;SuperDrive&amp;lt;/name&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;product dept=&amp;quot;CPU&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;3337&amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;name lang=&amp;quot;DE&amp;quot;&amp;gt;Rechengenie&amp;lt;/name&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/product&amp;gt;&lt;br /&gt;
    &amp;lt;product dept=&amp;quot;Storage&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;2337&amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;name lang=&amp;quot;EN&amp;quot;&amp;gt;XtremeDrive&amp;lt;/name&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/product&amp;gt;&lt;br /&gt;
 &amp;lt;/catalog&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/child::catalog&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;/child::*&amp;lt;/code&amp;gt; wählen hier beide den &#039;&#039;Katalog&#039;&#039;knoten&lt;br /&gt;
* &amp;lt;code&amp;gt;/child::catalog/child::product&amp;lt;/code&amp;gt; oder kurz &amp;lt;code&amp;gt;/catalog/product&amp;lt;/code&amp;gt; selektiert die 3 &#039;&#039;Produkt&#039;&#039;knoten&lt;br /&gt;
* &amp;lt;code&amp;gt;/descendant-or-self::product&amp;lt;/code&amp;gt; oder kurz &amp;lt;code&amp;gt;//product&amp;lt;/code&amp;gt; selektiert ebenfalls die 3 &#039;&#039;Produkt&#039;&#039;knoten&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[@dept=&amp;quot;Storage&amp;quot;]&amp;lt;/code&amp;gt; selektiert die beiden &#039;&#039;Produkt&#039;&#039;knoten der Sparte &#039;&#039;Storage&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[@dept=&amp;quot;Storage&amp;quot;][1]&amp;lt;/code&amp;gt; schränkt diese Auswahl auf den ersten Knoten der Sparte &#039;&#039;Storage&#039;&#039; ein, also &#039;&#039;SuperDrive&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;//text()&amp;lt;/code&amp;gt; wählt alle Textknoten aus dem Dokument also &#039;&#039;1337&#039;&#039;, &#039;&#039;SuperDrive&#039;&#039;, &#039;&#039;33337&#039;&#039;, &#039;&#039;HighSpeedCPU&#039;&#039;, &#039;&#039;2337&#039;&#039;, &#039;&#039;XtremeDrive&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[./name/@lang=&amp;quot;EN&amp;quot;]&amp;lt;/code&amp;gt; selektiert nur die &#039;&#039;Produkt&#039;&#039;knoten mit einem &#039;&#039;englischen&#039;&#039; Namenselement&lt;br /&gt;
* &amp;lt;code&amp;gt;/catalog/product[./name/@lang=&amp;quot;EN&amp;quot; and data(./name)=&amp;quot;SuperDrive&amp;quot;]&amp;lt;/code&amp;gt; wählt entsprechend das &#039;&#039;Produkt&#039;&#039; mit dem &#039;&#039;englischen&#039;&#039; Namen &#039;&#039;SuperDrive&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Quellen =&lt;br /&gt;
* SKULSCHUS, Marco; KOZIK, Jan; WIEDERSTEIN, Marcus: XSLT, XPath und XQuery. Comelio Medien, 2007. ISBN 3939701181.&lt;br /&gt;
* WALMSLEY, Priscilla: XQuery. O’Reilly Media Inc., 2007. ISBN 0596006349.&lt;br /&gt;
* [http://www.w3.org/TR/xpath W3C - XML Path Language (XPath) Version 1.0]&lt;br /&gt;
* [http://www.w3.org/TR/xpath20 W3C - XML Path Language (XPath) Version 2.0]&lt;br /&gt;
* [http://www.w3.org/TR/xpath-datamodel W3C - XQuery 1.0 and XPath 2.0 Data Model (XDM)]&lt;br /&gt;
* [http://www.w3.org/TR/xpath-functions W3C - XQuery 1.0 and XPath 2.0 Functions and Operators]&lt;br /&gt;
* [http://www.w3schools.com/xpath/default.asp W3C Schools - XPath Tutorial]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/XPath Wikipedia - XPath]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Web-Programmierung]]&lt;br /&gt;
[[Kategorie:Content-Management]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;br /&gt;
{{Verbesserungswürdiger Inhalt&lt;br /&gt;
| Genauer             = true &lt;br /&gt;
| Sprache = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11856</id>
		<title>XML Path Language</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11856"/>
		<updated>2008-07-01T11:18:53Z</updated>

		<summary type="html">&lt;p&gt;FaPe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Definition =&lt;br /&gt;
Die &#039;&#039;&#039;XML Path Language (XPath)&#039;&#039;&#039; ist eine Abfragesprache, die XML-Fragmente als Baum interpretiert und daraus eine Selektion einer Knotenmenge ermöglicht (Lokalisierung).&lt;br /&gt;
&lt;br /&gt;
XPath wird im Rahmen des [http://www.w3.org W3C]-Konsortiums gemeinsam durch die &#039;&#039;XSL Working Group&#039;&#039; und &#039;&#039;XML Linking Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XPath 2.0&#039;&#039; und Vorgänger tragen den finalen Status der &#039;&#039;W3C Empfehlung&#039;&#039;. XPath gilt als essentielles Fundament für weitere XML-basierte W3C-Standards wie [[XQuery]], [[XSLT]] oder [[XForms]].&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
XPath ermöglicht praktisch filternde Sichten auf &#039;&#039;&#039;unveränderte&#039;&#039;&#039; Eingabedokumente, die nur interessierende XML-Knoten und deren Inhalt umfasst.&lt;br /&gt;
&lt;br /&gt;
=Datenmodell=&lt;br /&gt;
Als Datenmodell dient eine logische Interpretation geparster XML-Dokumente als baumartig geordnete Sequenz von Einheiten. Über die Ordnung bestimmen Verschachtelung und Dokumentreihenfolge. Die Einheiten heißen &#039;&#039;Knoten&#039;&#039; und können an Blattpositionen &#039;&#039;Werte&#039;&#039; atomaren Typs tragen.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;Knotentypen&#039;&#039; umfassen:&lt;br /&gt;
* Wurzelknoten (root nodes)&lt;br /&gt;
* Elementknoten (element nodes)&lt;br /&gt;
* Textknoten (text nodes)&lt;br /&gt;
* Attributknoten (attribut nodes)&lt;br /&gt;
* Namensraumknoten (namespace nodes)&lt;br /&gt;
* Verarbeitungsanweisungs-Knoten (processing instruction nodes)&lt;br /&gt;
* Kommentarknoten (comment nodes)&lt;br /&gt;
&lt;br /&gt;
Als &#039;&#039;Wertetypen&#039;&#039; dienen:&lt;br /&gt;
* XML Schema Datentypen (z.B. integer, string, ...)&lt;br /&gt;
* Weitere fünf XPath-Typen (z.B. anyAtomicType, untyped, ...)&lt;br /&gt;
&lt;br /&gt;
Alle Knoteneigenschaften können über Quasifunktionen (Accessors) ausgelesen werden, die z.B. den qualifizierten Namen, getragene Typ und Wert oder Eltern und Kinder in der Ordnung zurückgeben. Das Datenmodell wird mittlerweile als [http://www.w3.org/TR/xpath-datamodel XQuery 1.0 and XPath 2.0 Data Model] eigenständig standardisiert.&lt;br /&gt;
&lt;br /&gt;
=Lokalisierung=&lt;br /&gt;
Ein XPath-Lokalisierungspfad ist nun ein Ausdruck, der eine Menge von 0 bis n Knoten aus diesem Baum auswählt, welche hinsichtlich sukzessiver, durch &#039;&#039;/&#039;&#039; separierter Lokalisierungskriterien übereinstimmen. Beginnt der Pfad bereits mit einem Schrägstrich, so ist er absolut d.h. beginnend von der Wurzel auszuwerten, andernfalls relativ zum Kontext. Jeder Lokalisierungsschritt präzisiert die Selektion und hat die folgende Syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/&amp;lt;Achse&amp;gt;::&amp;lt;Knotentest&amp;gt;&amp;lt;Prädikat&amp;gt;*&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Achse==&lt;br /&gt;
Achsen werden stets vom aktuellen Kontextknoten angelegt und grenzen die Auswahl für den nächsten Schritt auf eine Untermenge ein, die in einer bestimmten Beziehung zum Kontextknoten stehen. Diese erinnern oft an Familienbeziehungen und resultieren aus der Baumstruktur:&lt;br /&gt;
&lt;br /&gt;
[[Medium:Xpath_axes.png]]&lt;br /&gt;
&lt;br /&gt;
* self: der Knoten selber&lt;br /&gt;
* child: Kinder des Knotens&lt;br /&gt;
* parent: Eltern des Knotens&lt;br /&gt;
* descendant: Kinder und Kindeskinder des Knotens&lt;br /&gt;
* ancestors: Eltern und Vorfahren des Knotens&lt;br /&gt;
* attribute: Attribute des Knotens&lt;br /&gt;
* preceding: Vorhergehend in Dokumentrichtung&lt;br /&gt;
* following: Nachfolgend in Dokumentrichtung&lt;br /&gt;
* Einige Kombinationen stehen auch bereit wie z.B. descendant-or-self&lt;br /&gt;
&lt;br /&gt;
==Knotentest==&lt;br /&gt;
Ein Knotentest wählt nun aus der durch die Achse eingeschränkten Menge diejenigen Knoten aus, die den Knotentest bestehen. Zur Prüfung kann man folgende Alternativen wählen:&lt;br /&gt;
&lt;br /&gt;
* Knotenname: Formulierung durch die Angabe eines Knotennamens (* dient als Wildcard).&lt;br /&gt;
* Knotentyp: Formulierung durch die Angabe einer XPath-Funktion, die den Typ zurückgibt (z.B. text() für Textknoten, attribute() für Attributknoten).&lt;br /&gt;
&lt;br /&gt;
==Prädikate==&lt;br /&gt;
Prädikate werden in eckige Klammern gefasst und können beliebig oft angehängt werden. Sie filtern die Knotenmenge erneut über zwei mögliche Arten:&lt;br /&gt;
&lt;br /&gt;
* Listenindex: Wählt für den Listenindex n aus der Knotenmenge nur den n-ten Knoten aus ([1] entspricht dem ersten).&lt;br /&gt;
* Boolscher Ausdruck: Wählt aus der Knotenmenge nur diejenigen, die den Ausdruck auf &#039;&#039;true&#039;&#039; auswerten.&lt;br /&gt;
&lt;br /&gt;
==Achsenabkürzungen==&lt;br /&gt;
Um den Schreibaufwand zu reduzieren wurden angeregt von Navigationsschematas aus Dateisystemen einige Abkürzungen für häufige Achsenschritte eingeführt:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;child::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;descendant-or-self::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;self::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;parent::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;attribute::&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beispiele= &lt;br /&gt;
* &amp;lt;code&amp;gt;child::absatz[position = 2]&amp;lt;/code&amp;gt; Dieser Ausdruck wählt das zweite &#039;&#039;absatz&#039;&#039;-Kindelement des gegenwärtigen Knotens&lt;br /&gt;
* &amp;lt;code&amp;gt;attribute::*&amp;lt;/code&amp;gt; Alle Attribute des gegenwärtigen Knotens werden gesucht.&lt;br /&gt;
* &amp;lt;code&amp;gt;absatz[@typ=&amp;quot;neu&amp;quot;][1]&amp;lt;/code&amp;gt; Wählt das erste &#039;&#039;absatz&#039;&#039;-Kindelement, das als Atttribut typ mit dem Wert &#039;&#039;neu&#039;&#039; hat&lt;br /&gt;
&lt;br /&gt;
= Quellen =&lt;br /&gt;
*[http://www.w3.org/TR/xpath W3C - XML Path Language (XPath) Version 1.0]&lt;br /&gt;
*[http://www.w3schools.com/xpath/default.asp W3C Schools - XPath Tutorial]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;br /&gt;
{{Verbesserungswürdiger Inhalt&lt;br /&gt;
| Genauer             = true &lt;br /&gt;
| Sprache = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Datei:Xpath_axes.png&amp;diff=11855</id>
		<title>Datei:Xpath axes.png</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Datei:Xpath_axes.png&amp;diff=11855"/>
		<updated>2008-07-01T10:43:00Z</updated>

		<summary type="html">&lt;p&gt;FaPe: XPath-Achsen und ihre abgedeckten Knotenmengen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XPath-Achsen und ihre abgedeckten Knotenmengen&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11854</id>
		<title>XML Path Language</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11854"/>
		<updated>2008-07-01T10:15:34Z</updated>

		<summary type="html">&lt;p&gt;FaPe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Definition =&lt;br /&gt;
Die &#039;&#039;&#039;XML Path Language (XPath)&#039;&#039;&#039; ist eine Abfragesprache, die XML-Fragmente als Baum interpretiert und daraus eine Selektion einer Knotenmenge ermöglicht (Lokalisierung).&lt;br /&gt;
&lt;br /&gt;
XPath wird im Rahmen des [http://www.w3.org W3C]-Konsortiums gemeinsam durch die &#039;&#039;XSL Working Group&#039;&#039; und &#039;&#039;XML Linking Working Group&#039;&#039; als Standard spezifiziert. Die aktuelle Version &#039;&#039;XPath 2.0&#039;&#039; und Vorgänger tragen den finalen Status der &#039;&#039;W3C Empfehlung&#039;&#039;. XPath gilt als essentielles Fundament für weitere XML-basierte W3C-Standards wie [[XQuery]], [[XSLT]] oder [[XForms]].&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
XPath ermöglicht praktisch filternde Sichten auf &#039;&#039;&#039;unveränderte&#039;&#039;&#039; Eingabedokumente, die nur interessierende XML-Knoten und deren Inhalt umfasst.&lt;br /&gt;
&lt;br /&gt;
=Datenmodell=&lt;br /&gt;
Als Datenmodell dient eine logische Interpretation geparster XML-Dokumente als baumartig geordnete Sequenz von Einheiten. Über die Ordnung bestimmen Verschachtelung und Dokumentreihenfolge. Die Einheiten heißen &#039;&#039;Knoten&#039;&#039; und können an Blattpositionen &#039;&#039;Werte&#039;&#039; atomaren Typs tragen.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;Knotentypen&#039;&#039; umfassen:&lt;br /&gt;
* Wurzelknoten (root nodes)&lt;br /&gt;
* Elementknoten (element nodes)&lt;br /&gt;
* Textknoten (text nodes)&lt;br /&gt;
* Attributknoten (attribut nodes)&lt;br /&gt;
* Namensraumknoten (namespace nodes)&lt;br /&gt;
* Verarbeitungsanweisungs-Knoten (processing instruction nodes)&lt;br /&gt;
* Kommentarknoten (comment nodes)&lt;br /&gt;
&lt;br /&gt;
Als &#039;&#039;Wertetypen&#039;&#039; dienen:&lt;br /&gt;
* XML Schema Datentypen (z.B. integer, string, ...)&lt;br /&gt;
* Weitere fünf XPath-Typen (z.B. anyAtomicType, untyped, ...)&lt;br /&gt;
&lt;br /&gt;
Alle Knoteneigenschaften können über Quasifunktionen (Accessors) ausgelesen werden, die z.B. den qualifizierten Namen, getragene Typ und Wert oder Eltern und Kinder in der Ordnung zurückgeben. Das Datenmodell wird mittlerweile als [http://www.w3.org/TR/xpath-datamodel XQuery 1.0 and XPath 2.0 Data Model] eigenständig standardisiert.&lt;br /&gt;
&lt;br /&gt;
=Lokalisierung=&lt;br /&gt;
XPath-Ausdrücke können aus folgenden drei Bestandteilen zusammengesetzt werden:&lt;br /&gt;
* Achse&lt;br /&gt;
* Knotentest&lt;br /&gt;
* Prädikate&lt;br /&gt;
Die Achsen zur Formulierung eines XPath-Ausdruckes sind child, parent, descendant, ancestor, following, preceding, following-sibling, preceding-sibling, attribute, namespace, self und descendant-or-self. Sie beschreiben die Beziehung zwischen dem aktuellen Knoten und dem gesuchten Knoten. Der Knotentest gibt den Namen des gesuchten Knotens in dem [[XML]] Dokument an. Er ist durch zwei Doppelpunkte von der Achse getrennt. Die Prädikate folgen in eckigen Klammern und dienen dazu, die Suche nach dem Knoten zu verfeinern.&lt;br /&gt;
&lt;br /&gt;
=Beispiele= &lt;br /&gt;
* &amp;lt;code&amp;gt;child::absatz[position = 2]&amp;lt;/code&amp;gt; Dieser Ausdruck wählt das zweite &#039;&#039;absatz&#039;&#039;-Kindelement des gegenwärtigen Knotens&lt;br /&gt;
* &amp;lt;code&amp;gt;attribute::*&amp;lt;/code&amp;gt; Alle Attribute des gegenwärtigen Knotens werden gesucht.&lt;br /&gt;
* &amp;lt;code&amp;gt;absatz[@typ=&amp;quot;neu&amp;quot;][1]&amp;lt;/code&amp;gt; Wählt das erste &#039;&#039;absatz&#039;&#039;-Kindelement, das als Atttribut typ mit dem Wert &#039;&#039;neu&#039;&#039; hat&lt;br /&gt;
&lt;br /&gt;
= Quellen =&lt;br /&gt;
*[http://www.w3.org/TR/xpath W3C - XML Path Language (XPath) Version 1.0]&lt;br /&gt;
*[http://www.w3schools.com/xpath/default.asp W3C Schools - XPath Tutorial]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;br /&gt;
{{Verbesserungswürdiger Inhalt&lt;br /&gt;
| Genauer             = true &lt;br /&gt;
| Sprache = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11853</id>
		<title>XML Path Language</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11853"/>
		<updated>2008-07-01T09:33:18Z</updated>

		<summary type="html">&lt;p&gt;FaPe: /* Definition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Definition =&lt;br /&gt;
Die &#039;&#039;&#039;XML Path Language (XPath)&#039;&#039;&#039; ist eine Abfragesprache für XML-Dokumente, welche die Selektion einer XML-Knotenmenge (Lokalisierung) ermöglicht. XPath wird im Rahmen des [http://www.w3.org W3C]-Konsortiums gemeinsam durch die &amp;quot;XSL Working Group&amp;quot; und &amp;quot;XML Linking Working Group&amp;quot; als Standard spezifiziert. Die aktuelle Version &amp;quot;XPath 2.0&amp;quot; und Vorgänger tragen den finalen Status der &amp;quot;W3C Empfehlung&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
XPath gilt als essentielles Fundament für weitere XML-basierte W3C-Standards wie [[XQuery]], [[XSLT]] oder [[XForms]].&lt;br /&gt;
&lt;br /&gt;
=Aufbau=&lt;br /&gt;
XPath-Ausdrücke können aus folgenden drei Bestandteilen zusammengesetzt werden:&lt;br /&gt;
* Achse&lt;br /&gt;
* Knotentest&lt;br /&gt;
* Prädikate&lt;br /&gt;
Die Achsen zur Formulierung eines XPath-Ausdruckes sind child, parent, descendant, ancestor, following, preceding, following-sibling, preceding-sibling, attribute, namespace, self und descendant-or-self. Sie beschreiben die Beziehung zwischen dem aktuellen Knoten und dem gesuchten Knoten. Der Knotentest gibt den Namen des gesuchten Knotens in dem [[XML]] Dokument an. Er ist durch zwei Doppelpunkte von der Achse getrennt. Die Prädikate folgen in eckigen Klammern und dienen dazu, die Suche nach dem Knoten zu verfeinern.&lt;br /&gt;
&lt;br /&gt;
=Beispiele= &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;child::absatz[position = 2]&amp;lt;/code&amp;gt; Dieser Ausdruck wählt das zweite &#039;&#039;absatz&#039;&#039;-Kindelement des gegenwärtigen Knotens&lt;br /&gt;
* &amp;lt;code&amp;gt;attribute::*&amp;lt;/code&amp;gt; Alle Attribute des gegenwärtigen Knotens werden gesucht.&lt;br /&gt;
* &amp;lt;code&amp;gt;absatz[@typ=&amp;quot;neu&amp;quot;][1]&amp;lt;/code&amp;gt; Wählt das erste &#039;&#039;absatz&#039;&#039;-Kindelement, das als Atttribut typ mit dem Wert &#039;&#039;neu&#039;&#039; hat&lt;br /&gt;
&lt;br /&gt;
Mit einem XPath Ausdruck können die sieben verschiedenen Knotenarten des XPath Datenmodells angesprochen werden:&lt;br /&gt;
* Wurzelknoten (root nodes)&lt;br /&gt;
* Elementknoten (element nodes)&lt;br /&gt;
* Textknoten (text nodes)&lt;br /&gt;
* Attributknoten (attribut nodes)&lt;br /&gt;
* Namensraumknoten (namespace nodes)&lt;br /&gt;
* Verarbeitungsanweisungs-Knoten (processing instruction nodes)&lt;br /&gt;
* Kommentarknoten (comment nodes)&lt;br /&gt;
&lt;br /&gt;
XPath spielt vor allem bei Adressierungen in [[XForms]] und [[XSL]] eine wichtige Rolle.&lt;br /&gt;
&lt;br /&gt;
= Quellen =&lt;br /&gt;
*[http://www.w3.org/TR/xpath W3C - XML Path Language (XPath) Version 1.0]&lt;br /&gt;
&lt;br /&gt;
*[http://www.w3schools.com/xpath/default.asp W3C Schools - XPath Tutorial]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;br /&gt;
{{Verbesserungswürdiger Inhalt&lt;br /&gt;
| Genauer             = true &lt;br /&gt;
| Sprache = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XPath&amp;diff=11852</id>
		<title>XPath</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XPath&amp;diff=11852"/>
		<updated>2008-07-01T09:11:09Z</updated>

		<summary type="html">&lt;p&gt;FaPe: hat XPath nach XML Path Language verschoben: Dies entspricht dem vollen Titel des Standards nach W3C&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[XML Path Language]]&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11851</id>
		<title>XML Path Language</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XML_Path_Language&amp;diff=11851"/>
		<updated>2008-07-01T09:11:09Z</updated>

		<summary type="html">&lt;p&gt;FaPe: hat XPath nach XML Path Language verschoben: Dies entspricht dem vollen Titel des Standards nach W3C&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Definition =&lt;br /&gt;
[[XPath]] ist ein Standard des [[W3C]]-Konsortiums und dient in erster Linie zur Navigation in [[XML]]-Dokumenten. &lt;br /&gt;
&lt;br /&gt;
=Aufbau=&lt;br /&gt;
XPath-Ausdrücke können aus folgenden drei Bestandteilen zusammengesetzt werden:&lt;br /&gt;
* Achse&lt;br /&gt;
* Knotentest&lt;br /&gt;
* Prädikate&lt;br /&gt;
Die Achsen zur Formulierung eines XPath-Ausdruckes sind child, parent, descendant, ancestor, following, preceding, following-sibling, preceding-sibling, attribute, namespace, self und descendant-or-self. Sie beschreiben die Beziehung zwischen dem aktuellen Knoten und dem gesuchten Knoten. Der Knotentest gibt den Namen des gesuchten Knotens in dem [[XML]] Dokument an. Er ist durch zwei Doppelpunkte von der Achse getrennt. Die Prädikate folgen in eckigen Klammern und dienen dazu, die Suche nach dem Knoten zu verfeinern.&lt;br /&gt;
&lt;br /&gt;
=Beispiele= &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;child::absatz[position = 2]&amp;lt;/code&amp;gt; Dieser Ausdruck wählt das zweite &#039;&#039;absatz&#039;&#039;-Kindelement des gegenwärtigen Knotens&lt;br /&gt;
* &amp;lt;code&amp;gt;attribute::*&amp;lt;/code&amp;gt; Alle Attribute des gegenwärtigen Knotens werden gesucht.&lt;br /&gt;
* &amp;lt;code&amp;gt;absatz[@typ=&amp;quot;neu&amp;quot;][1]&amp;lt;/code&amp;gt; Wählt das erste &#039;&#039;absatz&#039;&#039;-Kindelement, das als Atttribut typ mit dem Wert &#039;&#039;neu&#039;&#039; hat&lt;br /&gt;
&lt;br /&gt;
Mit einem XPath Ausdruck können die sieben verschiedenen Knotenarten des XPath Datenmodells angesprochen werden:&lt;br /&gt;
* Wurzelknoten (root nodes)&lt;br /&gt;
* Elementknoten (element nodes)&lt;br /&gt;
* Textknoten (text nodes)&lt;br /&gt;
* Attributknoten (attribut nodes)&lt;br /&gt;
* Namensraumknoten (namespace nodes)&lt;br /&gt;
* Verarbeitungsanweisungs-Knoten (processing instruction nodes)&lt;br /&gt;
* Kommentarknoten (comment nodes)&lt;br /&gt;
&lt;br /&gt;
XPath spielt vor allem bei Adressierungen in [[XForms]] und [[XSL]] eine wichtige Rolle.&lt;br /&gt;
&lt;br /&gt;
= Quellen =&lt;br /&gt;
*[http://www.w3.org/TR/xpath W3C - XML Path Language (XPath) Version 1.0]&lt;br /&gt;
&lt;br /&gt;
*[http://www.w3schools.com/xpath/default.asp W3C Schools - XPath Tutorial]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
}}&lt;br /&gt;
{{Verbesserungswürdiger Inhalt&lt;br /&gt;
| Genauer             = true &lt;br /&gt;
| Sprache = true&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>FaPe</name></author>
	</entry>
</feed>