it-swarm.com.de

Warum wird XML genau als "Sprache" bezeichnet?

Ich habe mich gefragt, warum XML ein L im Namen hat.

XML "macht" an sich nichts. Es ist nur ein Datenspeicherformat, keine Sprache! Sprachen "tun" Dinge.

Die Art und Weise, wie Sie XML dazu bringen, Dinge zu "tun", um sie in eine richtige Sprache umzuwandeln, besteht darin, dem Stammelement xmlns Attribute hinzuzufügen. Erst dann sagt es seiner Umgebung, worum es geht.
Ein Beispiel ist XHTML. Es ist aktiv, es enthält Links, Hypertext, Stile usw., die alle vom xmlns ausgelöst werden. Ohne dies ist eine XHTML-Datei nur eine Ansammlung von Daten in Markup-Knoten.

Warum heißt XML dann eine Sprache? Es beschreibt nichts, es interpretiert nicht, es ist einfach.

Edit: Vielleicht hätte meine Frage breiter sein sollen. Da die Antwort derzeit lautet "weil XML nach SGML benannt wurde, das nach GML usw. benannt wurde", sollte die Frage lauten: Warum werden Markup-Sprachen (wie XML) Sprachen genannt?

Oh, und WRT die engen Stimmen: Nein, ich frage nicht nach dem X. Ich frage nach dem L!

107
Mr Lister

Die eigentliche Antwort lautet: XML hat ein L im Namen, weil ein Typ namens Raymond [~ # ~] l [~ # ~] orie unter den Designern war der ersten "Markup-Sprache" bei IBM in den 1970er Jahren. Die Entwickler mussten einen Namen für die Sprache finden, also wählten sie [~ # ~] gml [~ # ~] , weil es die Initialen der drei waren Entwickler (Goldfarb, Mosher und Lorie). Sie haben dann das backronym Generalized Markup Language erstellt.

Dies wurde später als SGML ( Standardisierte allgemeine Markup-Sprache) standardisiert, und als XML erstellt wurde, wollten die Entwickler das ML-Postfix beibehalten, um die Familienbeziehung zu SGML anzuzeigen, und sie fügten das X hinzu vorne, weil sie es cool fanden. (Auch wenn es eigentlich keinen Sinn macht - XML ​​ist eine Metasprache, mit der Sie erweiterbare Sprachen definieren können, aber XML ist selbst nicht wirklich erweiterbar.)

Was Ihre zweite Frage betrifft, ob XML zu Recht als Sprache bezeichnet werden kann:

Jedes strukturierte Textformat (oder sogar Binärformat), das rechnerisch verarbeitet werden kann, kann als Sprache bezeichnet werden. Eine Sprache "tut" nichts als solches, aber einige Software verarbeitet möglicherweise Eingaben in der Sprache und "tut" etwas, das darauf basiert.

Sie stellen fest, dass XML ein "Speicherformat" ist, das wahr ist, aber ein Textspeicherformat als Sprache bezeichnet werden kann. Diese Begriffe schließen sich nicht gegenseitig aus.

Programmiersprachen sind eine Teilmenge von Sprachen. Z.B. HTML und CSS sind Sprachen aber nicht Programmiersprachen, während JavaScript eine echte Programmiersprache ist. Allerdings gibt es auch keine formale Definition von Programmiersprache Und es gibt eine große Grauzone von Sprachen, die je nach Ihrer Sichtweise entweder als Datenformate oder als Programmiersprachen bezeichnet werden können.

Vor diesem Hintergrund ist XML eindeutig eine Sprache. Nur keine Programmiersprache - obwohl damit Programmiersprachen wie XSLT definiert werden können.

Ihr Punkt über Namespaces ist irrelevant. Namespaces sind eine optionale Funktion von XML und ändern die Semantik eines XML-Vokabulars nicht. Es ist nur erforderlich, Elementnamen zu unterscheiden, wenn das Format mehrere Vokabulare enthalten kann.


Edit: reinierpost hat darauf hingewiesen, dass Sie mit der Frage möglicherweise etwas anderes gemeint haben als das, was ich verstanden habe. Vielleicht haben Sie gemeint, dass bestimmte Vokabulare wie XHTML, RSS, XSLT usw. Sprachen sind, weil sie Elemente und Attribute mit einer bestimmten Semantik verknüpfen, aber der XML-Standard selbst definiert keine Semantik für bestimmte Elemente und Attribute, sodass er sich nicht wie ein "anfühlt. echte Sprache ".

Meine Antwort darauf wäre, dass XML tut sowohl Syntax als auch Semantik definiert, es nur auf einer anderen Ebene definiert. Beispielsweise wird die Syntax von Elementen sowie Attribute und Regeln für deren Verarbeitung definiert. XML ist eine "Metasprache", die immer noch eine Art Sprache ist (genau wie Metadaten immer noch Daten sind!). Als Beispiel EBNF ist eindeutig auch eine Sprache, aber ihr Zweck ist es, die Syntax anderer Sprachen zu definieren, also ist es auch eine Metasprache.

241
JacquesB

Weil es eine Sprache ist. A Markup Sprache, keine Programmiersprache.

Beachten Sie, dass natürliche menschliche Sprachen wie Englisch und Spanisch auch nichts "tun". Technisch gesehen "tun" C++ und Java und dergleichen nichts, bis sie in einen Compiler eingespeist werden und die Ausgabe ausgeführt wird. Dinge zu tun und eine Sprache zu sein, ist weitgehend orthogonal zu gegenseitig.

180
Ixrec

Sei Σ eine nicht leere, endliche Menge von Symbolen, die als Alphabet bezeichnet wird. Dann ist Σ * die zählbare unendliche Menge endlicher Wörter, die durch Verketten von null oder mehr Symbolen aus Σ gebildet werden können. Jede genau definierte Teilmenge L. ⊆ Σ * ist eine Sprache .

Wenden wir dies auf XML an. Sein Alphabet ist der Zeichensatz nicode U., die nicht leer und endlich ist. Nicht jede Verkettung von null oder mehr Unicode-Zeichen ist ein wohlgeformtes XML-Dokument, beispielsweise die Zeichenfolge

<tag> soup &; not <//good>

ist eindeutig nicht. Die Teilmenge XML ⊂ U.* das wohlgeformte XML Dokumente bildet, ist entscheidbar (oder "rekursiv"). Es gibt eine Maschine (Algorithmus oder Computerprogramm), die jedes Wort als Eingabe verwendet w ∈ U.* und gibt nach einer begrenzten Zeit entweder 1 aus, wenn w ∈ XML und sonst 0. Ein solcher Algorithmus ist eine Unterroutine jeder XML-Verarbeitungssoftware. Nicht alle Sprachen sind entscheidbar. Zum Beispiel ist die Menge der gültigen C-Programme, die in einer begrenzten Zeitspanne enden, nicht (dies ist als Stoppproblem bekannt). Wenn man eine neue Sprache entwirft, ist eine wichtige Entscheidung, ob sie so mächtig wie möglich sein sollte oder ob die Ausdruckskraft besser zugunsten der Entscheidbarkeit eingeschränkt werden sollte.

Einige Sprachen können mit Hilfe einer Grammatik definiert werden, die produzieren the Sprache. Eine Grammatik besteht aus

  • eine endliche Menge von Literalen (auch Terminalsymbole genannt),
  • eine disjunkte endliche Menge von Variablen der Grammatik (auch nicht-terminal Symbole genannt),
  • ein unterschiedliches Startsymbol, entnommen aus der Menge der Variablen und
  • ein endlicher Satz von Regeln (sogenannte Produktionen), die bestimmte Arten von Ersetzungen ermöglichen.

Jedes Wort, das ausschließlich aus Literalen besteht und abgeleitet werden kann, indem mit dem Startsymbol begonnen und dann die angegebenen Regeln angewendet werden, gehört zu der von der Grammatik erzeugten Sprache.

Mit der folgenden Grammatik (in eher informeller Notation) können Sie beispielsweise genau die Ganzzahlen in Dezimalschreibweise ableiten.

  1. Die Literale der Grammatik sind die Ziffern 1, 2, 3, 4, 5, 6, 7, 8, 9, und 0.
  2. Die Variablen sind die Symbole [~ # ~] s [~ # ~] und [~ # ~] d [~ # ~].
  3. [~ # ~] s [~ # ~] ist das Startsymbol.
  4. Jedes Vorkommen der Variablen [~ # ~] s [~ # ~] kann ersetzt werden
    • mit dem wörtlichen 0 oder
    • durch eines der anderen Literale als 0 gefolgt von der Variablen [~ # ~] d [~ # ~].
  5. Jedes Vorkommen der Variablen [~ # ~] d [~ # ~] kann ersetzt werden
    • durch eines der Literale, gefolgt von einer anderen Instanz der Variablen [~ # ~] d [~ # ~] oder
    • durch die leere Zeichenfolge.

So leiten wir 42:

[~ # ~] s [~ # ~]Regel 4, 2 anwendennd Variante) → 4 [~ # ~] d [~ # ~] - (Regel 5, 1 anwendenst Variante) → 42 [~ # ~] d [~ # ~] - (Regel 5, 2 anwendennd Variante) → 42.

Abhängig davon, wie ausgefeilte Regeln Sie in Ihrer Grammatik zulassen, sind unterschiedlich ausgefeilte Maschinen erforderlich, um zu beweisen, dass ein bestimmtes Wort tatsächlich von der Grammatik erzeugt werden kann. Das oben angegebene Beispiel ist eine reguläre Grammatik, die am einfachsten und am wenigsten leistungsfähig ist. Die nächste mächtige Klasse von Grammatiken heißt kontextfrei. Diese Grammatiken sind auch sehr einfach zu überprüfen. XML (es sei denn, ich übersehen eine dunkle Funktion, die mir nicht bekannt ist) kann durch eine kontextfreie Grammatik beschrieben werden. Die Klassifikation der Grammatiken bildet die --- ( Chomsky-Hierarchie der Grammatiken (und damit der Sprachen). Jede Sprache, die durch eine Grammatik beschrieben werden kann, ist mindestens halbentscheidbar (oder „rekursiv aufzählbar“). Das heißt, es gibt eine Maschine, die bei einem Wort, das tatsächlich zur Sprache gehört, einen Beweis ableitet, dass es innerhalb endlicher Zeit von der Grammatik erzeugt werden kann und niemals einen falschen Beweis ausgibt. Eine solche Maschine heißt Verifizierer. Beachten Sie, dass der Computer möglicherweise nie anhält, wenn ein Wort angegeben wird, das nicht zur Sprache gehört. Wir möchten natürlich, dass unsere Programmiersprachen durch weniger leistungsfähige Grammatiken beschrieben werden, damit ungültige Programme innerhalb einer begrenzten Zeit zurückgewiesen werden können.

Schemata sind eine Ergänzung zu XML, mit der der Satz wohlgeformter Dokumente verfeinert werden kann. Ein wohlgeformtes Dokument, das einem bestimmten Schema folgt, wird gemäß diesem Schema als gültig bezeichnet. Zum Beispiel die Zeichenfolge

<?xml version="1.0" encoding="utf-8" ?>
<root>all evil</root>

ist ein wohlgeformtes XML-Dokument, aber kein gültiges XHTML-Dokument. Es gibt Schemata für XHTML , SVG , XSLT und was nicht. Die Schemaüberprüfung kann auch durch einen Algorithmus durchgeführt werden, der nach einer begrenzten Anzahl von Schritten für jede Eingabe garantiert angehalten wird. Ein solches Programm wird als Validator oder als validierender Parser bezeichnet. Schemata werden durch sogenannte Scema-Definitionssprachen definiert, mit denen Grammatiken formal definiert werden können. XSD ist die offizielle Schemadefinitionssprache für XML und selbst XML-basiert. RELAX NG ist eine elegantere, viel einfachere und etwas weniger leistungsstarke Alternative zu XSD.

Da Sie Ihre eigenen Schemata definieren können, wird XML als erweiterbare Sprache bezeichnet. Dies ist der Ursprung des „X“ in „XML“.

Sie können eine Reihe von Regeln definieren, die XML-Dokumenten eine Interpretation als Beschreibung von Computerprogrammen geben. XSLT, wie bereits erwähnt, ist ein Beispiel für eine solche mit XML erstellte Programmiersprache. Im Allgemeinen können Sie den abstrakten Syntaxbaum fast jeder Programmiersprache ganz natürlich in XML serialisieren, wenn Sie dies wünschen.

102
5gon12eder

In der Informatik ist formale Sprache nur eine Reihe von Zeichenfolgen, die normalerweise unendlich sind und häufig anhand von Regeln beschrieben werden (zwei gängige Versionen dieser Regeln sind reguläre Ausdrücke und formal) Grammatiken ).

Beachten Sie, dass dies bedeutet, dass eine Sprache lediglich Syntax benötigt. Die Sprache muss nicht beschreiben, was jede gültige Zeichenfolge bedeutet ( das heißt Semantik ).

Dies bedeutet nun, dass Programmiersprachen formale Sprachen sind, die auch eine Semantik haben, die einige Berechnungen beschreibt. Und zum Beispiel ist XHTML eine formale Sprache, deren Semantik (grob und informell) beschreibt, wie ein Hypertext-Dokument aussieht und sich verhält.

XML ist immer noch eine Sprache, obwohl es selbst keine Semantik hat (aber viele von XML abgeleitete Sprachen wie XHTML und XAML).

Technisch gesehen sind Binärformate auch Sprachen, aber sie werden nicht so genannt. Der Begriff "Sprache" ist für lesbare Formate reserviert.

31
svick

Eine Sprache ist eine Methode zur Übermittlung von Informationen.

Eine Programmiersprache ist eine Methode zur Übermittlung von Algorithmen.

Eine Auszeichnungssprache wie XML ist eine Sprache zum Übermitteln von Daten.

12
Philipp

XML ist eine Metasprache. Sie verwenden es, um bestimmte Sprachen zu definieren. Sprachen tun nie etwas, sie erlauben uns nur, Dinge auszudrücken. Es ist auch nicht wahr, dass XML eine "Speichersprache" ist. Im Gegenteil. Sie können XML-Dokumente nach Belieben speichern. XML wird besser als Übertragungssprache verstanden. PS. Wenn Sie nicht glauben, dass XML irgendetwas "tut", müssen Sie erklären, wie es ist, dass viele Systeme (z. B. Anlegestellen) XML als (schlechte) Programmiersprache verwenden. Es ist ein beklagenswerter Missbrauch von XML, aber es existiert in freier Wildbahn und das ist nur eines von vielen Beispielen.

2
user223083