Beschleunigung der Übernahme von XML-Vokabularen

Möchten Sie die Übernahme Ihres XML-Vokabulars beschleunigen? Eine Möglichkeit ist, dass ein 800 Pfund schwerer Gorilla jeden dazu zwingt, ihn zu benutzen. Aber das wird bald zu Ressentiments und Rebellionen führen. Ein besserer Weg ist, etwas zu erschaffen, das die Leute wirklich nutzen wollen und das keine große Investition in Zeit oder Geld erfordert und das sie sofort mit der Interaktion beginnen lässt. Hier ist wie:

  1. Geben Sie beim Erstellen Ihres XML-Vokabulars nicht nur die Bedeutung des Markups an, sondern auch sein Verhalten in Anwendungen, die es verarbeiten.
  2. Festlegen von Konformitätsregeln.
  3. Erstellen Sie eine Testsuite.
  4. Erstellen Sie eine Anwendung, die das Verhalten implementiert.
  5. Überprüfen Sie die Anwendung anhand der Testsuite.
  6. Stellen Sie die Anwendung der ganzen Welt zur Verfügung.

Idealerweise werden mehrere Implementierungen der Anwendung erstellt (natürlich jede mit dem gleichen Verhalten!). Auf diese Weise können Benutzer eine Implementierung basierend auf ihrer Leistung oder Größe oder der Programmiersprache auswählen, in der sie implementiert wurde.

Das ist es! Tun Sie dies und Ihr XML-Vokabular kann schnell übernommen werden.

Beispiel: Betrachten Sie das XSLT-Vokabular. Die XSLT-Spezifikation spezifiziert nicht nur die Bedeutung jedes Elements und Attributs, sondern auch sein Verhalten. Die XSLT-Spezifikation enthält Konformitätsregeln. Es gibt eine XSLT-Testsuite. Es wurde eine Anwendung namens XSLT-Prozessor erstellt, die das in der XSLT-Spezifikation angegebene Verhalten implementiert. Tatsächlich wurden mehrere Implementierungen der Anwendung erstellt: Xalan, Saxon, Sableton und andere.

Lassen Sie mich etwas näher auf das eingehen, was ich unter „Verhaltensspezifikation“ verstehe. Betrachten Sie noch einmal XSLT. Die XSLT-Spezifikation besagt, dass das <xsl: for-each> -Element eine Sammlung von Knoten angibt. Das ist bedeutung Es heißt auch, dass eine kompatible Anwendung über jeden Knoten iterieren muss, der durch das select-Attribut gekennzeichnet ist (das für jedes Element hat ein select-Attribut) und die Elemente in <xsl: for-each> ausführen muss. Das ist Verhalten. Daher gibt die XSLT-Spezifikation an, wie sich eine Anwendung auf dem <xsl: for-each> -Element verhalten muss. Das Gleiche gilt für das gesamte XSLT-Vokabular.

Mit der XML-Schema-Spezifikation lässt sich das Verhalten von XML-Schema-Validatoren gut festlegen. Beispielsweise gibt es an, dass ein Validator für eine Elementdeklaration in einem XML-Schema überprüfen muss, ob das XML-Instanzdokument die richtige Anzahl von Vorkommen eines Elements enthält und sein Inhalt vom richtigen Typ ist. Somit wird festgelegt, wie sich der Validator im XML-Schema-Vokabular verhalten muss. Wenn Sie also „Verhalten festlegen“ möchten, müssen Sie „für dieses Element (oder Attribut) im Vokabular von der Anwendung dies, das und das“ beschreiben.

Der Fehler, den die Benutzer beim Erstellen eines XML-Vokabulars machen, besteht darin, dass sie dessen Verhalten nicht angeben. Sie überlassen es „der Welt“, herauszufinden, wie sich das verhalten soll. Ein klassisches Beispiel hierfür ist HTML. Die Browser-Entwickler mussten entscheiden, wie sich das verhalten sollte. Sie hatten sehr unterschiedliche Vorstellungen über das richtige Verhalten. Die Folge war, dass sich IE, Firefox und die anderen Browser alle unterschiedlich verhielten. Es dauerte 10 Jahre, bis sie sich endlich auf ein gemeinsames Verständnis des Verhaltens verständigten. Hätte die HTML-Spezifikation das Verhalten angegeben, Konformitätsregeln und eine Testsuite bereitgestellt, hätten sich Browser vor 10 Jahren identisch verhalten.

Bei der Angabe des Verhaltens müssen Sie Folgendes berücksichtigen: Wird Ihr XML-Vokabular als ein XML-Dokument oder als zwei XML-Dokumente in die Anwendung eingespeist? (Oder mehr?) Schauen wir uns einige Beispiele an, um zu sehen, was ich meine:

  • Browseranwendungen verarbeiten ein Dokument (ein HTML-Dokument)
  • XML-Schema-Validatoren verarbeiten zwei Dokumente (ein XML-Schema-Dokument und ein XML-Dokument)
  • XSLT-Prozessoren verarbeiten zwei Dokumente (ein XSLT-Dokument und ein XML-Dokument)

In diesen Beispielen sind die Anwendungen: Browser, XML-Schema-Validator und XSLT-Prozessor. Diese Anwendungen verarbeiten ein XML-Vokabular. Abhängig vom XML-Vokabular benötigt eine Anwendung möglicherweise ein Eingabedokument oder zwei Eingabedokumente (oder mehr).

Dateninteroperabilität

Ich habe oft gehört: „Um Dateninteroperabilität zu erreichen, muss jede Anwendung das XML-Vokabular auf die gleiche Weise interpretieren / verstehen.“

Gibt es einen besseren Weg, um dieselbe Interpretation / dasselbe Verständnis zu gewährleisten, als dieselbe Anwendung zu verwenden?

Durch die Verwendung derselben Anwendung können wir eine perfekte Dateninteroperabilität erzielen. HINWEIS: Wenn ich „dieselbe Anwendung“ sage, meine ich eine Reihe von Implementierungen. Xalan, Saxon und Sabletron sind also alle dieselbe Anwendung – sie sind alle XSLT-Prozessoren. Die Verwendung derselben Anwendung bedeutet beispielsweise nicht, dass alle Benutzer Xalan verwenden. Eine Person kann Xalan, eine andere Person Saxon und eine andere Sabletron verwenden. Das ist okay; sie haben alle das gleiche Verhalten; Sie alle folgen den XSLT-Konformitätsregeln. Sie alle bestehen die XSLT-Testsuite.

Das folgende Beispiel zeigt, wie die Dateninteroperabilität durch die gemeinsame Nutzung derselben Anwendung erreicht wird.

Beispiel: Betrachten Sie XSLT. Ich kann ein XSLT-Dokument erstellen und es auf meinem XSLT-Prozessor ausführen. Ich kann das XSLT-Dokument an Sie senden und Sie führen es auf Ihrem XSLT-Prozessor aus. Wir bekommen das gleiche Verhalten. Wir sind uns vollkommen einig, was das <xsl: for-each> -Element bedeutet und wie es sich verhalten soll. Das Gleiche gilt für alle anderen Elemente und Attribute im XSLT-Vokabular. Wir haben erfolgreich zusammengearbeitet. Was hat das ermöglicht? Antwort: Was die Interoperabilität ermöglicht hat, ist die Tatsache, dass wir dieselbe Anwendung verwenden. (Auch hier muss ich betonen, dass dies nicht bedeutet, dass wir dieselbe Implementierung der Anwendung verwenden. Möglicherweise verwenden Sie Xalan, und ich verwende Saxon. Das ist in Ordnung. Beide sind XSLT-Prozessoren.)

Ich kann ein zweites XSLT-Dokument erstellen und an Sie senden. Auch hier haben wir perfekte Interoperabilität. Und ein drittes XSLT-Dokument. Und so weiter. Die XSLT-Prozessoranwendung ermöglicht die Erstellung, den Austausch und die Ausführung endloser unterschiedlicher XSLT-Transformationen mit perfektem Verständnis / Interoperabilität.

Rekapitulieren

Hier sind die wichtigsten Punkte:

  1. Wenn Sie ein XML-Vokabular erstellen, geben Sie das Verhalten des XML-Vokabulars an. Geben Sie die Konformitätsanforderungen an. Erstellen Sie eine Testsuite. Implementieren Sie konforme Anwendungen mit jeweils demselben Verhalten (die Implementierungen können in Größe, Leistung, Programmiersprache usw. variieren). Jeder nutzt die Implementierungen.
  2. Dateninteroperabilität wird nicht durch ein gemeinsames Verständnis des XML-Vokabulars erreicht. Die Interoperabilität der Daten wird durch die gemeinsame Nutzung der Anwendung des XML-Vokabulars erreicht.
  3. Es ist keine gute Idee, ein XML-Vokabular zu erstellen, ohne dessen Verhalten zu spezifizieren. Es ist ein Rezept für verzögerte Dateninteroperabilität, im schlimmsten Fall fehlgeschlagene Dateninteroperabilität.

Hinterlasse eine Antwort