XML Infopath

Diese Anleitung soll eine Vorstellung davon vermitteln, wozu der XML-Formular-Editor Infopath nützlich sein könnte, und richtet sich besonders an Personen, die Formulare entwerfen oder dies erwägen.

  • Formulare? Es sind damit natürlich elektronische Formulare gemeint und keine papiernen Fragebögen vom Amt, aber die Vorstellung eines herkömmlichen Papierformulars kommt der Wirklichkeit schon näher als die bisher üblichen elektronischen "Forms" und Dateneingabemasken für Datenbanken und andere Datenerfassungszwecke. Denn XML bietet neue Möglichkeiten.
  • XML? ist zwar nicht primär für Menschen gemacht, sondern für Maschinen. Aber für sehr Menschen-nahe Maschinen, so genannte Agenten, die auch Strukturen verstehen, die nicht starr strukturiert sind, sondern semi-strukturiert. XML ist für Menschen auch leichter lesbar als andere Strukturen, auch wenn der Endnutzer normalerweise nicht damit umgehen muss, weil Programme das für ihn erledigen. Beim XML-Editor Infopath kommt man allerdings viel direkter mit den XML-Strukturen in Berührung als bei anderen Programmen.
  • Editor? ein Werkzeug, um beliebig (semi-)strukturierte Dokumente zu erstellen und zu bearbeiten. Entweder, indem man nur Daten in vorgegebene Strukturen hineinbringt (Ausfüllen), oder indem man die Strukturen selbst bearbeitet (Entwerfen), je nach Modus:

Überblick

Modus: Infopath hat zwei grundverschiedene Arbeitsweisen, nämlich

  • Ein Formular aüsfüllen: Das ist der Standardmodus, der beim Doppelklicken einer Datei mit dem Infopath-Symbol aufgerufen wird
    (also einer Datei, die die Dateinamenserweiterung .xml hat und die von Infopath erkannt wird, nämlich an dem Tag <?mso-application progid="InfoPath.Document"?>, denn sonst wird sie nur mit der XML-Anzeige des Internet-Explorer aufgerufen),
  • Ein Formular entwerfen: Der WISIWYG-Modus zur Veränderung der Struktur, der offenbar auch für Endnutzer wie manche Sachbearbeiter gedacht ist.

Als Strukturveränderung gilt es bei XML noch nicht, wenn z. B. nur manche Abschnitte hinzugefügt, ausgelassen oder wiederholt werden. Was in einer Datenbank schon eine Design-Änderung wäre, darf hier der Datentypist im Ausfüll-Modus:

Mit Strg + Eingabe wird der gestrichelt markierte Abschnitt wiederholt. Screenshot Wiederholter Abschnitt

Im Entwurfsmodus dagegen

Screenshot Entwurf

können die Felderstruktur und die Feldeigenschaften manipuliert werden, und zwar sowohl das Layout und die Ein-/Ausgabe-Steuerung im Formular selbst (links zu sehen), als auch die Daten"quelle" bzw. Datenziel wie z. B. die XML-<Tag>s (rechts).

Datenquelle vs. Steuerelemente: Anfangs verwechselt man leicht die Grundstrukturen

Steuerelement Datenquelle
[Wiederholter] Abschnitt [Wiederholte] Gruppe
Textfeld, Ausdrucksfeld Feld (Element), Feld (Attribut)
Tabelle Gruppe
Aufzählung Wiederholtes Feld

die aber eng zusammenhängen und nicht ganz beliebig verknüpft werden dürfen ("Bindung"). Am ehesten behält man wohl die Übersicht, wenn man folgendermaßen vorgeht:

Simples, unnützes Beispiel

  • Zur Übung fängt man am besten mit einer vorhandenen Datenquelle an: Nach Start von Infopath > Ein Formular entwerfen... > Neues Formular aus Datenquelle... XML-Schema oder XML-Datendatei > Weiter > Durchsuchen > (dieses Beispiel, am besten heruntergeladen auf den Desktop) > Fertig stellen > (...als Standardwerte verwenden?) Ja

     

  • in dem rechten Fensterteil lässt man sich (Ansicht > Aufgabenbereich) die Daten"quelle" anzeigen. Hier kann man die Bestandteile der gelben Gruppen anschauen, indem man sie (ähnlich wie im Windows-Explorer) mit +/- auf-/zu klappt: zum Ausprobieren sollte man einmal alle Pluszeichen nacheinander anklicken.
  • Nun wählt man die Zeile einer Gruppe oder eines Feldes aus, im Beispiel klicken wir auf die oberste Ebene "Institut", und dann nochmal in derselben Zeile auf den hellblau erscheinenden Pfeil rechts außen.
    • Dann klappt ein Dropdown-Menü auf, in dem die jeweils erlaubten Steuerelemente auswählbar sind.
    Screenshot Steuerelement-Auswahl
  • Anfangs ist ...mit Steuerelementen am sinnvollsten, weil damit gleich noch Unterstrukturen mit verarbeitet werden. Also Klicken auf Abschnitt mit Steuerelementen,

und das Formular sieht dem oben im Überblick gezeigten schon ähnlich. Wir können es nun noch weiter anpassen.

  • Um ein Feld wie "Anschrift" beispielsweise breiter zu ziehen, zunächst darauf klicken bis ein Rahmen aus Ziehpunkten erscheint, und dann den rechten mittleren Ziehpunkt benutzen. Zum Üben alle Felder so breit ziehen, bis der Beispielinhalt ganz sichtbar wird.
  • Um Felder oder ganze Abschnitte zu löschen, immer zuerst durch Daraufklicken markieren und dann die Entf-Taste drücken (! Bearbeiten > Löschen funktioniert wohl noch nicht). Da die Markierungsarten gewöhnungsbedürftig sind, benötigt man oft die Funktion Bearbeiten > Rückgängig. Im Beispiel markieren wir die Wiederholte Tabelle "Mitarbeiter" durch Rechtsklick auf den blauen Pfeil links unter dem Tabellenbereich, und löschen sie: Löschen > Tabelle.
  • Wir haben die Tabelle nicht gelöscht, um Daten zu löschen, sondern weil wir die Formularsteuerung Wiederholte Tabelle ersetzen wollen durch einen Abschnitt: Klick auf "Mitarbeiter" in Arbeitsbereich Datenquelle, dann auf den hellblauen Dropdown-Pfeil rechts außen, dann auf Wiederholter Abschnitt mit Steuerelementen.

Fertig zum Abspeichern als Vorlage mit Datei > Speichern > Speichern..., und Datei > Beenden

  • Zum Ausfüllen die Vorlage doppelklicken. Zunächst kann man die Datensätze des Musters muster.xml benutzen: Datei > Formulare zusammenführen... > (auswählen) > Verbinden
  • nun zeigt sich ein Nachteil des Verfahrens, bei der obigen Frage (...als Standardwerte verwenden?) mit Ja zu antworten, denn der erste Datenabschnitt ("Schulze") ist nun doppelt und muss einmal gelöscht werden: (Rechtsklick auf den blauen Pfeil) > Mitarbeiter entfernen;

     

  • nun neue Daten eingeben (mit Strg + Eingabe Abschnitte wiederholen wie oben gezeigt, und ausfüllen.)
  • das ausgefüllte Formular speichern (die Daten, nicht nochmal die Vorlage)

Für weitere Einträge das Datenformular wieder doppelklicken, ausfüllen und abspeichern.

Beispiel RSS-Feed

Im folgenden Beispiel wird Infopath benutzt, um das XML-Format zu erzeugen, welches für den RSS-Standard gefordert ist. Da Infopath die syntaktische Detailarbeit abnimmt, kann man sich besser auf die Struktur konzentrieren, die nicht ganz einfach ist, aber zum Ausgleich etwas Einblick in einen typischen modernen Web-Datenaustauschstandard gewährt, und außerdem liefert das Beispiel schnell einen einsatzfähigen Prototypen.

RSS spezifiziert "RDF Site Summaries", das sind zum Beispiel Absracts zu Webtagebuch-Einträgen, und zwar mittels "Resource Definition Framework" (Details siehe beim WWW-Consortium), einer Sprache, die zum Aufbau des "semantischen Netzwerks" (von Inhalten) dienen soll.

RDF besteht im Wesentlichen aus XML-Strukturen für Ressourcen (mit Attributfeld rdf:about="adresse1") und zugehörigen Beschreibungen (evtl. mit rdf:resource="adresse2").

RSS definiert

  • wiederholte Gruppen item für die einzelnen Ressourcen (Abstracts, von beispielsweise Webtagebuch-Einträgen).
  • eine nicht wiederholte Gruppe channel für eine Sammlung von Abstracts, und
  • verwirrenderweise steht im Kopf (channel) nochmal die Liste aller items.

Die Adresse eines Webtagebuch-Eintrags kommt deshalb an drei Stellen vor (item > about, dann item > link und noch channel > items > Seq > li > resource, dazu kommen Angaben für die gesamte Sammlung und für ein Image. Dann erst kommen die inhaltlichen Angaben, nämlich für jeden Eintrag und für die ganze Sammlung jeweils ein title und eine description.

Vorgehen:

  • Zunächst wie oben Ein Formular entwerfen... > Neues Formular aus Datenquelle... XML-Schema oder XML-Datendatei > Weiter > Durchsuchen > (dieses Beispiel heruntergeladen) > Fertig stellen > (...als Standardwerte verwenden?) Ja
  • unter channel > items > rdf:Seq > li gibt es eine Struktur, die nur mit leeren Aufzählungszeichen dargestellt wurde, weil die eigentliche Information in einem Feldattribut versteckt ist. Nach (Rechtsklick auf den blauen Pfeil links unten im entsprechenden Formularteil) > Ändern in > Wiederholte Tabelle wird auch das Attribut "resource" angezeigt.
  • ganz unten ("About" und "Link") gibt es eine Wiederholte Tabelle, die unpraktisch breit ist; dieses Steuerelement wird ersetzt, wie im simplen Beispiel oben für den Abschnitt "Mitarbeiter" beschrieben: Tabelle anklicken mit Rechtsklick auf den blauen Dreieckspfeil, Löschen > Tabelle; dann im Arbeitsbereich Datenquelle auf ns1:item klicken, auf den hellblauen Dropdown-Pfeil rechts, und auf Wiederholten Abschnitt mit Steuerelementen.
  • Nun können alle Musterangaben sichtbar gemacht werden, indem notfalls die entsprechenden Felder breiter gezogen werden wie im simplen Beispiel oben beschrieben.
  • Musterangaben durch sinnvolle eigene Angaben ersetzen (insb. die imaginäre Benutzeridentifikation "mmusterm").
  • Markieren und Löschen verschiedener konstanter Teile, z. B. "Language" und "Date". (Es werden wieder nicht die Daten gelöscht, sondern nur die Steuerelemente).
  • Abspeichern der Vorlage
  • Vorlage doppelklicken (zum Ausfüllen),
  • neue Daten eingeben (mit Strg + Eingabe Abschnitte wiederholen wie oben, ausfüllen (vorsichtigerweise mit Kopieren und Einfügen statt mit der Hand, solange man Tricks wie mehrfache Verwendung derselben Zeichenkette (siehe Update) oder Gültigkeitsprüfung noch nicht verwenden kann,
  • das ausgefüllte Formular speichern (die Daten, nicht nochmal die Vorlage)
  • für weitere Einträge (künftige Webtagebucheinträge) das Datenformular wieder doppelklicken, ausfüllen, abspeichern und hochladen ins Web, dann wird jedem Abonnenten Ihres Weblogs in seinen/ihren News-Aggregator  der Titel und die Adresse Ihres neuen Beitrages gemeldet.

Weiteres

Sekundäre Datenquellen und Datenbanken

Mit Extras > Sekundäre Datenquellen kann man beispielsweise eine Tabelle einbeziehen, die man für [Dropdown-]Listenfelder benutzen will. Hierfür sind Datenbanken gut geeignet. Sonst ist der Verknüpfung von Datenbank und XML-Struktur eher unbefriedigend, und außerdem recht unübersichtlich: es werden nämlich zwei ganz verschiedene "Ansichten" unterschieden: Abfrageansicht und Datenansicht.

  • Die Abfrageansicht enthält die Spalten einer (auch verknüpften) Datenbank-"Abfrage" (-Query) als Attributfelder einer einzigen Gruppe, und nach Klick auf einen Abfrageknopf wird die XML-Datendatei mit sämtlichen Datensätzen gefüllt;
  • die Daten(eingabe)ansicht ist anfangs noch leer (ohne Steuerelemente), und kann dann so gestaltet werden, dass ein einzelner neuer Datensatz an die Datenbank gesendet wird, oder dass Datensätze wie in der Datenblatt-Ansicht von Access manipuliert und zurückgeschickt werden oder in XML-Datendateien gespeichert werden und dann mit Formulare zusammenführen aneinander gehängt werden können.

Es werden keine hierarchischen Datenbank-Beziehungen in XML-Hierarchien übersetzt; und wie so oft ist eine Migration (hier von der strukturierten Datenbank-Welt in die semistrukturierte XML-Welt) mühsamer und enttäuschender als beide Reinformen.

Schema-Dateien u. ä.

Zubehör-Dateien vom Typ .xsd, .xsl, .xsf usw. kann man mit Datei > Formulardateien extrahieren... aus einer Vorlage (.xsn) herauskopieren, und mit Extras > Ressourcenmanager... hineinbringen.

Diese Funktionen sind nicht zu verwechseln mit Datei > Exportieren nach bei einer Datendatei oder Datei > Veröffentlichen oder Datei > Von Sharepoint-Site öffnen bei einer Entwurfsvorlage. Letzteres wie auch die Option Webdienst als neue Datenquelle musste noch getestet werden, um den vollen Nutzen von Infpoath abschätzen zu können, siehe Teil 2.

Update

Einige typische Probleme, z. B. das Kopieren von Identifier-Zeichenketten, insb. bei Verwendung von Infopath für XML in Standards, wurden inzwischen durch Service Pack 1 gelöst, siehe Referenzieren von Identifiern

Verantwortlich: Team Anwendungssoftware
Letzte Änderung: 15.05.2008