DE60011479T2 - Xml-roboter - Google Patents

Xml-roboter Download PDF

Info

Publication number
DE60011479T2
DE60011479T2 DE60011479T DE60011479T DE60011479T2 DE 60011479 T2 DE60011479 T2 DE 60011479T2 DE 60011479 T DE60011479 T DE 60011479T DE 60011479 T DE60011479 T DE 60011479T DE 60011479 T2 DE60011479 T2 DE 60011479T2
Authority
DE
Germany
Prior art keywords
xml
document
state
robot
action
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60011479T
Other languages
English (en)
Other versions
DE60011479D1 (de
Inventor
Philipp Kutter
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Application granted granted Critical
Publication of DE60011479D1 publication Critical patent/DE60011479D1/de
Publication of DE60011479T2 publication Critical patent/DE60011479T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML

Description

  • GEBIET UND HINTERGRUND DER ERFINDUNG
  • Die Erfindung betrifft ein Verfahren, ein System und eine Vorrichtung zur direkten Ausführung von XML-Dokumenten nach Anspruch 1 und 7–9.
  • Grundlagen von XML
  • XML wird als eine Untermenge des SGML-Formats definiert. Kurz gesagt ermöglicht es XML, das Format von Dokumenten zu definieren, die mittels sogenannter Tags strukturiert sind. Während XML sowohl eine physikalische als auch eine logische Struktur von Dokumenten definiert, liegt im Rahmen der vorliegenden Erfindung das Schwergewicht auf der logischen Struktur, wobei allerdings die bereitgestellten Mittel für die physikalische Struktur wiederverwendet werden. Von der physikalischen Struktur abstrahierend wird XML verwendet, um sowohl die Dokumenttypdefinition (DTD) als auch XML-Dokumente zu erhalten. Eine spezifische DTD T wird verwendet, um XML-Dokumente in jene zu klassifizieren, welche in Bezug auf T gültig sind, und jene, welche dies nicht sind. Man sagt Dokumente von DTD T kurz für jene, die in Bezug auf T gültig sind. Die logischen Aspekte einer DTD definieren Elemente und Attribute. Jedes Dokument eines derartigen Typs (angegeben mittels einer DTD) muss nur Instanzen der definierten Elemente enthalten, und die Attribute und die Zusammensetzung der Elemente müssen mit der DTD übereinstimmen. Als Beispiel könnte eine DTD T, welche ein Element A definiert, mit einer Zusammensetzung aus untergeordneten Elementen X, Y und Z und Attributen b und c von Element A in XML folgendermaßen notiert werden:
    Figure 00010001
    wobei #PCDATA die Art von Daten definiert, die für Attribute b und c zulässig ist. Ein Dokument der oben dargestellten DTD T kann nun Instanzen des Elements A enthalten. Eine Instanz des Elements A besteht aus dem Start-Tag <A ...> und einem End-Tag </A>. Innerhalb des Start-Tag werden die Werte der Attribute angegeben, und zwischen dem Start-Tag und dem End-Tag müssen Instanzen der zusammensetzenden Elemente angegeben werden. Ein Dokument vom Typ T kann demnach Instanzen von A enthalten, welche aussehen wie folgt:
    Figure 00020001
    wobei die exakte Form von X-, Y- und Z-Instanzen durch entsprechende Elementdefinitionen in der DTD T angegeben wird.
  • Die Leistungsfähigkeit von XML ist zum Teil auf die Tatsache zurückzuführen, dass die Definition von Elementzusammensetzungen rekursiv sein darf. Zur Veranschaulichung werden einige Zusammensetzungsmöglichkeiten vorgestellt und verwendet, um das oben stehende Beispiel zu vervollständigen. Die bereits verwendete Sequenz (X, Y, Z) gibt an, dass ein X-Element von einem Y-Element gefolgt wird, welches wiederum von einem Z-Element gefolgt wird, wie in dem oben stehenden Beispiel zu ersehen ist. Ein weiterer bedeutender Zusammensetzungsoperator ist die Auswahl (X | Y | Z), welche eine Auswahl zwischen einem X-, einem Y-, oder einem Z-Element angibt. Andere Operatoren wären die Operatoren + und *, welche Wiederholungen einer Komponente angeben. Allerdings werden sie in den Beispielen nicht verwendet.
  • Angenommen, dass Y und Z keine Zusammensetzung (<!ELEMENT Y >, <!ELEMENT Z >) aufweisen, wird die DTD A mit Definition von X vervollständigt, wo die Zusammensetzung durch Auswahl und Rekursion auf Element A verwendet wird: <!ELEMENT X (Y | A)>.
  • Somit ist X entweder ein Y oder ein A. Mögliche Dokumente von Typ A sind nun:
    Figure 00030001
    und beliebige weitere Wiederholungen von <Y></Y>. Zur Vereinfachung wurden für Wiederholungen oben keine besonderen Zusammensetzungsoperatorenwie + und * verwendet. Als Abkürzung kann <Y> </Y> durch <Y/> ersetzt werden.
  • XML ist das Ergebnis eines langen Normungsprozesses und wird vielerorts verwendet und akzeptiert. Im Stand der Technik bestehende Anwendungen können in zwei verschiedene Grundtypen eingeteilt werden: Datenaustausch und Dokumentveröffentlichung. Für Datenaustauschanwendungen kann XML verwendet werden, um Datenformate zum Austauschen komplexer Daten zwischen zwei Programmen zu definieren. Ferner wird XML als Austauschformat für Daten verwendet, welche in relationalen Datenbanksystemen liegen. Beispiele für derartige Formate sind XML-Daten (Microsoft), MCF (Netscape) und RDF (W3C). Für Dokumentveröffentlichungsanwendungen ist XML die ideale Datensprache für die Auszeichnung aller Arten von Dokumenten. Der Hauptgedanke ist, den logischen Inhalt des Dokuments als XML-Dokument anzugeben und die Layoutinformationen generisch für die DTDs anzugeben. Beispiele für derartige generische Layoutsprachen sind CSS oder XSL. Die Ausgabe des generierten Layouts kann jeweils HTTP, SPDL oder Postscript sein.
  • XML-Verarbeitung
  • Derzeit verfügbare Software und Anwendungen bedienen sich XML zur Darstellung von Daten und Dokumenten, welche dann durch Allzweckprogrammiersprachen verarbeitet werden. Bestehende Vorschläge für das Verarbeiten von XML-Dokumenten können in ereignisgesteuerte und baumbedienende Methoden getrennt werden, unabhängig davon, ob die Anwendung im Datenaustausch- oder Dokumentveröffentlichungsbereich liegt. Bei einer ereignisgesteuerten Methode wird das Dokument in strikter Abfolge verarbeitet. Jedes Element im Datenstrom wird als Ereignisauslöser betrachtet, welcher eine besondere Handlung seitens der Anwendung auslösen kann. Das SAX Application Programmer Interface (API) kann verwendet werden, um eine ereignisgesteuerte Lösung in einer bestehenden Programmiersprache zu implementieren. Die Baum-Lösung bietet Zugriff auf das gesamte Dokument in Form eines Strukturbaumes. Im Grunde genommen sind die Elemente eines XML-Dokuments die Knoten des Baums, und die Komponenten jedes Elements sind die Geschwister des Knotens. Das gemeinhin verwendete API, um auf einen derartigen Baum zuzugreifen, ist DOM. Der Nachteil des Verwendens von APIs ist, dass die gesamte Komplexität des Allzweckprogrammierens, insbesondere System- und Plattformabhängigkeiten, Zuverlässigkeit und Sicherheit, welche zu umfangreicher und komplexer Software führen, ins Spiel kommt. Mehrere XML-Tools versuchen, diese Komplexität durch Generieren eines speziellen Codes für Datenaustausch- oder Dokumentveröffentlichungsanwendungen zu verbergen. Wenngleich sie eventuell dazu beitragen, ein Programmmuster in einer herkömmlichen Programmiersprache einfach zu generieren, abstrahieren sie nicht völlig von der Verwendung expliziter Programmierung, um durch das Dokument zu navigieren, welches verarbeitet werden muss.
  • Das Dokument CIANCARINI P ET AL: 'An extensible rendering engine for XML and HTML' COMPUTER NETWORKS AND ISDN SYSTEMS, NL, NORTH HOLLAND PUBLISHING. AMSTERDAM, Bd. 30, Nr. 1–7, 1. April 1998 (1998–04–01), S. 225–237, XP004121424 ISSN: 0169–7552, offenbart eine Java-Rendering-Maschine für XML-Daten. Ein Display Manager Applet ladet und parst das anzuzeigende Dokument. Der resultierende Baum wird dann rekursiv analysiert. Die Rendering-Maschine, welche von dem Display Manager Applet verwendet wird, ist ein Satz von Java-Klassen, welche das Rendering für die jeweiligen Dokumentelemente vorsehen. Das gemeinhin verwendete API, um auf einen derartigen Baum zuzugreifen, ist DOM.
  • XML gegenüber herkömmlichem Programmieren
  • Ein wichtiger Themenpunkt betrifft das Konzept von herkömmlich strukturierten sowie objektorientierten Programmierverfahren. Beide Verfahren bedienen sich unstrukturierter Datenquellen insofern, als die Struktur derartiger Daten nicht mittels Produktionsregeln angegeben wird, wie die Elementdefinitionen in XML- oder BNF-Regeln, welche die Struktur von Programmen definieren. Derartige Datenquellen werden, im Fall von herkömmlichem Programmieren, in Verbindung mit einem strukturierten, wenngleich unabhängigen Programm verwendet. Andererseits kombinieren objektorientierte Programmierverfahren den strukturierten, segmentierten Code mit Datenobjekten, wobei jedoch der Objektraum (Daten) noch nicht im oben angeführten Sinn strukturiert ist. Es wäre natürlich möglich, strukturierte Datenmodelle in Verbindung mit diesen Verfahren zu verwenden, jedoch ist in jedem der beiden Fälle die Programmstruktur von der Datenstruktur unabhängig und erfordert daher komplexe Behandlung, wie oben beschrieben wurde. Tatsächlich impliziert die aktuelle Situation beim Verarbeiten von XML-Dokumenten zwei unabhängige Strukturen, eine des XML-Dokumentes und eine des Programms, welches dieses verarbeitet. Diese Lösung ist insbesondere mit zwei grundlegenden Nachteilen behaftet: (a) Wenn ein Programmierer beabsichtigt, die gesamte Struktur einer beliebigen Instanz einer DTD zuverlässig zu verarbeiten, könnte ein derartiger Code infolge der Vielfalt entsprechender XML-Dokumente und der Komplexität derartiger Aufgaben versagen, und (b) das Programm, welches das XML-Dokument verarbeitet, ist für gewöhnlich ausgebildet, um alle Dokumente einer bestimmten DTD zu verarbeiten, wodurch die Komplexität des Programms durch das inhärente generische Wesen des Codes erhöht wird.
  • Aufgaben der Erfindung
  • Eine Aufgabe der Erfindung ist es, ein Verfahren, ein System und eine Vorrichtung bereitzustellen, um die Verarbeitung von XML-Dokumenten derart zu verbessern, dass Daten und Software in einer integrierten Struktur eingebunden werden, wodurch die Komplexität und/oder die Notwendigkeit grundlegender Programmierkenntnisse bei der Datenverarbeitung reduziert oder vermieden werden, und um die bestehende Struktur des XML-Dokuments wiederzuverwenden.
  • Eine andere Aufgabe der Erfindung ist, ein neues und allgemeines Verfahren, System und eine neue und allgemeine Vorrichtung bereitzustellen, um derartige integrierte Daten- und Softwarestrukturen für XML-Dokumente zu generieren. Noch eine andere Aufgabe der Erfindung ist, ein neuartiges Verfahren, System und eine neuartige Vorrichtung bereitzustellen, um Standarddokumentstrukturen, d.h. XML-Dokumente, direkt auszuführen.
  • Kurzdarstellung der Erfindung
  • Diese Aufgaben werden durch die Erfindung, wie sie in den Ansprüchen 1 und 7–9 dargelegt wird, realisiert.
  • Der Erfindungsgedanke beruht auf einem neuen Verfahren/System, welches sich ausführbarer Software und Daten in einer koordinierten und integrierten Struktur bedient. Die vorliegende Erfindung kann als eine Anwendung betrachtet werden, fällt jedoch in keine der oben genannten Kategorien, d.h. Datenaustauschanwendungen oder Dokumentveröffentlichungsanwendungen. Im Gegensatz zu derartigen bestehenden Anwendungen stellt diese Erfindung ein Verfahren und eine Vorrichtung bereit, um ein XML-Dokument direkt auszuführen (oder auf andere Weise zu verarbeiten).
  • Die vorliegende Erfindung verwendet die bestehende Struktur des XML-Dokuments wieder, wobei sie eine neue Struktur und ein neues Konzept für das Programm vermeidet, welches das Dokument verarbeiten sollte. Demzufolge definiert die erfinderische Lösung ein Programm für jedes Dokument (in Gegensatz zu einem für jede DTD), und somit wird die Prozesskomplexität deutlich reduziert.
  • Eine derartige Fähigkeit der direkten Ausführung von XML-Dokumenten wird mittels Dekorierens eines bestimmten XML-Dokuments und/oder seiner Dokumenttypdefinitionen (DTD) mit ausführbaren Befehlen, welche das lokale Verhalten und den lokalen Prozess jeweils für jeden Tag oder an jedem Knoten definieren, erreicht.
  • Dies wird durch Einbinden der Programmbefehle in Textform und/oder Grafikdiagramme, die sequenzielle oder gleichzeitige Steuerung und Datenfluss angeben, erreicht. Insbesondere erfolgt dies derart, dass die Instanziierung von Befehlen eines XML-Roboters auf ein spezifisches XML-Dokument angewandt wird, was ein ausführbares XML-Dokument ergibt, welches das gesamte Ausführungsverhalten des XML-Dokuments enthält.
  • Eine bevorzugte Ausführungsform der Erfindung bedient sich einer eindeutigen und allgemeinen DTD, welche die Modulstruktur, die für Module des XML-Roboters zu verwenden ist, spezifiziert. Ein spezifisches XML-Dokument kann durch Anwenden von Prozeduren und Spezifikationen, welche in einem derartigen XML-Roboter angegeben werden, auf das XML-Dokument verarbeitet werden. Daher sind die Module in die Struktur des XML-Dokuments derart eingebunden, dass die Ausführung des XML-Dokuments direkt durchgeführt wird. Die Ausführung baut auf einigen Funktionen (Primitives) auf, welche definieren, wie auf ein bestimmtes XML-Dokument zugegriffen und wie dieses geändert werden kann. Ferner definiert ein spezifisches und eindeutiges Flussdiagramm den Ausführungsprozess des XML-Dokuments in seiner Gänze. Diese grundlegenden Definitionen der Erfindung sind vollständig in dem Sinne, dass die angegebenen Beispiele für XML-Roboter zur direkten Ausführung gemäß der Erfindung führen.
  • Eine andere bevorzugte Ausführungsform der Erfindung stellt die gesamten Informationen für jede Art von Elementen eines bestimmten XML-Dokuments mittels eines grafischen Flussdiagrammes (GFC) bereit. Dieses GFC definiert den Steuerungsablauf durch die Elemente bzw. Komponenten und definiert, welche Aktionen während dieses Steuerungsablaufes ausgeführt werden. Der Datenfluss wird durch Aktionen bereitgestellt, welche ausgeführt werden, wenn bestimmte Zustände des GFC erreicht werden. Beispiele für GFCs sind Flussdiagramme, endliche Zustandsautomaten, Zustandsdiagramme, UML-Zustandsautomaten, alle Arten von Petri-Netzen, UML-Aktionsdiagramme und andere Arten von Rechenmodellen. Durch Darstellen des XML-Dokuments als Strukturbaum kann diese Ausführungsform auf rein grafische Weise definiert und erläutert werden, was eine fortgeschrittene visuelle integrierte Entwicklungsumgebung für XML-Roboter ermöglicht. Andererseits kann für sequenzielle GFC-Modelle (Flussdiagramme, endliche Zustandsautomaten), die Aktionen bezüglich Zuständen ausführen, diese grafische Ausführungsform direkt in eine Ausführungsform, die sich einer Textform bedient, umgesetzt werden. Zusätzlich könnte die Ausführungsform, welche sich einer Textdarstellung bedient, auf ein Modell verallgemeinert werden, welches Gleichzeitigkeit (d.h. die parallele Ausführung mehrerer Aktionen) und Aktionen hinsichtlich Pfeilen (d.h. Aktionen an Transitionen von endlichen Zustandsautomaten) ermöglicht, derart, dass alle Variationen dieser Ausführungsform in die Ausführungsform, welche sich grafischer Flussdiagramme bedient, umgesetzt werden könnten.
  • Beide Ausführungsformen sind durch eine modulare Struktur gekennzeichnet, wobei jedes Modul das Ausführungsverhalten für alle Elemente eines spezifischen Tag, z.B. <A ...>, definiert, wobei Ausführungsverhalten für Komponenten derartiger Elemente hinzugefügt wird und weiterhin Ausführungsverhalten für alle Instanzen von Elementen mit anderen Tags, z.B. <B...>, hinzugefügt wird. Alle Informationen in einem Modul, ob nun textliche oder grafische, beziehen sich auf eine Instanz der beschriebenen Art von Elementen (<A...>), die als self-Element bezeichnet wird. In beiden Ausführungsformen werden Primitives bereitgestellt, um externe Funktionen aufzurufen, durch die Struktur des Dokuments/Baums zu navigieren, über alle Instanzen einer bestimmten Art von Elementen (<A...>), und zusätzliche Attribute des Dokuments/Baums zu definieren, dessen Definition in einem rein funktionellen Stil angegeben ist. Wenn eine DTD für das auszuführende XML-Dokument vorliegt, liefert diese DTD explizit die Informationen darüber, welche Elementarten vorliegen und welche Komponenten für diese Arten vorhanden sind. Demnach bietet eine derartige DTD Struktur und Anleitung zum Schreiben einer XML-Roboterspezifikation. Wenngleich beide Ausführungsformen ohne eine explizite DTD arbeiten, wird eine DTD für die Definitionen und die Spezifikation der unten beschriebenen ersten Ausführungsform verwendet. Ferner muss festgehalten werden, dass eine einfache DTD von einem XML-Dokument ohne DTD abgeleitet werden kann.
  • In den bevorzugten Ausführungsformen werden Zwischenergebnisse durch dynamisches Erstellen und Neudefinieren von Attributen der Elemente in dem Dokument/den Knoten des Strukturbaums gespeichert. Andere rein funktionelle/deklarative Modelle auf Ereignisbasis sind ebenfalls möglich. Allerdings werden die dynamischen Prozessinformationen vorzugsweise durch die vorliegende Dokument/Baum-Struktur angegeben. Es ist wichtig zu verstehen, dass im Gegensatz zu bestehenden Verarbeitungsmodellen das Dokument oder der Strukturbaum des XML-Dokuments direkt als Basis für ein GFC (oder eine entsprechende Textform) verwendet wird, welches die Definition des Ausführungsverhaltens des XML-Dokuments ist. Demnach ist ein derartiger XML-Roboter eine grundlegende neue Möglichkeit des Anwendens der XML-Technik und des Verarbeitens von XML-Dokumenten.
  • Da die Erfindung nicht auf spezifische Plattformen oder konkrete Implementierungen des Prozesses, z.B. von bestehenden APIs wie SAX und DOM, beschränkt ist, muss die hier angegebene Spezifikation von derartigen konkreten Formen abstrahiert werden. Dennoch sind die verwendeten Primitives derart definiert, dass diese implementiert werden könnten. Ferner ist die Erfindung nicht auf spezifische Programmiersprachen beschränkt, welche das Flussdiagramm oder andere strukturelle Implementationen, beispielsweise ob Zwischenformen/-ergebnisse generiert werden oder ob das XML-Dokument mittels eines Compilers bzw. eines Interpreters oder einer Kombination daraus ausgeführt wird, implementieren.
  • Kurze Beschreibung von Ausführungsformen mit Bezugnahme auf die folgenden Zeichnungen
  • 1 zeigt ein Beispiel für eine DTD namens "query".
  • 2 zeigt ein XML-Dokument, das in Bezug auf die Beispiel-DTD gemäß 1 gültig ist.
  • 3 zeigt die Baumstruktur des XML-Dokuments aus 2, welche durch die DTD "query" aus 1 impliziert wird.
  • 4 zeigt eine grafische Spezifikation und deren entsprechende Instanziierung der DTD gemäß 1.
  • 5 zeigt ein Spezifikationsmodul, das die Informationen der linken Seite von 4 für die Elementdefinition "query" einkapselt.
  • 6 zeigt die Spezifikationsmodule für "setpoints" und "action" des Elements.
  • 7 zeigt, wie die lokalen GFCs von jeder Elementdefinition für jede Instanz eines derartigen Elements im Strukturbaum instanziiert werden.
  • 8 zeigt, wie die Instanzen der lokalen GFCs mit einem globalen, hierarchischen GFC verbunden sind.
  • 9 zeigt die eindeutige DTD, welche die Modulstrukturen definiert.
  • 1015 zeigen die Flussdiagramme, welche die Ausführung eines bestimmten XML-Dokuments mittels Modulen, die in Bezug auf die DTD XML-robot.dtd gültig sind, definieren.
  • 1618 zeigen die Textdarstellung von Modulen des Beispiels gemäß 1 ff.
  • 19a19d zeigen Beispiele, wie eine spezifische XML-Roboter-Spezifikation implementiert werden kann.
  • 20 zeigt eine Übersicht über eine Ausführungsform für eine XML-Roboterbeschreibung auf Web-Basis der bevorzugten Ausführungsform.
  • Bevorzugte Ausführungsformen der Erfindung werden in der Folge mit Bezugnahme auf die Zeichnungen beschrieben.
  • Die Erfindung realisiert die direkte Ausführung eines XML-Dokuments. Die folgenden Ausführungsformen beschreiben eine grafische und eine textliche Realisierung des Verfahrens, des Systems und der Vorrichtung. Wenngleich sich die nachfolgenden Beispiele auf XML-Dokumente einer bestimmten und bekannten DTD beziehen, versteht es sich, dass die Erfindung unter Berücksichtigung bestimmter Nachteile, beispielsweise undefinierte Resultate, die Ausführung von XML-Dokumenten ohne im vorhinein bekannte DTDs gestattet. In jedem Fall wird die DTD (falls im vorhinein bekannt) oder das XML-Dokument direkt mit der XML-Roboterspezifikation("Dekoration" der DTD oder des XML-Dokuments) integriert. Die Erfindung ist, wie oben beschrieben wurde, im Grunde genommen von der konkreten Implementierung (Plattform, Programmsprachen und strukturelle Formen wie Speichern und Verarbeiten) unabhängig. Allerdings werden nachstehend gegebenenfalls bevorzugte Ausführungsformen, die sich einer spezifischen Implementierung bedienen, beschrieben.
  • Bezugnehmend auf 1 bis 8 wird eine erste, grafische Ausführungsform der Erfindung beschrieben.
  • 1 zeigt eine Beispiel-DTD mit einem Element "query", welches drei Komponenten, zwei vom Action-Typ und eine optionale Komponente vom Query-Typ, aufweist. Die Attributliste des Elements "query" besteht aus dem einen Attribut "question", wobei dieses ein erforderliches Zeichendatenattribut ist. Das Element "action" setzt sich entweder aus dem Element "setpoints" oder dem Element "query" zusammen. Das Element "setpoints" weist keine Komponenten und das einfache Attribut "points" auf.
  • 2 stellt ein gültiges Dokument in Bezug auf die Beispiel-DTD aus 1 dar, wobei es auf die DTD "query.dtd" gemäß 1 verweist. Diese Instanz wird als Beispieldokument für die nachstehende weitere Beschreibung verwendet.
  • 3 zeigt ein entsprechendes mögliches Umsetzen des Dokuments in 2 auf einen attributierten Strukturbaum (AST). Ein derartiger AST ist eine alternative grafische Darstellung der Struktur eines XML-Dokuments. Die Knoten, welche mit 1 und 3 nummeriert sind, sind Instanzen des Elements "query". Sie weisen die beiden erforderlichen "action"-Geschwister auf, die als "S1-action" und "S2-action" zugänglich sind, und der optionale "query"-Geschwister ist nicht vorhanden. Wenn ein "query"-Geschwister vorhanden wäre, wäre es als "S-query" zugänglich. Die Knoten 2, 4 und 5 sind Instanzen des Elements "setpoints", welche keine Geschwister aufweisen. Attribute und deren Werte werden innerhalb der Kästchen visualisiert.
  • 4 zeigt die Relation der Ausführungsspezifikation für eine DTD und wie Instanzen der DTD ausgeführt werden. Die Spezifikation besteht aus der reinen DTD-Definition und aus vorzugsweise grafischen Flussdiagrammen (GFC) und Aktionen, die ausgelöst werden, wenn bestimmte Zustände der Diagramme erreicht werden. Das Kästchen auf der linken Seite stellt eine Ausführungsspezifikation für eine DTD dar, welche strukturiert ist in die reinen DTD-Komponenten, die Definitionen (visuelle Beschreibung) von grafischen Flussdiagrammen (GFC) und in Transitionsregeln. Letztere werden ausgelöst, während die Steuerung durch die Diagramme fließt. Als Alternative können dieselben Spezifikationen für die Elementinstanzen eines XML-Dokuments ohne DTD angegeben werden.
  • Das Kästchen auf der rechten Seite veranschaulicht, wie diese Struktur die direkte Ausführung eines XML-Dokuments impliziert. Die DTD, falls vorhanden, wird verwendet, um das XML-Dokument zu validieren. Ein attributierter Strukturbaum (AST) wird konstruiert. Die GFCs werden verwendet, um den AST zu dekorieren, was ein globales Flussdiagramm ergibt, das dem geparsten XML-Dokument entspricht. Das Dokument wird durch Ausführen des GFC, z.B. Auslösen der Aktionen, die bestimmten Zuständen der GFC zugeordnet sind, und Verarbeiten des Steuerungsablaufes gemäß den Bedingungen innerhalb der GFCs, ausgeführt.
  • Eine gesamte Ausführungsspezifikation ist in Spezifikationsmodule strukturiert. Jedes Spezifikationsmodul entspricht einer Elementdeklaration, welche das Ausführungsverhalten jenes Elements gemeinsam mit den zusätzlichen Ausführungsverhalten für die Komponenten jenes Elements und für die Instanzen anderer Elementarten beschreibt.
  • 5 zeigt ein Beispiel dafür, wie ein Spezifikationsmodul für das Element "query" gemäß 1 aussieht. Der oberste Teil des Spezifikationsmoduls enthält relevante Element- und Attributdefinitionen. Der mittlere Teil gibt ein GFC-Fragment an, welches das Ausführungsverhalten für Instanzen des Elements "query" spezifiziert. Das GFC-Fragment wird mittels des bevorzugten Verfahrens einer grafischen Darstellung angegeben. Schließlich wird im unteren Teil von 5 die Transitionsregel dargestellt.
  • Bezugnehmend auf 4 und 5 wird nun das bevorzugte Verfahren des Verwendens einer grafischen Darstellung der Beispiel-DTD aus 1 ausführlicher beschrieben. Das gezeigte Beispiel stellt eine GFC mit einer sequenziellen Steuerung, vergleichbar mit endlichen Zustandsautomaten, Zustandsdiagrammen, klassischen Flussdiagrammen oder UML-Zustandsautomaten, dar. Die Prozedur funktioniert auf ähnliche Weise für verteilte GFCs wie Varianten von Petri-Netzen oder UML-Aktivitätsdiagrammen. Bei dieser Ausführungsform wird das Ausführungsverhalten eines XML-Dokuments mittels eines sequenziellen grafischen Flussdiagramms angegeben, dessen Zustände Aktionen zugeordnet sind. Bei alternativen Ausführungsformen können Pfeile des GFC Aktionen zugeordnet sein. Beim vorliegenden Ausführungsbeispiel werden in jedem beliebigen Zustand des GFC die entsprechenden Aktionen ausgelöst, gefolgt von einer Zustandstransition zum nächsten Zustand. Wie bei anderen Formalismen auf Zustandsbasis (beispielsweise Harelschen Zustandsdiagrammen) können bei dem vorliegenden GFC die Ablaufpfeile mit booleschen Prädikaten gekennzeichnet werden, welche den Fluss der Steuerung bestimmen, wobei Labels weggelassen werden können. Ein Ablaufpfeil ohne einen Label weist ein Standardverhalten auf, z.B. wenn kein anderer Pfeil, der von seiner Quelle ausgeht, einen Label aufweist, der bei Auswertung wahr ergibt, dann wird der nicht mit einem Label versehene Pfeil aktiv.
  • Wie auf der linken Seite von 4 dargestellt ist, besteht eine Verhaltensspezifikation einer DTD aus drei Teilen: der DTD-Definition selbst, einer visuellen Notation zum Spezifizieren der GFCs und der Spezifikation der Aktionen. Darüber hinaus kann eine Spezifikation zur Berechnung von zusätzlichen Attributen vor der Ausführung, vorzugsweise angegeben durch funktionelle Abhängigkeiten und Sicherheitsbedingungen, welche von den Attributen abhängen, die durch die DTD und durch die Spezifikation von zusätzlichen abgeleiteten Attributen abhängig sind, vorliegen. Die DTD wird verwendet, um einen Parser zu generieren, und dann wird ein geparstes XML-Dokument auf kanonische Weise in einen AST umgesetzt. Der zweite Teil einer Spezifikation beschreibt den Steuerungsablauf im Sinne von Zustandstransitionen in einem GFC. Eine visuelle Beschreibung ist jeder Elementdeklaration der DTD zugeordnet und definiert ein lokales GFC und spezifiziert auch, wie dieses GFC über eine induktive Dekoration des AST in ein globales GFC eingefügt werden kann. Zu diesem Zweck ist jeder Knoten des AST mit einer Kopie des GFC-Fragments dekoriert, das durch seine grafische Darstellung angegeben ist. Die Verweise auf Abkömmlinge eines Knotens definieren eine induktive Konstruktion des globalen GFC, wie unten in Zusammenhang mit seiner Ausführung (vgl. 7 und 8) beschrieben wird. Der letzte Teil besteht schließlich aus Transitionsregeln, welche die Aktionen spezifizieren, die während der Ausführung des Dokuments ausgelöst werden. Jeder Zustand des GFC kann einer Transitionsregel zugeordnet sein, welche ausgelöst wird, wenn dieser Zustand erreicht wird. Die Transitionen in dem GFC sind bedingt, wobei die Bedingungen aus Attributen der Knoten des AST aufgebaut werden.
  • Das GFC in 5 enthält einen runden Knoten, welcher einen Zustand namens „ask" darstellt. Wenn dieser Zustand erreicht wird, wird die entsprechende Aktion im untersten Teil des Moduls ausgelöst. Dann läuft die Steuerung entweder zu dem mit "S1-action" gekennzeichneten Kästchen oder zu dem mit "S2-action" gekennzeichneten Kästchen weiter, je nach den Bedingungen, mit welchen die Ablaufpfeile beschriftet sind. Die Kästchen stellen die GFCs dar, welche den Geschwistern entsprechen, auf die über ihre Labels verwiesen wird. Die Pfeile I und T stellen den Eintritts- bzw. den Austrittspunkt des Steuerungsablaufes dar.
  • In der ersten Ausführungsform werden, wie später beschrieben wird, I und T wie normale Zustände behandelt, die als "initial" und "terminal" bezeichnet werden. Die Pfeile von I weg und zu T hin müssen explizit als Transitionen von "initial" weg und zu "terminal" hin angegeben werden. Weitere Pfeile in Kästchen hinein müssen explizit als Pfeile zum "initial"-Zustand des Kästchens angegeben werden, und Pfeile aus Kästchen heraus müssen als Pfeile vom "terminal"-Zustand des Kästchens weg angegeben werden. Diese Entsprechung ist unten in Zusammenhang mit 1 bis 8, welche die GFC in Textform darstellen, einfach zu verstehen.
  • 6 zeigt die Spezifikationsmodule "action" und "setpoints" der Beispiel-DTD aus 1. Während "action" lediglich die Wahl zwischen "setpoint" und "query" ist und somit die GFC-Definitionen dieser Elementdefinitionen übernimmt, führt Elementmodul setpoint eine triviale GFC ein, welche aus einem Zustand besteht, dessen entsprechende Aktion das Erhöhen des Werts eines PointCounter um die Zahl ist, welche mittels des Attributs "points" angegeben wird.
  • Wie festgehalten wurde, enthält die visuelle Notation in jedem Spezifikationsmodul die Informationen über das lokale GFC, welche jedem Knoten des AST, der dem Spezifikationsmodul entspricht, zuzuordnen ist, und die Informationen, die erforderlich sind, um dieses GFC in das globale GFC, welches dem eingegebenen Dokument entspricht, einzubetten.
  • 7 zeigt, wie die grafischen Fragmente von jeder der grafischen Darstellungen den Knoten des AST, welche dem Beispieldokument entsprechen, zugeordnet werden, und veranschaulicht dadurch, wie ein globales GFC aus einem AST durch Übereinstimmen der GFCs gemäß 5 und 6 mit den entsprechenden Knoten des AST erhalten werden kann. Zu sehen sind zwei Instanzen des GFC-Fragments, welches durch das Modul "query" angegeben wird (vgl. 5), und drei Instanzen des trivialen GFC-Fragments, welches durch das Modul "setpoints" (vgl. 6) angegeben wird. Wiederum zeigt diese Figur die Dekoration jedes Knotens im AST, welche mittels einer grafischen Darstellung erreicht wird. Eine derartige grafische Dekoration kann den Steuerungsablauf auf bevorzugte Weise realisieren. Allerdings versteht es sich, dass sich die Erfindung Lösungen bedienen kann, bei denen textliche Programmbefehle oder andere Mittel den Steuerungsablauf und das Auslösen von Aktionen, welche hier mit den grafischen Flussdiagrammen realisiert werden, ersetzen würden.
  • 8 zeigt das hierarchische GFC, welches aus einer induktiven Verschachtelung dieser Fragmente resultiert. Die GFC-Fragmente in 7 enthalten Kästchen mit Verweisen auf Geschwister. Die Verschachtelung erfolgt durch Auflösen dieser Verweise.
  • Ein eingehenderes Verstehen der hier verwendeten visuellen Notation für den Steuerungsablauf sollte durch die folgende Spezifikation vermittelt werden. Die Semantik der grafischen Notation, die in den Spezifikationsmodulenverwendet wird, kann beschrieben werden wie folgt:
  • Es gibt zwei Arten von Knoten: Ovale und Kästchen. Die Ovale stellen die gewöhnlichen Zustände des GFC dar. Sie sind auch mit einem Aktionsnamen beschriftet, wobei die Aktion (welche mittels Transitionsregeln spezifiziert ist) ausgelöst wird, wenn der Zustand erreicht wird. Die Kästchen entsprechen Überzuständen, welche ihrerseits GFCs sind. Darüber hinaus entsprechen die Kästchen den Knoten des AST. Diese direkte Eins-zu-Eins-Entsprechung von Überzuständen im GFC und Knoten im AST ist die detaillierte Ausführungsform der Kennzeichnung der Struktur des AST und der Struktur des Ausführungsverhaltens. Natürlich ist die beschriebene Verwendung von Kästchen, der Verweis dieser auf Komponenten und die Eins-zu-Eins-Entsprechung der Strukturen von der spezifischen Form von GFC, von Ablaufbedingungen und von Aktionen unabhängig.
  • Die Kästchen sind das GFC, welches den Komponenten auf der rechten Seite der Elementdefinition entspricht. Die Definition dieser GFCs wird im Spezifikationsmodul,welches den jeweiligen Elementen entspricht, angegeben. Die Pfeile entsprechen Kanten im hierarchischen Zustandstransitionsgraph des generierten GFC. Die Quelle und das Ziel eines Pfeils können entweder ein Kästchen oder ein Oval sein. Darüber hinaus liegen zwei Pfeile vor, einer dessen Quelle mit I (für "initial") gekennzeichnet und dessen Ziel ein Kästchen oder ein Oval ist und der andere dessen Ziel mit T (für "terminal") gekennzeichnet und dessen Quelle ein Kästchen oder ein Oval ist. Der mit I gekennzeichnete Pfeil zeigt den Eintrittspunkt in das lokale GFC an, und der mit T gekennzeichnete zeigt den Austritt davon an. Eine Transition zu einem Überzustand des GFC resultiert in einem Eintritt zu dem ersten Zustand des GFC (durch den I-Pfeil gekennzeichnet), welcher diesen Überzustand darstellt. Die Kästchen in der visuellen Beschreibung in jedem Spezifikationsmodul sind Verweise auf das entsprechende GFC. Das Auflösen dieser Verweise für das dekorierte Beispieldokument, welches in 7 beschrieben ist, führt zu dem in 8 dargestellten GFC. Dieses generierte hierarchische GFC gibt das Ausführungsverhalten des XML-Dokuments an, und eine direkte Ausführung des hierarchischen GFC ist möglich, was ermöglicht, XML-Dokumente direkt auszuführen. Die Fähigkeit, die XML-Dokumente direkt auszuführen, hängt nicht von der spezifischen Art von GFC ab, welche in der bevorzugten Ausführungsform dargestellt ist, und jedwede Form von GFC, welche direkt ausgeführt werden kann, ist geeignet.
  • In der beispielhaften Form von GFC, wie bei Zustandsdiagrammen, erfolgt ein Eintritt in einen hierarchischen Zustand am Initialzustand, welcher durch einen Pfeil I angezeigt wird. Wenn der Endzustand (durch einen wegführenden Pfeil T gekennzeichnet) erreicht wird, erfolgt eine Transition zu einem Zustand, welcher in der Hierarchie eine Ebene höher liegt.
  • Demnach funktioniert die Ausführung des hierarchischen GFC in 8 wie folgt. Die Steuerung tritt bei der Wurzel des Strukturbaumes, d.h. Knoten 1, ein. Der Initialzustand des entsprechenden GFC ist der "ask"-Zustand innerhalb des Knotens 1. Das Attribut "question" dieses Knotens ist "Ist Paris die Hauptstadt von Frankreich?" Nach dem Auslösen der "ask"-Aktion, sollte das Attribut "answer" entweder auf "yes" oder "no" gesetzt werden. Wenn die Antwort gleich "yes" ist, folgt die Steuerung dem oberen Ablaufpfeil, der den "ask"-Zustand verlässt, und tritt bei Überzustand 2 ein. Der Initial- und der Terminal-Zustand von Überzustand 2 ist die Aktion "set". Nach dem Ausführen der Aktion "set" und dem Verlassen von Überzustand 2, geht es weiter zum (optionalen und im Wirklichkeit nicht existierenden) "S-query"-Geschwister, wobei keinerlei Aktion ausgelöst wird, und der Überzustand 1 wird verlassen. Wenn die Antwort auf die Frage im "ask"-Zustand von Überzustand 1 "no" war, erfolgt ein Eintritt in Überzustand 3, und von dort geht es weiter zum Initialzustand "ask" von Überzustand 3. Diesmal wird die Frage "Sind Sie sich sicher?" gestellt. Wenn die Antwort ein insistierendes "yes" ist, wird der PointCounter um 0 erhöht, andernfalls um 1 (Überzustände 4 und 5).
  • Bei einer bevorzugten Ausführungsform der Erfindung werden die Zustände mittels Datenwürfeln gehandhabt. Die Transitionsregeln für die Aktionen definieren den Inhalt derartiger Datenwürfel punktweise neu. Dies mag durch Annahme eines vereinfachten Modells eines imperativen Programmiersystems besser zu verstehen sein. Der Zustand des Systems wird durch eine mehrdimensionale Datenbank angegeben. Die Datenbank besteht aus n-dimensionalen Würfeln. Der Inhalt eines n-dimensionalen Würfels f kann durch den folgenden Term f (t1,..., tn ) gelesen werden, wobei t1,.., tn Terme sind, welche über den Würfeln der Datenbank gebaut sind. Eine normale Variable entspricht einem 0-dimensionalen Würfel, wohingegen Arrays und Records mit 1-dimensionalen Würfeln modelliert werden können.
  • Die möglichen Werte, welche in Würfeln gespeichert sind, können die üblichen Datentypen wie ganze Zahlen, reelle Zahlen, boolesche Werte oder beliebige andere, die in einer spezifischen Anwendung erforderlich sind, beispielsweise die Knoten eines Strukturbaums oder dynamisch generierte Objekte, umspannen. Attribute der Knoten des Strukturbaumes werden durch eindimensionale Würfel modelliert, und der Wert eines Attributs a eines Knotens n kann durch den Term a(n) erhalten werden. Aus Gründen der Zweckmäßigkeit wird die Punktnotation, welche in Attributgrammatiken und objektorientierter Programmierung verwendet wird, z.B. n.a anstatt a(n), ebenfalls verwendet.
  • Beispielsweise ist eine grundlegende Aktualisierungsregel von der Form f (t1,..., tn) :=v, wobei f (t1,..., tn) und v Terme sind, welche über den Würfeln in dem System gebaut sind. Die Semantik einer derartigen Regel ist, den Würfel f an der Position von bestimmten Koordinaten auf v zu aktualisieren. Die Regeln können entweder sequenziell oder auf parallele Weise, so dass die entsprechenden Aktualisierungen alle gleichzeitig ausgeführt werden, zusammengesetzt sein. Neben der oben dargestellten grundlegenden Transitionsregel können auch andere Transitionsregeln existieren, beispielsweise bedingte Regeln, bei denen das Auslösen von dem ausgewerteten booleschen Bedingungs-Term abhängt, Do-For-All-Regeln, welche das Auslösen derselben Regel für alle Elemente einer bestimmten Art ermöglichen, Auswahlregeln, welche das Auswählen eines Elements von einer bestimmten Art ermöglichen, und schließlich Ausweitungsregeln, welche für das Einführen neuer Elemente verwendet werden. Transitionsregeln werden rekursiv aus diesen Regeln aufgebaut.
  • Der Prozess des Ausführens der Transitionsregeln wird nunmehr ausführlicher beschrieben, immer noch mit Bezugnahme auf 8. Es ist möglich, die Ausführung des Beispielprogramms durch Verwendung der Aktionsregeln, die in den grafischen Darstellungen in 5 und 6 angegeben werden, nachzuverfolgen. Der Initial-Zustand ist ein einfacher Zustand, welcher mit der Aktion "ask" gekennzeichnet ist, wobei der Eintritt in diesen Zustand durch den I-Pfeil im grafischen Fragment gekennzeichnet ist, welches am Wurzelknoten des AST befestigt ist. Die Aktion "ask", die im "query"-Modul spezifiziert ist, wurde oben beschrieben (vgl. 3) und führt zum Drucken der Frage, die in dem Attribut "question: Ist Paris die Hauptstadt von Frankreich?" verfügbar ist. Dann wird eine Benutzereingabe erhalten (z.B. get(stdin)), und das Attribut "answer" wird auf die bereitgestellte Eingabe gesetzt.
  • Nachdem diese Aktionsregel ausgeführt wurde, werden die Bedingungen an den von diesem Zustand wegführenden Pfeilen ausgewertet. Zwei Pfeile führen von dem "ask"-Zustand weg, einer gekennzeichnet mit der Bedingung answer= " yes" und der andere mit der Bedingung answer= "no". Je nach dem Wert der Antwort, wird dem entsprechenden Pfeil gefolgt, der zum Überzustandknoten 2 oder zum Überzustandknoten 3 führt. Angenommen, die Antwort war "no", würde dem unteren Pfeil gefolgt werden und der Eintritt in den Überzustand 3 erfolgen. Da dies ein Überzustand ist, führt er zu einer Abfolge von Transitionen durch die Zustände des Flussdiagramms, welches diesen Überzustand darstellt. In diesem Fall ist der Initial-Zustand innerhalb dieses Überzustands wieder ein einfacher Zustand, der mit dem Oval dargestellt und wieder mit der Aktion "ask" gekennzeichnet ist. Diesmal wird die Frage "Sind Sie sich sicher?" gedruckt. Ja nach der Antwort des Benutzers folgt als nächstes entweder Knoten 4 oder Knoten 5. Diese Knoten sind Überzustände, welche einen einzigen Zustand enthalten, der durch die Aktion "set" gekennzeichnet ist. Diese Aktion fügt dem 0-dimensionalen Würfel soviele Punkte hinzu, wie mit dem Attribut "points" spezifiziert werden. Folglich erhält ein Benutzer, der auf die Initialfrage mit "yes" antwortet, 10 Punkte, ein Benutzer, der mit "no" antwortet und dann mit "yes" erhält 0 Punkte, und ein Benutzer, der auf die erste Frage mit "no" und auf die zweite mit "no" antwortet, erhält 1 Punkt. Infolge der Struktur des generierten GFC wird einem Benutzer, der auf die erste Frage mit "yes" antwortet, niemals die zweite Frage gestellt.
  • Abstrakter wird ein XML-Dokument demnach durch Generieren seines GFC, wie beschrieben wird, und darauffolgendes Beginnen mit dem Initial-Zustand (oder Initial-Zuständen im Fall gleichzeitiger Ausführung) seines Wurzelelements ausgeführt. Der Initial-Zustand wird durch Eintreten in den Überzustand, welcher der Wurzel des Dokuments entspricht, und Folgen des I-Pfeils gefunden. Wenn der I-Pfeil zu einem normalen Zustand führt, wird in diesen Zustand eingetreten, wobei andernfalls den I-Pfeilen rekursiv gefolgt wird. Wenn der Eintritt in den Initial-Zustand erfolgt, wird seine Aktion ausgelöst. Dann werden die Bedingungen auf den wegführenden Ablaufpfeilen ausgewertet, und ein Pfeil (oder mehrere Pfeile im gleichzeitigen Fall) mit erfüllter Bedingung wird ausgewählt. Wenn der Pfeil zu einem normalen Zustand führt, wird dieser Zustand ausgeführt, und die Prozedur wird wiederholt. Wenn der Pfeil zu einem Überzustand führt, wird den I-Pfeilen rekursiv gefolgt, um den nächsten auszuführenden Zustand zu bestimmen, und die Prozedur wird wiederholt. Wenn der Pfeil ein T-Pfeil ist, erfolgt ein Austritt aus dem Überzustand, und einer der wegführenden Pfeile des Überzustands mit erfüllter Bedingung wird ausgewählt. Diesem Pfeil wird wieder gefolgt, wie oben beschrieben wurde.
  • Demnach wird die Zusammensetzung der Aktion für eine XML-Elementdefinition entweder durch grafische und/oder textliche, sequenzielle oder gleichzeitige Steuerungsablauf- und/oder Datenflussdiagramme dargestellt. Spezielle textliche und/oder grafische Mittel werden bereitgestellt, um auf die Komponenten der XML-Elementdefinition zu verweisen, was die synchrone und/oder asynchrone Ausführung der Aktionen der Komponenten ermöglicht, derart, dass die Struktur des Dokuments, welche durch die Komponenten in jeder Elementdefinition angegeben wird, direkt in der Struktur der Ausführung, welche durch das Auslösen von Aktionen von Komponenten angegeben wird, wiederverwendet wird. Ferner können spezielle grafische und/oder textliche Mittel zum Definieren der sequenziellen oder gleichzeitigen Ausführungsreihenfolge der Aktionszusammensetzung gemeinsam mit Bedingungen bereitgestellt werden, welche bestimmte Ausführungspfade der spezifizierten Reihenfolge schützen. Diese speziellen grafischen und/oder textlichen Mittel können innerhalb der Definition von Bedingungen und Aktionen zum Verweisen auf den Knoten, für welchen die Aktionskombination definiert ist, zum Verweisen auf seine Komponenten und zum Verweisen auf seine Attribute, welche durch die XML-Attributdefinitionen angegeben werden, enthalten sein.
  • Bezugnehmend auf 9 bis 18 wird nun eine zweite, textliche Ausführungsform der Erfindung beschrieben.
  • 9 zeigt die eindeutige allgemeine DTD für die XML-Robotermodule, welche das Ausführungsverhalten von XML-Dokumenten gemäß der Erfindung darstellen. In der Folge wird mit Bezugnahme auf 9 ff eine Ausführungsform, die sich einer textlichen Realisierung der Erfindung bedient, ausführlicher beschrieben. Um 9 ff. zu beschreiben, werden die erforderlichen Syntax- und Primitive-Funktionen zunächst nachstehend definiert und erläutert. Die folgenden Definitionen konzentrieren sich auf die textliche Realisierung (Realisierung auf Textbasis).
  • Ein auszuführendes XML-Dokument ist als "doc.xml" benannt, und der XML-Roboter wird durch Dokumente definiert, denen, wenn der Elementname X ist, die Dateinamen "moduleX.xml" gegeben wurden. Ferner wird angenommen, dass alle diese Dateien durch die Flussdiagramme, die in 10 ff. dargestellt werden und die Ausführung von doc.xml erläutern, frei geändert werden können. Der Zustand der Ausführung besteht aus den genannten Dokumenten und den Werten elf globaler Variablen, die hier als cur, mod, state, derived, subcur, submod, curstate, action, trans, src und trg bezeichnet werden. Die Ausführung ändert die angegebenen Dokumente durch Erstellen und Neudefinieren von Attributen und durch Einfügen der Zustandselemente der Module in das Dokument "doc.xml". Ferner werden die Werte der globalen Variablen während der Ausführung neudefiniert (aktualisiert). Wenn beispielsweise die Variable cur den Wert v1 aufweist, im aktuellen Zustand der Ausführung, führt die Ausführung der Aktualisierung cur := v2 zu einem neuen Zustand, in dem die Variable cur den Wert v2 aufweist. Bei den vorliegenden Definitionen sind die Werte der globalen Variablen Verweise innerhalb der XML-Dokumente oder die Konstante "undef".
  • Das zu verarbeitende XML-Dokument bedient sich der zuvor beschriebenen genormten Struktur und enthält Elemente mit Start- und End-Tags der Form <A ...> ... </A>. Verweise auf Elemente sind Zeiger innerhalb der Dokumente. Die Verweise könnten (a) mittels Textpositionen (welche auffordern, sie zu aktualisieren, wenn weiterer Text in das Dokument eingefügt wird), (b) bestehender Verweismechanismen in der XML-Linkdefinition, (c) Zeiger auf Objekte in einem Objektmodell von XML-Strukturbäumen, beispielsweise DOM, oder den in der Ausführungsform mittels GFC beschriebenen Bäumen, implementiert werden.
  • Zu Gunsten eines besseren Verstehens des Ausführungsprozesses kann nun unser Hauptaugenmerk auf die Attribute des Elements gerichtet werden. Als ein Beispiel wird das Attribut aa eines Elements A, welches beispielsweise einen Wert "13" aufweist, folgendermaßen angegeben: <A aa="13"> ... </A>. Um den Wert des Attributs zu lesen, wird eine Funktion evalAttr(_,_) bereitgestellt, welche zwei Argumente, einen Verweis auf ein Element und einen Attributnamen nimmt und den Wert des Attributs liefert. Angenommen doc.xml enthält das Element A und r ist ein Verweis auf dieses Element, dann ergibt der Term evalAttr(r, "aa") bei Auswertung "13". Die Syntax "r.evalAttr("aa")", welche äquivalent mit evalAttr(r, "aa") ist, und analoge Syntaxen für andere Aktionen, werden aus Gründen der Zweckmäßigkeit auch in den 10 ff. und der Beschreibung verwendet.
  • Die Ausführung des XML-Dokuments, welche in den folgenden Absätzen beschrieben wird, setzt voraus, dass die Attribute dynamisch aktualisiert und/oder erstellt werden. Daher wird eine Prozedur setAttr(_,_,_) bereitgestellt, welche drei Argumente nimmt: das erste ist ein Verweis auf ein Element, das zweite auf einen Attributnamen und das dritte der neue (Initial-)
  • Wert des zu aktualisierenden (erstellenden) Attributs. Z.B. wandelt die Aktion r.setAttr("aa", "15") das Dokument doc.xml derart um, dass das Element A, auf welches durch r verwiesen wird, die Form <A aa="15"> ... </A> erhält. Eine Aktion r.setAttr("bb", "7") würde das Dokument doc.xml derart umwandeln, dass das Element, auf welches durch r verwiesen wird, die Form <A aa="13" bb="7"> ... </A> aufweist. Wenn beide Aktionen in einer beliebigen von beiden Reihenfolgen ausgelöst werden, wird die resultierende Form des Elements, auf welches mittels r verwiesen wird, <A aa="15" bb="7"> ... </A>. Bei dieser Ausführungsform sind die Elemente, auf welche verwiesen wird, Teile eines physikalischen Dokuments, beispielsweise doc.xml, und die Umwandlung des Elements führt zu einer destruktiven, nicht umkehrbaren Änderung des XML-Dokuments.
  • Ferner können zusätzlich zu Standardwerten v, welche in XML existieren, beispielsweise Strings und Zahlen, Attribute auf Werte gesetzt werden, welche Verweise auf (andere) Elemente in Dokumenten sind, beispielsweise der Verweis r in den oben beschriebenen Beispielen. Wie erwähnt wurde, können derartige Verweise auf verschiedenerlei Weise implementiert werden, solange die Ausführung von Aktion r1.setAttr(a,v) bewirkt, dass der Term r1.evalAttr(a) bei Auswertung v ergibt, bis eine andere Aktion r1.setAttr(a, v') auf dasselbe Element r1 und dasselbe Attribut a, jedoch mit einem anderen Wert v' ausgelöst wird.
  • Eine Aktion "PasteInside" wird verwendet, um Text in ein XML-Dokument einzufügen. Die Aktion weist zwei Argumente auf, wobei das erste ein Verweis auf ein Element und das zweite der einzufügende Text ist. Der Text wird direkt nach dem Start-Tag des Elements, auf das verwiesen wird, eingefügt. Wieder in Anbetracht eines Verweises r wandelt die Aktion r.pastInside("textsample") das Element A, auf welches verwiesen wird, innerhalb doc.xml in die folgende Form: <A aa="13"> textsample ... </A> um.
  • Eine Aktion "Copy" wird verwendet, um einen String aus einem Verweis zu erstellen. Wieder in Anbetracht des oben angeführten Beispiels eines Verweises r, der auf ein Element A in doc.xml zeigt, ergibt der Term r.copy bei Auswertung den String "<A aa=13> ...</A>", welcher syntaktisch mit dem Element, auf das verwiesen wird, ident ist, jedoch physikalisch verschieden ist. Wenn ein Element kopiert wird, bleiben die Attribute des Elements gleich, der Verweis auf das kopierte Element bleibt jedoch derart, dass er nur auf das Dokument zeigt, von welchem die Kopie genommen wird.
  • Die Aktionen PasteInside und Copy werden verwendet, um Teile von einem in ein anderes Dokument zu kopieren. In Anbetracht von zwei Dokumenten
    doc1.XML:
    Figure 00260001
    und Verweis r1, welcher auf das Element B von docl.XML zeigt, und r2, welcher auf das innere Element C von doc2.XML zeigt, führt die Aktion r1.pasteInside(r2.copy) zu einem umgeformten doc1.XML:
    Figure 00260002
    Figure 00270001
    wohingegen doc2.XML unverändert bleibt. Attribute des Elements C, auf welches mittels r2 verwiesen wird, werden kopiert, Verweise in doc2.XML hinein werden jedoch nicht geändert.
  • In Anbetracht eines physikalischen Dokuments, z.B. die Datei doc.xml (oder eine der moduleXYZ.xml-Dateien), ergibt der Term getRef("doc.xml") bei Auswertung einen Verweis zur Wurzel des Dokuments, z.B. das äußerste Start/Ende-Tag-Paar. Ferner ergibt der Term r.getLabel bei Auswertung den Namen des Elements, auf welches durch r verwiesen wird. In den oben angeführten Beispielen mit doc1.XML und doc2.XML, ergibt r1.getLabel bei Auswertung "B" und r2.getLabel bei Auswertung "C".
  • Die Navigation durch XML-Dokumente erfolgt mittels der Funktionen getFirst(_,_), getNext(_) und parent(_). Das erste Argument aller drei Funktionen ist ein Verweis auf ein Element innerhalb eines XML-Dokuments. In Anbetracht eines Verweises r, ergibt r.getFirst("A") bei Auswertung einen Verweis auf das erste Element A direkt innerhalb der Start- und End-Tags von r. Verschachtelte Instanzen werden nicht berücksichtigt. In den Beispielen mit doc1.XML und doc2.XML kann der Verweis r1 mittels des Terms getRef("doc1.XML") erhalten werden, und der Verweis r2 kann mittels des Terms getRef("doc2.XML") erhalten werden.
  • Wenn kein Element mit dem angeforderten Namen vorliegt, ergibt getFirst bei Auswertung die Konstante "undef". Ferner verweist getRef nicht auf verschachtelte Elemente. Bezugnehmend auf die oben angeführten Beispiele ergibt getRef(doc1.XML).getFirst("A") bei Auswertung keinen Verweis auf das innere A-Element, sondern "undef". Um einen Verweis auf das innere A-Element zu erhalten, musste getRef(doc1.XML).getFirst("B").getFirst("A") verwendet werden.
  • Infolge der Definition von getFirst, entweder r.getFirst("l").getLabel = "l" oder r.getFirst("l") = undef, für jedweden Verweis r und Label "l".
  • Die Funktion getNext(_,_) liefert einen Verweis auf das nächste Element mit demselben Label, falls vorhanden, wobei andernfalls "undef" geliefert wird. In Anbetracht eines Verweises r auf das folgende XML-Fragment:
  • Figure 00280001
  • Der Verweis r.getFirst("B") verweist auf das B-Element mit x ="1", der Verweis r.getFirst("B").getNext verweist auf das B-Element mit x="2", der Verweis r.getFirst("B").getNext getNext verweist auf das B-Element mit x="4". Um auf das B-Element mit x="3" zu verweisen, ist es erforderlich, r.getFirst("B").getNext.getFirst("B") zu schreiben.
  • Die Funktion "parent" setzt einen Verweis auf ein Element in einen Verweis auf das wenigst einschließende Element um. In den Beispielen mit doc1.XML und doc2.XML gilt r1.parent = getRef("doc1.XML") und r2.parent.parent = getRef("doc2.XML").
  • Die Funktion "<CopyList(_,_)" verwendet als erstes Argument einen Verweis und als zweites Argument einen Elementnamen. r.CopyList(a) setzt einen String durch Verketten aller Elemente A direkt (nicht verschachtelt) in r zusammen. Demnach führt, in Anbetracht des Beispiels im oben stehenden Absatz über getNext, r.CopyList zu der String "<B x="1"></B><B x="2"><B x="3"></B></B><Bx="4"></B>", die aus 3 B-Elementen besteht, wobei das zweite durch Zufall ein anderes, verschachteltes B-Element enthält.
  • Schließlich wird eine Funktion "traverse" vorgesehen. Beginnend mit einem Verweis auf die Wurzel, zählt "traverse" alle Elemente im Dokument in einer Reihenfolge auf.
  • Nun wird in 9 die DTD für die Module definiert. Die Elemente dieser DTD werden nachstehend schrittweise erläutert. Für gewöhnlich werden die Module in getrennten Modul-Dateien angegeben. Natürlich mussten die DTDs mit einem eindeutigen Wurzelelement vervollständigt werden. Allerdings könnte eine gesamte Sprache mit einer Liste aller Module in einer DTD enthalten sein. Das oberste Modul-Element ist die Wurzel dieser Modul-Dateien.
  • Die Komponenten eines Moduls sind eine Liste von abgeleiteten Attributen, ein optionaler Ausdruck, eine Liste von Zuständen und eine Liste von Modulen (Untermodulen). Das "name" -Attribut gibt das Element an, auf welches das Modul anwendbar ist. Die Definitionen beruhen auf der Annahme, dass ein Element "X" im auszuführenden Dokument vorliegt, dass ein XML-Dokument namens "moduleX.xml", dessen Wurzelelement ein "module"-Element ist, existiert, und dass das Wurzelelement ein "name"-Attribut mit dem Wert "X" aufweist.
  • Figure 00290001
  • Die Liste von abgeleiteten Attributen enthält Attributdefinitionen, welche nach funktionellen Abhängigkeiten von anderen Attributdefinitionen angegeben werden. Der optionale Ausdruck gibt eine Sicherheitsbedingung an, welche durch jede Instanz eines derartigen Elements erfüllt werden muss. Die Zustände sind die (nicht verschachtelten) Zustände jeder Instanz eines derartigen Elements. Schließlich bezieht sich die Liste von Modulen auf die Komponenten des Elements, wobei für jede dieser die Untermodule Zustände und weitere Untermodule enthalten können. Für die Untermodule bezeichnet das "number"-Attribut, auf welche Instanz es sich bezieht. Wenn es sich auf die erste Instanz bezieht, hat "number" den Wert "1" und so weiter. Wenn es sich auf alle Instanzen bezieht, kann "number" den Wert "all" haben.
  • Figure 00300001
  • Eine abgeleitete Attributdefinition weist zwei Komponenten auf: die Argumente, welche in der Definition verfügbar sind, und die eigentliche Definition, welche als Ausdruck angegeben ist. Das "name"-Attribut gibt den Namen des abgeleiteten Attributs an. Ein abgeleitetes Attribut wird durch das Einstellen der Werte der Argumente und das Auswerten des definierenden Ausdrucks ausgewertet.
  • Die Komponenten eines Zustands sind eine Liste von Aktionen, welche auszulösen sind, wenn der Zustand erreicht wird, und eine Liste von Transitionen, die von dem Zustand wegführen. Der Name des Zustands wird verwendet, um auf ihn als Ziel irgendeiner Transition zu verweisen.
  • Figure 00300002
  • Die beiden Komponenten einer Transition sind ein Ausdruck, welcher die Transition schützt, und ein Pfad, welcher das Ziel einer Transition bezeichnet. Alle Ausdrücke, Pfade, Aktionen und Definitionen von abgeleiteten Funktionen hängen von deren Ursprung, d.h. der Wurzel des Moduls, bzw. von seinen Instanzen im auszuführenden XML-Dokument ab.
  • Figure 00300003
  • Ein Pfad besteht aus einer optionalen Komponente und einem Attributzustand. Der Zustand bezeichnet den Namen des Zustands, zu welchem der Pfad hinweist. Typische Zustände sind "initial" für den Initial-Zustand und "terminal" für den Endzustand (die Endzustände). Die Komponente verweist auf verschachtelte Komponenten, die Attributnummer bezeichnet wieder die gewählte Instanz. Wenn der Wert der Nummer "all" ist, entspricht der Pfad einer Familie von Pfaden zu allen Instanzen.
  • Figure 00310001
  • Ausdrücke werden an verschiedenen Orten verwendet und definiert wie folgt:
  • Figure 00310002
  • Pfade, die als Ausdrücke verwendet werden, ergeben bei Auswertung das entsprechende Element und nicht den Zustand, auf welchen der Pfad verweist. "Self" ergibt bei Auswertung das Element, welches die Instanz des Moduls ist, welches die Definition enthält, in welcher "self" verwendet wird. "Src" ergibt bei Auswertung das Element, welches den Zustand enthält, der als letzter ausgeführt wurde, wenn es in Aktionen verwendet wird, und das Element, welches die Quelle einer Transition enthält, wenn es innerhalb einer Transition verwendet wird. "Trg" ergibt bei Auswertung das Element, welches das Ziel einer Transition enthält. "Evalattr", "getfirst", "getnext" und "parent" ergeben bei Auswertung die oben beschriebenen entsprechenden Primitive-Funktionen. "Root" ergibt bei Auswertung die Wurzel des Dokuments, welches ausgeführt wird. "Apply" wird für "built" in binären und unären Operatoren wie arithmetischen Operatoren (+, –, *,...), booleschen Operatoren (and, or, not,...) und Stringoperatoren (append, concatenate, ...) verwendet. "External" wird verwendet, um externe Funktionen, die in beliebigen Programmiersprachen geschrieben wurden, aufzurufen. Schließlich wird "constant" verwendet, um konstantenartige Zahlen, d.h. boolesche Werte und Strings, zu bezeichnen.
  • In den Flussdiagrammen wird eine abstrakte Funktion evaluate(_) verwendet, um Ausdruckselemente auszuwerten.
  • Aktionen werden ausgelöst, wenn ein Zustand erreicht wird, und weisen folgende Struktur auf:
  • Figure 00320001
  • Die Aktion "setAttr" entspricht dem oben beschriebenen Primitive "setAttr". "Ifthen" wird verwendet, um bestimmte Aktionen nur unter bestimmten Bedingungen auszuführen, und "forall" wird verwendet, um eine Aktion für alle Instanzen eines bestimmten Elements in einem Dokument auszuführen. Das Konstrukt "external" wird wieder verwendet, um externe Funktionen aufzurufen.
  • In den Flussdiagrammen wird eine abstrakte Prozedur execute(_) verwendet, um Aktionselemente auszuführen.
  • Da die Definitionen unabhängig von der konkreten Wahl von Ausdruck und Aktionsgrammatik gültig sein sollten, wird die DTD gemäß 9 mit den übrigen Regeln beginnend bei Zeile 19 mit dem Element <!element src EMPTY> fertiggestellt.
  • Mit Bezugnahme auf 10 bis 16 soll die Ausführung eines bestimmten XML-Dokuments doc.xml ausführlicher erläutert werden. 10 bis 16 zeigen sechs feste Flussdiagramme F1, F2, F2, F3, F4 und F7, welche den Ausführungsprozess spezifizieren. Im Gegensatz zu den GFCs, welche im Kontext der ersten Ausführungsform beschrieben wurden, hängen diese Flussdiagramme nicht vom auszuführenden Dokument und den Roboter-Modulen ab, sondern sind für jedwedes Dokument und jedwedes Roboter-Modul fest. Jedes Flussdiagramm bezieht sich auf einen logischen Block der Ausführung eines bestimmten auszuführenden XML-Dokuments doc.xml. Die Module werden als getrennte moduleX.xml-Dateien für jeden Element-Namen X bereitgestellt. Auf die Zustände jedes Flussdiagramms Fy wird mittels [Fx.Sy] verwiesen, wobei x die Nummer des Flussdiagramms darstellt und y die Zustandsnummer innerhalb des entsprechenden Flussdiagramms darstellt.
  • Gemäß der Erfindung wird das XML-Dokument (oder in anderen Ausführungsformen eine DTD) zuerst durchlaufen, und alle Zustände und Transitionen von den Modulen werden in das XML-Dokument kopiert. In weiterer Folge wird das XML-Dokument unabhängig ausgeführt. Während des Kopierprozesses wird das Attribut "origin" jedes Zustands auf das gerade durchlaufene Element gesetzt, z.B. das Element, von welchem aus die Kopieraktion ausgelöst wurde. Die Werte des Attributs "origin" sind somit Verweise auf Elemente von doc.xml.
  • Der Initial-Zustand der Ausführung, welcher in 10 dargestellt ist, ist [F1.S1]. Der Wert der globalen Variablen cur wird auf einen Verweis auf die Wurzel des Dokuments "doc.xml" gesetzt. Dann wird die Steuerung zum Zustand [F1.S2] weitergeführt, wobei der Wert der globalen Variablen mod derart gesetzt wird, dass er ein Verweis auf das Element "module" ist, welches das Ausführungsverhalten der Wurzel beschreibt, z.B. das Modul, welches den Namen aufweist, der dem Label von cur entspricht. Dann wird die Steuerung zu dem Zustand [F2.S1] des Flussdiagramms F2 weitergeführt. Der Zweck von F2 ist, alle "state"- und "derived"-Elemente von dem Modul mod in das Element cur zu kopieren, wobei das Attribut "origin" aller "state"s und "derived" auf cur gesetzt wird. Von dem letzten Zustand [F2.S99] in F2 wird die Steuerung zu dem ersten Zustand [F3.S1] von F3 weitergeführt. Der Zweck von F3 ist, die "state"- und "derive"-Elemente der Untermodule des Moduls mod in die entsprechenden Komponenten des Elements cur zu kopieren, wobei das Attribut "origin" aller "state"- und "derived"-Elemente auf cur gesetzt wird. Von dem letzten Zustand [F3.S99] von F3 wird die Steuerung zu [F1.S3] weitergeführt, wobei cur auf cur.traverse aktualisiert wird. Dann verzweigt sich die Entscheidung [F1.D1] nach der Bedingung cur = undef. Wenn die Bedingung bei Auswertung wahr ergibt, wird der Durchlauf beendet, und die Steuerung wird zu [F5] weitergeführt, wobei andernfalls die Steuerung zu [F1.S2] zurückgeführt wird.
  • Modul F5 kann ergänzende Prozeduren enthalten, um Module, die in verschachtelten Modulen verschachtelt sind, zu verarbeiten und Sicherheitsbedingungen zu überprüfen. Diese Prozeduren, welche lediglich in besonderen Ausführungsformen verwendet werden, können mittels Standardprozessstrukturen implementiert werden. Von [F5] wird die Steuerung zu [F6] weitergeführt. Das Modul F6 wird wiederum lediglich für besondere Ausführungsformen verwendet und enthält Zustände, Transitionen und abgeleitete Attribute, welche gemäß verschiedenen Grundsätzen, beispielsweise Präferenzen hinsichtlich der Bedingungen in Transitionen und dergleichen, die zu implementieren sind, neu geordnet werden. Von [F6] wird die Steuerung zum ersten Zustand von F7, zu [F7.S1], weitergeführt.
  • Wie festgehalten wurde, ist der Zweck von F2 (11), die "state"- und "derived"-Elemente des Moduls mod in das Element cur zu kopieren und die "origin"-Attribute dieser Elemente auf cur zu setzen. Anstatt zunächst die Elemente zu kopieren und dann die Attribute zu setzen, werden die Attribute im Modul mod auf den richtigen Wert gesetzt, und daraufhin werden die "state"- und "derived"-Elemente von dem Modul mod in das Element cur kopiert. Eine globale Variable state wird verwendet, um "state"-Elemente in mod zu umspannen, und eine globale Variable derived wird verwendet, um "derived"-Elemente zu umspannen. Der erste Zustand [F2.S1] setzt die Variable state auf das erste "state"-Element in mod. Dann wird die Steuerung zu [F2.D1] weitergeführt, und von dort wird die Steuerung zu [F2.S3] weitergeführt, wenn state = undef, und andernfalls zu [F2.S4]. In [F2.S3], welcher erreicht wird, wenn state nicht gleich undef ist, wird das Attribut "origin" von state auf cur gesetzt. Von dort wird die Steuerung zu [F2.S3] weitergeführt, wobei state auf state.getNext gesetzt wird. Von dort wird die Steuerung wieder zu der Entscheidung [F2.D1] geführt. In [F2.S4], welcher erreicht wird, nachdem alle "state"-Elemente kopiert wurden, wird die globale Variable derived auf das erste "derived"-Element gesetzt. Auf dieselbe Weise wie für die "state"-Elemente werden die Entscheidung [F2.D2], welche sich bei derived=undef verzweigt, und der Zustand [F2.S6], der derived::= derived.getNext auslöst, verwendet, um über allen "derived"-Elementen einer Iteration unterzogen zu werden, und in [F2.S5] wird das Attribut "origin" auf cur gesetzt.
  • Wenn die Iteration endet, wird die Steuerung zu [F2.S7] weitergeführt, wobei die gesamte Liste von "derived"s in "cur" eingefügt wird. Dann wird in [F2.S99] die Liste von "state"-Elementen von "mod" kopiert und in "cur" eingefügt.
  • In F3 (12) werden unter Verwendung der Iterationsvariable submod alle Untermodule von mod durchlaufen. Wenn die Iteration endet, z.B. wenn die Entscheidung [F3.D1] submod bei Auswertung "undef" ergibt, wird die Steuerung an den letzten Zustand von F3, [F3.S99], weitergegeben. Andernfalls wird die Steuerung zu [F3.S2] weitergeführt, wo die Variable subcur auf die erste Komponente gesetzt wird, deren Label mit dem Label des Untermoduls submod übereinstimmt. Wenn das "number"-Attribut des Untermoduls submod "1" oder "all" ist, wird subcur richtig auf die erste Instanz gesetzt und die Steuerung von Entscheidung [F3.D2] zum ersten Zustand von F4, [F4.S1], weitergeführt. Andernfalls wird in [F3.S3] subcur auf die nächste Instanz gesetzt, und die Steuerung wird zur Entscheidung [F3.D3] weitergeführt, welche überprüft, ob subcur "undef" ist. Wenn dies nicht der Fall ist, wird angenommen, dass die zweite Instanz oder alle überprüft werden müssen, und die Steuerung wird wieder zum Zustand [F4.S1] geführt. Der Zweck von F4 ist genau derselbe wie jener von F2, wobei jedoch anstatt mod und cur, submod und subcur verwendet werden, abgesehen von dem Attribut "origin", welches auf cur gesetzt wird.
  • Vom Endzustand [F4.S99] wird die Steuerung zu der Entscheidung [F3.D4] weitergeführt. Wenn die Abzweigbedingung durch Auswertung des Attributs "number" von submod "all" ergibt, wird die Steuerung an [F3.S3] weitergeführt und durchläuft alle Instanzen mit dem richtigen Label. Wenn dieser Durchlauf angehalten wird, durch Auslösen der Entscheidung [F3.D3] auf wahr oder durch Finden in der Entscheidung [F3.D4], dass die Nummer nicht "all" war, wird das Durchlaufen aller Untermodule im Zustand [F3.S4] fortgesetzt. Dort wird submod auf die nächste Instanz von"module"-Elementen gesetzt. Von [F3.S4] wird die Steuerung wieder zur Entscheidung [F3.D1] weitergeführt, welche, wie festgehalten wurde, entweder mit dem Durchlaufen von Untermodulen fortfährt oder die Steuerung zum letzten Zustand von F3, d.h. [F3.S99], sendet.
  • Wie oben erwähnt wurde, funktioniert F4 (13) genau wie F2. Die Variablen state und derived werden verwendet, um eine Iteration über die "state"-Elemente und "derived"-Elemente des Moduls "submod" durchzuführen, wobei ihr "origin"-Attribut auf das Element "cur" gesetzt wird. Dann werden alle "state"- und "derived"-Elemente kopiert und in das Element subcur eingefügt.
  • Bei Zustand [F4.S99] werden alle "state"-Elemente und "derived"-Elemente in die entsprechenden Elemente des Dokuments doc.xml kopiert, und das Attribut "origin" wird gesetzt, derart, dass die Module nicht mehr benötigt werden. Da nur ein Attribut von "state" gesetzt werden muss und alle "transition""action"- und "derived"-Elemente unberührt sind und bleiben, wäre eine Alternative, nur den äußersten Teil der "state"-Elemente und "derived"-Elemente zu kopieren und Verweise auf die Module für den Rest zu verwenden.
  • Der erste Zustand [F7.S1] des Flussdiagramms F7, welches in 14 dargestellt ist, bezeichnet den Beginn der eigentlichen Ausführungsphase. In F7 werden die Aktionen aller Zustände, welche mit dem aktuellen Zustand "curstate" übereinstimmen, ausgelöst.
  • [F7.S1] setzt cur zurück auf die Wurzel des Dokuments doc.xml. Dann geht die Steuerung zu [F7.S2] weiter, wo die globale Variable curstate auf "initial" gesetzt wird. Der Zweck von curstate ist es, den aktuellen Zustand anzuzeigen, innerhalb des aktuellen Elements cur. In [F7.S3], [F7.D1] und [F7.S9] wird die variable state einer Iteration über alle "state"-Elemente des aktuellen Elements cur unterzogen. [F7.S3] initialisierte die Iteration, [F7.D1] ist das Beendigungskriterium, von dem die Steuerung bei Beendigung zu [F8.S1] weitergeführt wird, und [F7.S9] ist der eigentliche Iterator, welcher state auf die nächste Instanz von "state"-Elementen setzt. Innerhalb der Iteration überprüft die Entscheidung [F7.D2], ob das Attribut "name" von state mit dem aktuellen Zustand curstate übereinstimmt. Wenn dies der Fall ist, geht es als nächstes weiter zu [F7.S4], wobei die Variable cur auf den Wert des Attributs "origin" von state gesetzt wird. Der Zweck dieser Aktualisierung ist es, die Aktionen in der richtigen Umgebung auszuwerten. In [F7.S5], [F7.D3] und [F7.S7] wird die Variable action einer Iteration über alle Aktionen innerhalb von state unterzogen, und alle diese werden in [F7.S6] ausgeführt. Wenn diese Iteration endet, wird die Steuerung zu [F7.S8] weitergeführt, wo der Wert von cur auf seinen ursprünglichen Wert rückgesetzt wird. Von dort erfolgt ein erneuter Eintritt in die Iteration über Zustände, was nach der Beendigung zu [F8.S1] führt.
  • Schließlich werden in F8, welches in 15 dargestellt ist, die Transitionen ausgelöst, welche das aktuelle Element cur und den aktuellen Zustand curstate aktualisieren. Die Auswertung der Transitionsbedingungen hängt von dem Ursprung ihrer Definition, dem Quellelement src der Transition und dem Zielelement trg der Transition ab. Im Element "expression", welches die Bedingung bezeichnet, kann auf diese drei Elemente als <self />, <src/> bzw. <trg/> zugegriffen werden. Im Flussdiagramm F8 finden zwei verschachtelte Iterationen über die "state"-Elemente und über deren "transition"-Elemente statt. Der erste Zustand [F8.S1] setzt src auf das aktuelle Element cur. Dann unterziehen [F8.S2], [F8.D1] und [F8.S9] die Variable "state" einer Iteration über alle Zustände im aktuellen Element cur. Wenn die Iteration endet, wird die Steuerung an [F7.S3] zurückgegeben, wobei wieder dieselben Aktionen ausgeführt werden. Andernfalls überprüft [F8.D2], ob das Attribut "name" von state mit dem aktuellen Zustand curstate übereinstimmt. Wenn dies der Fall ist, erfolgt ein Einstieg in [F8.S4], und cur wird auf den Wert des Attributs "origin" gesetzt. Dann werden [F8.S5], [F8.D3], [F8.S8] verwendet, um die Variable trans einer Iteration über alle Transitionen innerhalb von state zu unterziehen. Innerhalb der Iteration setzt [F8.S6] trg auf das Resultat des Auswertens des Pfads. Dann überprüft [F8.D4], ob der Ausdruck von trans bei Auswertung wahr ergibt. Es muss festgehalten werden, dass für diese Auswertung die richtigen Einstellungen von cur, src und trg benötigt werden. Wenn das Ergebnis der Auswertung wahr ist, wird cur auf trg gesetzt, und curstate wird auf das "state"-Attribut der Pfad-Komponente von trans gesetzt. Dann wird die Steuerung an [F7.S3] weitergegeben, um die Aktionen des neuen aktuellen Elements und Zustands auszuführen.
  • In 16, 17 und 18 werden Module des Abfragesprachenbeispielsgemäß 1 ff gezeigt. Diese Module sind in Bezug auf die DTD, welche in 11 angegeben ist, gültig. Die Ausführung des Beispiel-XML-Dokuments kann mittels des Prozesses, der in 12 ff beschrieben wird, durchgeführt werden. Die Module können automatisch aus einer grafischen Eingabe gemäß den oben beschriebenen grafischen Flussdiagrammen generiert werden. Andererseits könnte ihre grafische Darstellung aus der hier angegebenen Textform generiert werden.
  • Bezugnehmend auf 19a19b wird die Implementierung einer XML-Roboterspezifikation, welche das Ausführungsverhalten von XML-Dokumenten, wie oben erläutert wurde, angibt, ausführlicher beschrieben. In Anbetracht einer XML-Roboterspezifikation m0, die in einer XML-Roboterspezifikationssprache M geschrieben ist, beispielsweise in der oben beschriebenen visuellen/textlichen Abfragesprache, und eines XML-Dokuments d, welches in Bezug auf die Dokumenttypdefinition von m0, und zwar DTD0, gültig ist, gibt die Ausführungsspezifikation alle Informationen darüber an, was ein abstrakter Prozess m0Exec(d) tun muss, um d auszuführen. Um den abstrakten Prozess m0Exec(d) zu implementieren, ist ein Programm erforderlich, welches auf bestehenden Rechnern ausgeführt werden kann, z.B. ein Programm, welches in einer Programmiersprache wie C oder Java geschrieben ist. Es gibt vier grundlegende Möglichkeiten, das Programm zu implementieren.
  • In 19a19d sind Prozesse als Kästchen visualisiert, Dokument sind auf die übliche Weise visualisiert, d.h. ein Kästchen mit einer geschwungenen oberen Seite, und ein ausführbares Dokument, z.B. ein Programm, ist als Kombination aus einem Dokument und einem Prozess, z.B. der Ausführung des Programms, visualisiert. Jeder Prozess kann eine Eingabe in Form von Dokumenten, eine Ausgabe in Form von Dokumenten aufweisen, und er kann einen anderen Prozess starten. Konkrete Prozesse, welche auf einer realen Maschine ausgeführt. werden können, sind als Kästchen mit durchgezogenen Linien dargestellt, und abstrakte Prozesse, beispielsweise der Prozess m0Exec(d), sind als Kästchen mit gestrichelten Linien dargestellt. Die beschriebenen Möglichkeiten des Implementierens von XML-Robotern sind verschiedene Kombinationen aus Compiler- und Interpretermethoden. Eine beliebige der beiden Methoden kann für den Metaformalismus M und den Formalismus DTD0 verwendet werden. Somit gibt es für gewöhnlich vier Kombinationen, einen Compiler gefolgt von einem Interpreter (19a), einen Compiler gefolgt von einem Compiler (19b), einen Interpreter gefolgt von einem Interpreter (19c) und einen Interpreter gefolgt von einem Compiler (19d)
  • 19a zeigt eine Implementierung durch Generieren eines Interpreters IntDTD0 aus der XML-Spezifikation m0. Der Interpreter IntDTD0 verwendet als Eingabe ein XML-Dokument d und überprüft, ob es in Bezug auf DTD0 gültig ist. Daraufhin startet er einen Prozess, welcher ein derartiges Dokument d ausführt, derart, dass der Prozess mit dem oben vorgestellten abstrakten Prozess m0Exec(d) äquivalent ist. Die Implementierung wird durch ein ausführbares Dokument IG angegeben, dessen Ausführung als Eingabe eine XML-Roboterausführungsspezifikation m0 verwendet und als Ausgabe ein ausführbares Dokument IntDTD0, d.h. den Interpreter, generiert.
  • 19b visualisiert eine nächste Möglichkeit durch Bereitstellen eines Compilergenerators, der durch ein ausführbares Dokument CG angegeben wird, welches einen Compiler CompDTD0 aus der XML-Spezifikation m0 generiert. Der Compiler CompDTD0 wandelt ein Dokument d, das als Eingabe empfangen wurde, in ein ausführbares Dokument d' um, dessen Ausführung mit dem abstrakten Prozess m0Exec(d) äquivalent sein muss.
  • 19c zeigt einen Interpreter IntMtoInt der Spezifikationssprache M, welcher einen Interpretationsprozess von m0 startet. Der Interpreter IntMtoInt verwendet als Eingabe eine XML-Roboterspezifikation m0 und startet einen Prozess IntDTD0, der als Eingabe ein XML-Dokument d verwendet. Der Prozess IntDTD0 startet nun einen nachfolgenden Prozess, der das Dokument d ausführt, wobei der Prozess mit dem abstrakten Prozess m0Exec(d) äquivalent sein muss.
  • Als eine letzte Möglichkeit zeigt 19d einen Interpreter IntMtoComp der Spezifikationssprache M. Der Interpreter IntMtoComp verwendet eine XML-Roboterspezifikation m0 als Eingabe, startet jedoch im Gegensatz zum zuvor beschriebenen Interpreter IntMtoInt einen Compilerprozess CompDTD0, der als Eingabe ein XML-Dokument d verwendet und als Ausgabe ein ausführbares Dokument d' generiert, dessen Ausführung wieder mit der Ausführung des abstrakten Prozesses m0Exec(d) äquivalent sein muss.
  • Es kann einfach erkannt werden, dass jede der oben genannten Möglichkeiten spezifische Vor- und Nachteile aufweist. Wie bekannt ist, ist der Vorteil des Verwendens von Interpretertechnologie die unmittelbare Verfügbarkeit der Ausführung, wobei die Vorteile der komplexeren Compilertechnologie sowohl eine bessere Leistung als auch die Verfügbarkeit der generierten ausführbaren Dokumente sind, welche getrennt wiederverwendet werden können, unabhängig von der XML-Roboterspezifikation m0.
  • In 20 wird eine bevorzugte Ausführungsform eines XML-Roboters auf Webbasis dargestellt. Ein Server 21, für gewöhnlich ein leistungsstarker Web-Server, ist mit einer Datenbank 22 und einer oder mehreren Funktionalitätsbibliotheken 23 verbunden. Mittels Netzverbindungen, insbesondere über das Internet, können ein oder mehrere Clients 25.1, 25.2, die sich für gewöhnlich eines Browsers bedienen, der auf einem abgesetzten System läuft, auf den Server 21 zugreifen. Die Kapazitäten dieser Clients 25.1, 25.2 sind mehr oder weniger eingeschränkt und können für gewöhnlich für den Betrieb eingeschränkter abstrakter Maschinen wie der Java Virtual Machine dienen.
  • Der Server 21 stellt den Dienst bereit, um die XML-Dokumente gemäß einer XML-Roboterspezifikation, wie oben beschrieben wurde, auszuführen. Die Aktionen in der XML-Roboterspezifikation sind auf dem Server 21 auszuführende Aktionen, z.B. Zugriff auf die Datenbank 22 des Servers oder Aufrufe der Funktionalitätsbibliotheken 23 des Servers. Darüber hinaus sind Aktionen und möglicherweise zusätzliche Geräte 27 für das Veröffentlichen von Resultaten über E-Mail, Webseiten, WAP, SMS und dergleichen, das Verwalten von Zugriffsrechten und das Verwalten der Architektur der zugrundeliegenden Datenbanken und Softwaresysteme verfügbar. Die XML-Roboterspezifikation kann nur auf dem Server 21 ausgeführt werden, sie kann jedoch als Dokumentation des Dienstes, der dem Client bereitgestellt wird, dienen.
  • Die Situation ist mit einem Application-Service-Provider-Modell (ASP-Modell) vergleichbar, wo Anwendungen auf einem Server laufen und alle Arten von Clients darauf zugreifen können. Die vorliegende Erfindung weist ebenfalls den Vorteil von ASP auf, dass alle Berechnungen auf dem Server erfolgen, und deshalb können die Clients äußerst kleine Vorrichtungen wie Internet-Vorrichtungen sein. Weiterhin bietet die Erfindung den Vorteil, dass eine endliche XML-Roboterspezifikation unendlich viele verschiedene XML-Dokumente ausführen kann, welche mit der entsprechenden DTD übereinstimmen.
  • Die Anwendungen der Execution-Service-Provider-Lösung reichen von Eingabe/Steuerung bestehender Anwendungen zur Spezifikation und sogar zur Programmierung von neuen Anwendungen. Die Eingabe/Steuerungs-Anwendungenbedienen sich der XML-Dokumente, um eine Anwendung zu steuern. Die XML-Roboterspezifikation würde einfach die Dokumente in interaktive Eingabe/Steuerungs-Sequenzen für die zu steuernde Anwendung übersetzen. Im Fall der Spezifikation/Programmierung neuer Anwendungen entsprechen die XML-Dokumente Syntaxbäumen von Programmen und die XML-Roboterspezifikation gibt das Ausführungsverhalten an. Beispielsweise würde es eine XML-Roboterspezifikation mit einer DTD, welche Syntaxbäume für die Programmiersprache C darstellt, und wobei der XML-Roboter deren Ausführungsverhalten angibt, ermöglichen, beliebige C-Programme zu dem Server zu senden und dort ausführen zu lassen.
  • Im Gegensatz zu der zuvor beschriebenen Ausführungsform mit einem Execution Service Provider kann eine andere bevorzugte Ausführungsform LangLets (kleine XML-Roboterspezifikation)bzw. Mobile Languages bereitstellen. In diesem Fall stellt der Server 21 Dienste für die Clients 25.1, 25.2 bereit, indem er zunächst eine XML-Roboterspezifikation und dann die XML-Dokumente, welche gemäß der Spezifikation ausgeführt werden sollten, sendet. Diese Ausführungsform benötigt Clients 25.1, 25.2, die in der Lage sind, einen Interpreter/Compiler aus der XML-Roboterspezifikation zu generieren, um die XML-Dokumente auszuführen. Die Aktionen der XML-Roboterspezifikation werden auf den Clients 25.1, 25.2 dementsprechend ausgeführt. Diese Lösung kann in einem weiteren Sinne mit dem Senden von Java-Code an einen Client, welcher in weiterer Folge diesen Code ausführt, verglichen werden. Allerdings ist das durch eine XML-Roboterspezifikation angegebene Ausführungsverhalten weit einfacher und weit weniger ausdrucksstark als komplettes Java. Eine Sprache wie Java kann jedoch verwendet werden, um die Aktionen der XML-Roboterspezifikation zu programmieren. Das Ausführungsverhalten aller XML-Dokumente (unendlich viele), die gemäß einer derartigen XML-Roboterspezifikation ausgeführt werden, wird dann auf die endliche Anzahl fester (jedoch parameterisierter) Java-Aktionen in der XML-Roboterspezifikation beschränkt.
  • Ein bedeutender Vorteil der vorliegenden Erfindung ist, dass Sicherheitseigenschaften einer endlichen XML-Roboterspezifikation untersucht werden können. Diese Eigenschaften können dann gewährleistet bzw. überprüft werden, für eine unendliche Anzahl verschiedener XML-Dokumente, die auf den Clients 25.1, 25.2 ausgeführt werden sollen. Wenn beispielsweise eine bestimmte kritische Sicherheitsaktion nicht in den Aktionen der XML-Roboterspezifikation enthalten ist, kann gewährleistet werden (direkt auf der Grundlage der Definitionen), dass diese Aktion nicht für irgendein XML-Dokument ausgeführt wird, welches gemäß dieser XML-Roboterspezifikation ausgeführt wird. Oder es kann gewährleistet werden, dass, wenn eine andere kritische Sicherheitsaktion nur durch einen Zustand ausgelöst wird, der durch eine bestimmte Bedingung geschützt wird, diese Aktion nur ausgelöst wird, wenn diese Bedingung erfüllt ist.
  • Auch hier kann es hilfreich sein, an den mobilen Code zu denken, wobei Source-Code über das Netz gesendet wird. Allerdings wird im Gegensatz dazu hier zunächst eine XML-Roboterspezifikation gesendet, welche das Ausführungsverhalten der mobilen Sprache/DTD angibt, und dann werden die Programme/XML-Dokumente übertragen. Somit wird eine mobile Sprache über ein bestimmtes Netz bereitgestellt. Der Vorteil von mobilen Sprachen gegenüber mobilem Code ist, dass sich wiederholende Berechnungen auf generische Weise in die XML-Roboterspezifikation eingebettet sind und die XML-Dokumente, welche die eigentlichen Instanzen der Berechnungen beschreiben, weniger komplex sind.
  • Eine derartige Verwendung des erfindungsgemäßen XML-Roboters ermöglicht die Definition einer neuen Sprache und Code, der in der Sprache geschrieben wurde, auszuführen, nachdem ein entsprechender Compiler und/oder Interpreter generiert wurde. Ferner ist es möglich, Editoren, Debugger und Analyse-Tools zu erstellen. Die beschriebenen Daten- und Code-Synergien ermöglichen es, die Ausführung oder andere Verarbeitungen eines gültigen XML-Dokuments ohne Schreiben eines eigenen Programms, welches den Strukturbaum eines derartigen Dokuments explizit parst und analysiert, direkt zu definieren.
  • Die Erfindung sieht eine Vorrichtung 25.1, 25.2, insbesondere Internet-Vorrichtungen, vor, welche innerhalb einer Netzumgebung, insbesondere dem Internet, verwendet werden kann und Mittel zum Empfangen von Daten von und Senden von Daten zu einem abgesetzten Rechner umfasst. Die Vorrichtung sieht Mittel zum Speichern von und Zugreifen auf Daten (XML-Dokument), die von dem abgesetzten Rechner gesendet werden, vor. Die Vorrichtung umfasst vorzugsweise ein Mittel, welches derartige Daten, die von dem abgesetzten Rechner empfangen wurden, überprüfen und gegebenenfalls validieren kann, wenn es sich bei derartigen Daten um eine gültige und/oder zulässige XML-Roboterspezifikation handelt. Die Vorrichtung umfasst weiterhin ein Mittel, welches die XML-Roboterspezifikationen mit einem XML-Dokument integrieren kann. Das XML-Dokument wird dann durch die Vorrichtung, vorzugsweise durch eine Verarbeitungseinheit, welche die Befehle der XML-Dokumente ausführen kann, ausgeführt. Einschlägig versierte Fachleute werden unschwer erkennen, dass das durch diese Vorrichtung umfasste Mittel auf derartige Weise integriert sein kann, dass z.B. die Verarbeitungseinheit für die Ausführung des XML-Dokuments eine Funktionalität für den Sende-/Empfangsbetrieb dieser Vorrichtung bereitstellen kann. Ferner umfasst die Vorrichtung für gewöhnlich eine Benutzerschnittstelle, welche, so dies gewünscht wird, ein Mittel zum Animieren der Ausführung und zur Analyse von XML-Dokumenten oder XML-Roboterspezifikationen bereitstellen kann. Allerdings kann sie nur als Servicestation innerhalb eines Netzes dienen.
  • Die Erfindung stellt weiterhin eine Vorrichtung bereit, welche ein Mittel zum grafischen Anzeigen von XML-Roboterspezifikationen, z.B. wie mit Bezugnahme auf 3 ff. beschrieben wurde, in einer fortgeschrittenen visuellen integrierten Entwicklungsumgebung umfasst. Gemäß der oben genannten Spezifikation werden diese grafischen Darstellungen verwendet, um XML-Dokumente zu generieren, welche die XML-Roboterspezifikationen darstellen.
  • Ferner ermöglicht es die Erfindung, die verteilte Ausführung von XML-Dokumenten vorzusehen. Mehrere XML-Roboter werden dann verwendet, um eine Berechnung von XML-Dokumenten auf Grund der Tatsache, dass die Struktur der Dokumente zugleich die Struktur der Anwendung ist, welche diese verarbeitet, zu verteilen. Demzufolge können Teile eines XML-Dokuments einfach auf verschiedenen Instanzen des XML-Roboters, die an verschiedenen Orten angeordnet sein können, ausgeführt werden. Gleichermaßen können spezielle Anwendungen voraussetzen, dass ein Teil des Dokuments auf der Server-Seite und ein Teil des Dokuments auf der Client-Seite ausgeführt wird.

Claims (10)

  1. Verfahren zur direkten Ausführung von XML-Dokumenten, umfassend die folgenden Schritte: Definieren des lokalen Verhaltens und Prozesses für jedes Element eines XML-Dokuments; Integrieren von ausführbaren Befehlen in eine Dokumenttypdefinition (DTD), ein XML-Dokument oder ihre Darstellung als Strukturbaum und Speichern von Zwischenzuständen durch dynamisches Schaffen und Neudefinieren von Elementattributen.
  2. Verfahren nach Anspruch 1, welches ferner die folgende Schritten umfasst: a) Integrieren von ausführbaren Befehlen indem für jede XML-Elementdefinition und ihre Instanzen eine zusammengesetzte Aktion definiert wird, deren Bestandteile sowohl einfache, ausführbare Aktionen als auch Verweise auf Aktionen sind, welche für eine der Komponenten des Elements oder irgend ein anderes Element definiert ist; b) Ausführen eines XML-Dokuments durch Ausführen der Aktion, welche für seine Wurzel definiert ist.
  3. Verfahren nach einen der vorhergehenden Ansprüche, welches ferner den folgenden Schritt umfasst: Definieren der Zusammensetzung der Aktion für wenigstens eine XML-Elementdefinition oder eine XML-Elementinstanz durch graphische Flussdiagramme, welche einen sequenziellen oder gleichzeitigen Steuerungsablauf und/oder Datenfluss darstellen.
  4. Verfahren nach einen der vorhergehenden Ansprüche, welches ferner den folgenden Schritt umfasst: Definieren der Zusammensetzung der Aktion für wenigstens eine XML-Elementdefinition oder (ORIGINAL: ein Objekt davon) eine XML-Elementinstanz in Textform, welche einen sequenziellen oder gleichzeitigen Steuerungsablauf und/oder Datenfluss darstellt.
  5. Verfahren nach einem der vorhergehenden Ansprüche, welches eine Darstellung der Systemzustände in Form von ndimensionalen Datenwürfeln und eine offene Schnittstelle zum System durch Lesbar- und Schreibbarmachen der ndimensionalen Würfel für andere Programmier- und/oder Datenbanksysteme aufweist und ferner den Schritt des Zugänglichmachens von Datenstrukturen und Funktionalitäten anderer Programmier- und Datenbanksysteme von innerhalb des beschriebenen Systems umfasst.
  6. Verfahren nach einem der vorhergehenden Ansprüche, welches Module umfasst, die den Prozess für jedes Element definieren.
  7. System zur Verwendung mit dem Verfahren nach einem der vorhergehenden Ansprüche, umfassend einen Server, welcher für wenigstens einen Client Dienste durch Ausführen wenigstens von Teilen eines XML-Dokuments gemäß einer XML-Roboterspezifikation, die vom Client an den Server gesendet wird, bereitstellt, oder einen Server, welcher für wenigstens einen Client Dienste durch Senden einer XML-Roboterspezifikation und eines XML-Dokuments an den Client bereitstellt, so dass der Dienst durch Ausführen wenigstens eines Teils des gesendeten Dokuments auf dem Client gemäß der gesendeten XML-Roboterspezifikation bereitgestellt wird.
  8. Datenverarbeitungssystem, welches Mittel umfasst, die eingesetzt werden, um jeden der Schritte eines der vorhergehenden Ansprüche 1 bis 5 durchzuführen.
  9. Gerät zur Verwendung mit dem Verfahren nach einem der vorhergehenden Ansprüche 1 bis 6, umfassend Mittel zur grafischen Anzeige von XML-Roboterspezifikationen innerhalb einer fortgeschrittenen visuellen integrierten Entwicklungsumgebung und Mittel zum Erzeugen von XML-Dokumenten, welche die XML-Roboterspezifikationen darstellen.
  10. Gerät nach Anspruch 8 oder 9, welches ferner Mittel zum Prüfen, Bewerten oder Animieren von XML-Dokumenten oder XML-Roboterspezifikationen umfasst.
DE60011479T 2000-08-02 2000-08-02 Xml-roboter Expired - Lifetime DE60011479T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2000/001087 WO2002010975A1 (en) 2000-08-02 2000-08-02 Xml-robot

Publications (2)

Publication Number Publication Date
DE60011479D1 DE60011479D1 (de) 2004-07-15
DE60011479T2 true DE60011479T2 (de) 2005-06-09

Family

ID=11003957

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60011479T Expired - Lifetime DE60011479T2 (de) 2000-08-02 2000-08-02 Xml-roboter

Country Status (10)

Country Link
US (1) US7340728B2 (de)
EP (1) EP1307828B1 (de)
JP (1) JP2004505379A (de)
CN (1) CN1195278C (de)
AT (1) ATE268921T1 (de)
AU (1) AU2000260103A1 (de)
CA (1) CA2417752A1 (de)
DE (1) DE60011479T2 (de)
HK (1) HK1060410A1 (de)
WO (1) WO2002010975A1 (de)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPQ950400A0 (en) * 2000-08-17 2000-09-07 Peruch, Stephen Sebastian Computer implemented system and method of transforming a source file into transformed file using a set of trigger instructions
US7225467B2 (en) * 2000-11-15 2007-05-29 Lockheed Martin Corporation Active intrusion resistant environment of layered object and compartment keys (airelock)
US7213265B2 (en) * 2000-11-15 2007-05-01 Lockheed Martin Corporation Real time active network compartmentalization
US7107582B2 (en) * 2001-11-15 2006-09-12 International Business Machines Corporation System and method for source-driven form-independent dynamic content resolution
US7111062B2 (en) * 2001-12-06 2006-09-19 International Business Machines Corporation Apparatus and method of generating an XML document to represent network protocol packet exchanges
US20030110279A1 (en) * 2001-12-06 2003-06-12 International Business Machines Corporation Apparatus and method of generating an XML schema to validate an XML document used to describe network protocol packet exchanges
US7769876B2 (en) * 2001-12-06 2010-08-03 International Business Machines Corporation Apparatus and method of using XML documents to perform network protocol simulation
CA2484355A1 (en) * 2002-05-02 2003-11-13 Sarvega, Inc. System and method for transformation of xml documents using stylesheets
US20080313282A1 (en) 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
US20070061884A1 (en) * 2002-10-29 2007-03-15 Dapp Michael C Intrusion detection accelerator
US20040083466A1 (en) * 2002-10-29 2004-04-29 Dapp Michael C. Hardware parser accelerator
US7080094B2 (en) * 2002-10-29 2006-07-18 Lockheed Martin Corporation Hardware accelerated validating parser
US7146643B2 (en) * 2002-10-29 2006-12-05 Lockheed Martin Corporation Intrusion detection accelerator
CN100470480C (zh) * 2003-02-28 2009-03-18 洛克希德马丁公司 分析程序加速器装置以及更新其的方法
US20040210914A1 (en) * 2003-04-17 2004-10-21 Kinner Jason A. Method of generating a remote communication interface for resource description framework (RDF) based information
US20040210881A1 (en) * 2003-04-17 2004-10-21 Richard Friedman Method of generating an application program interface for resource description framwork (RDF) based information
US7873636B2 (en) 2003-05-01 2011-01-18 International Business Machines Corporation Method, system and program product for matching a network document with a set of filters
US7194733B2 (en) * 2003-06-11 2007-03-20 Microsoft Corporation Transformation of an asynchronous transactional messaging language into a web services compatible language
US7225411B1 (en) * 2003-06-30 2007-05-29 Tibco Software Inc. Efficient transformation of information between a source schema and a target schema
US7792866B2 (en) * 2003-08-25 2010-09-07 International Business Machines Corporation Method and system for querying structured documents stored in their native format in a database
US8150818B2 (en) * 2003-08-25 2012-04-03 International Business Machines Corporation Method and system for storing structured documents in their native format in a database
US7519574B2 (en) * 2003-08-25 2009-04-14 International Business Machines Corporation Associating information related to components in structured documents stored in their native format in a database
US8250093B2 (en) 2003-08-25 2012-08-21 International Business Machines Corporation Method and system for utilizing a cache for path-level access control to structured documents stored in a database
US8775468B2 (en) * 2003-08-29 2014-07-08 International Business Machines Corporation Method and system for providing path-level access control for structured documents stored in a database
CN100442278C (zh) * 2003-09-18 2008-12-10 富士通株式会社 网页信息块提取方法和装置
CN1314225C (zh) * 2003-10-24 2007-05-02 中兴通讯股份有限公司 一种基于xml文档实现开放电信业务的方法
US7454469B2 (en) * 2003-12-22 2008-11-18 International Business Machines Corporation Method and system for instant messaging Bots specification using state transition methodology and XML
EP1594279A1 (de) * 2004-05-07 2005-11-09 Hewlett-Packard Development Company, L.P. Zugangskontrolle in einer world-wide-Anwendung mittels eines Ereignisfilters
EP1594060A1 (de) * 2004-05-07 2005-11-09 Hewlett-Packard Development Company, L.P. Webanwendung zur Unterstützung der Verarbeitung von Transaktionen
KR100607141B1 (ko) * 2004-05-12 2006-08-01 한국생산기술연구원 개방형 분산처리구조의 로봇 제어 시스템
US20070006130A1 (en) * 2005-06-02 2007-01-04 Arnold Stamler Model oriented method of automatically detecting alterations in the design of a software system
US7617448B2 (en) * 2005-09-06 2009-11-10 Cisco Technology, Inc. Method and system for validation of structured documents
WO2007028226A1 (en) * 2005-09-09 2007-03-15 Ibm Canada Limited - Ibm Canada Limitee Method and system for state machine translation
US7676488B2 (en) * 2005-10-31 2010-03-09 Sap Ag Conditional formatted reporting using syntax checking
US9460064B2 (en) * 2006-05-18 2016-10-04 Oracle International Corporation Efficient piece-wise updates of binary encoded XML data
US7657434B2 (en) * 2006-05-30 2010-02-02 Motorola, Inc. Frame goals for dialog system
US7797672B2 (en) * 2006-05-30 2010-09-14 Motorola, Inc. Statechart generation using frames
US7505951B2 (en) * 2006-05-30 2009-03-17 Motorola, Inc. Hierarchical state machine generation for interaction management using goal specifications
US20070292833A1 (en) * 2006-06-02 2007-12-20 International Business Machines Corporation System and Method for Creating, Executing and Searching through a form of Active Web-Based Content
US7991799B2 (en) * 2006-06-05 2011-08-02 International Business Machines Corporation Schema specific parser generation
US7882429B2 (en) * 2006-06-05 2011-02-01 International Business Machines Corporation High-level virtual machine for fast XML parsing and validation
ITRM20060474A1 (it) 2006-09-08 2008-03-09 Univ Cattolica Sacro Cuore Giuda neurale
US8578350B2 (en) * 2006-11-30 2013-11-05 Ncr Corporation System and method for interpreting a specification language file to implement a business system
US20080147364A1 (en) * 2006-12-15 2008-06-19 Motorola, Inc. Method and apparatus for generating harel statecharts using forms specifications
ITRM20070161A1 (it) * 2007-03-27 2008-09-28 Uni Del Salento Metodo e formalismo per inviare istruzioni a database distribuiti realizzato mediante programma per computer
US8504913B2 (en) * 2007-06-08 2013-08-06 Apple Inc. Client-side components
US7680832B1 (en) 2007-06-29 2010-03-16 Emc Corporation Techniques for managing configuration information among different physical devices
US10007739B1 (en) * 2007-07-03 2018-06-26 Valassis Direct Mail, Inc. Address database reconciliation
US8291310B2 (en) * 2007-08-29 2012-10-16 Oracle International Corporation Delta-saving in XML-based documents
KR20100068473A (ko) * 2007-09-28 2010-06-23 엑세리온 악티에볼라그 네트워크 오퍼레이팅 시스템
US7831540B2 (en) * 2007-10-25 2010-11-09 Oracle International Corporation Efficient update of binary XML content in a database system
US8627299B2 (en) * 2008-02-29 2014-01-07 International Business Machines Corporation Virtual machine and programming language for event processing
US8365149B2 (en) * 2008-02-29 2013-01-29 International Business Machines Corporation Debugger for a declarative event-driven programming model
US8397216B2 (en) * 2008-02-29 2013-03-12 International Business Machines Corporation Compiler for a declarative event-driven programming model
US8341608B2 (en) * 2008-11-13 2012-12-25 Visicom Media, Inc. Cross-browser toolbar and method thereof for facilitating cross-browser interoperability
US8863101B2 (en) 2008-12-10 2014-10-14 International Business Machines Corporation Compiler generator
US8630997B1 (en) * 2009-03-05 2014-01-14 Cisco Technology, Inc. Streaming event procesing
US8332811B2 (en) 2009-04-30 2012-12-11 United Parcel Service Of America, Inc. Systems and methods for generating source code for workflow platform
US8751284B2 (en) 2009-04-30 2014-06-10 United Parcel Service Of America, Inc. Systems and methods for a real-time workflow platform using Petri net model mappings
US8255372B2 (en) 2010-01-18 2012-08-28 Oracle International Corporation Efficient validation of binary XML data
US20110246962A1 (en) * 2010-04-05 2011-10-06 Microsoft Corporation State machine expressions in database operators
US10756759B2 (en) 2011-09-02 2020-08-25 Oracle International Corporation Column domain dictionary compression
US10013266B2 (en) * 2012-07-12 2018-07-03 TRACLabs, Inc. System and method for executing operations specified in a procedure language
US8812523B2 (en) 2012-09-28 2014-08-19 Oracle International Corporation Predicate result cache
US8863099B2 (en) * 2012-11-05 2014-10-14 International Business Machines Corporation Compilation and placement of instructions in a memory system
US8914778B2 (en) 2012-11-05 2014-12-16 International Business Machines Corporation Data placement for execution of an executable
US9785456B2 (en) * 2014-04-22 2017-10-10 Oracle International Corporation Metadata-driven dynamic specialization
CN105808597A (zh) * 2014-12-31 2016-07-27 北京航天测控技术有限公司 一种工艺流程数据呈现方法及装置
US9733905B1 (en) * 2016-03-21 2017-08-15 International Business Machines Corporation Embedded location awareness in UML modeling for mobile and IoT development
CN111708525B (zh) * 2020-06-24 2021-07-30 华中科技大学 一种基于xml工业机器人图形化编程系统解释器
CN115935012B (zh) * 2023-02-21 2023-06-23 云筑信息科技(成都)有限公司 一种基于xml的流程可视化标记语言的业务处理方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370552B1 (en) * 1997-05-14 2002-04-09 Citrix Systems, Inc. Apparatus and method for displaying application output in an HTML document
US5835712A (en) * 1996-05-03 1998-11-10 Webmate Technologies, Inc. Client-server system using embedded hypertext tags for application and database development
US6188401B1 (en) * 1998-03-25 2001-02-13 Microsoft Corporation Script-based user interface implementation defining components using a text markup language
US6173316B1 (en) * 1998-04-08 2001-01-09 Geoworks Corporation Wireless communication device with markup language based man-machine interface
US6725425B1 (en) * 1998-12-08 2004-04-20 Yodlee.Com Method and apparatus for retrieving information from semi-structured, web-based data sources
US20030187925A1 (en) * 1998-12-08 2003-10-02 Inala Suman Kumar Software engine for enabling proxy chat-room interaction
US6505343B1 (en) * 1998-12-31 2003-01-07 Intel Corporation Document/view application development architecture applied to ActiveX technology for web based application delivery
US6901431B1 (en) * 1999-09-03 2005-05-31 Cisco Technology, Inc. Application server providing personalized voice enabled web application services using extensible markup language documents
US6671854B1 (en) * 1999-11-05 2003-12-30 International Business Machines Corporation Dynamic web object row count in hyper text markup language
US20040034833A1 (en) * 1999-11-12 2004-02-19 Panagiotis Kougiouris Dynamic interaction manager for markup language graphical user interface
US6964034B1 (en) * 2000-04-20 2005-11-08 International Business Machines Corporation Application development server and a mechanism for providing different views into the same constructs within a strongly encapsulated environment

Also Published As

Publication number Publication date
EP1307828B1 (de) 2004-06-09
JP2004505379A (ja) 2004-02-19
US7340728B2 (en) 2008-03-04
CA2417752A1 (en) 2002-02-07
ATE268921T1 (de) 2004-06-15
EP1307828A1 (de) 2003-05-07
WO2002010975A1 (en) 2002-02-07
DE60011479D1 (de) 2004-07-15
HK1060410A1 (en) 2004-08-06
CN1195278C (zh) 2005-03-30
AU2000260103A1 (en) 2002-02-13
CN1454357A (zh) 2003-11-05
US20020111965A1 (en) 2002-08-15

Similar Documents

Publication Publication Date Title
DE60011479T2 (de) Xml-roboter
DE10121790B4 (de) Softwarekonfigurationsverfahren zur Verwendung in einem Computersystem
DE60126016T2 (de) Serverseitige Kontrollobjekte zur Verarbeitung von kundenseitigen Benutzerschnittstellenelementen
DE60111376T2 (de) System und verfahren zur dokumentverarbeitung
DE69727381T2 (de) Verfahren zum transportieren von in einer schnittstellendefinitionssprache definierten datenstrukturen zwischen heterogenen systemen
EP0432802A2 (de) Verfahren für die automatische Syntaxanalyse (Parsen) des Textes von Computer-Programmen in Kompilierern
DE69631278T2 (de) Entwurfssystem und -verfahren zum kombinierten Entwurf von Hardware und Software
WO2015185328A1 (de) Computerimplementiertes verfahren und signalfolge für ein programm zur wiederverwendung von ausführbaren softwarekonfigurationen für softwaresysteme sowie rechneranlage und ein computerprogramm mit programmcode zur durchführung des verfahrens
DE69907714T2 (de) Komponentbasiertes quellcodegeneratorverfahren
DE102021116315A1 (de) Verfahren zum Zusammenführen von Architekturinformationen
DE112009001892T5 (de) Datensatz basierte Codestruktur
DE69829854T2 (de) Verfahren und Gerät zur Erzeugung virtueller Szenen
EP1202166B1 (de) System zur Verifikation von Software-Anwendungsmodellen in Ketten von Software-Entwurfswerkzeugen
DE102019008598A1 (de) Identifikation und Visualisierung von Assoziationen zwischen Code, der von einem Modell generiert ist, und Quellen, welche die Codegeneration beeinflussen
DE4310615C2 (de) Entwurf elektrischer Vorrichtungen mit mehreren Entwurfswerkzeugen, die zumindest teilweise untereinander inkompatibel sind
EP1343078B1 (de) System zur Modellierung und Generierung von Softwaregenerierungssystemen
DE19907328C2 (de) Verfahren und System zur visuellen Programmierung
EP1237075A1 (de) Prä-Prozessor für vorgegebene Dokumententypdefinition, System zur Verarbeitung von Auszeichnungssprachen-Dokumenten, Verfahren und Computerprogrammprodukt dazu
EP1533940A1 (de) Transformation Function eines TMN Systems
DE10026387B4 (de) Verfahren zur Ausführungszeitoptimierung für Umsetzungen von zustands- bzw. ablauforientierten Modellen, wie Petrinetze oder Automaten
DE102006059631A1 (de) Verfahren und Werkzeug zum Überprüfen eines Software-Produkts
DE102018103383A1 (de) Computerprogrammprodukt zur Erstellung einer Schnittstellensoftware für einen virtuellen Bus
DE10109876B4 (de) Verfahren und Einrichtung zum Datenmanagement
EP4116842A1 (de) Computerimplementiertes verfahren, computerprogramm und vorrichtung zur erweiterung eines graphen
EP3940553A1 (de) Verfahren zum bereitstellen sicherheitsrelevanter daten mittels eines serversystems, serversystem und computerprogrammprodukt

Legal Events

Date Code Title Description
8364 No opposition during term of opposition