Hey,
vielen Dank für eure Antworten. Ich verstehe immer mehr
Ich fasse nochmal zusammen und hoffe, dass ich keinen Fehler mache: XHTML ist aus HTML und XML enstanden,
also eine Art zusammenfassung. In einer Metasprache können Objekte neu definiert werden wie beispielsweise <popel>. Wenn ich das in meinen XHTML Editor tippe, dann kommt ein Fehler, aber in einer Metasprache kann ich das vereinbaren!?.
XHTML ist afaik die Auszeichnungssprache HTML in der Metasprache XML definiert. Der Unterschied zwischen HTML und XHTML ist vor allem, dass es in XHTML keine Tags wie <br> gibt, die nicht schließen. Kommt daher, dass in XML jedes Element geöffnet und geschlossen wird, daher auch bei XHTML. In XHTML braucht man also <br></br>. Bei Tags, zwischen denen nichts steht, gibts aber eine Kurzform, das war dann glaubich <br/>, damit weiß der Parser, dass das Tag keinen Inhalt hat und gleich wieder geschlosse wird. ein <br> in einem XHTML-Dokument wäre ein Fehler.
Ach ja...ich dachte, dass das "Gegenteil" einer Metasprache die Auszeichnungssprache sei. Doch laut meinen Informationen, ist das "Gegenteil" die Objektssprache. Also ist dann HTML die Objektsprache uns SGML die Metasprache (wo dann quasi HTML definiert ist???). Was ist dann eine Auszeichnungsprache?
Gegenteil? Hm, was ist das Gegenteil von Englisch?
Ja, in der Metapsrache kann ich Elemente definieren. Wenn in HTML über ein XML-Schema redefiniere, um XHTML zu erhalten, erstelle ich Elemente wie <a>..</a>, <ul>..</ul> usw. Also Listen-Element, Links usw.
In der Objektsprache erzeuge ich dann Objekte mit diesen Elementen. Also <a href...>mein erster Link</a> usw.
Ich kann keine neuen Elemente mit der Objektsprache dazuerfinden, aber beliebig viele Objekte (oder Instanzen) aus den vordefinierten Elementen erzeugen.
In Java und C++ ist es ähnlich, da sind Elemente wie class und method vorgegeben, und ich kann beliebig viele Klassen und in jeder beliebig viele Methoden erzeugen. Ein völlig neues Element wie "Popel" kann der Compiler aber nicht verarbeiten und bringt einen Fehler.
Ergo sind das keine Metasprachen, denn ihre Zahl an Elementen ist begrenzt und vorgegeben. Du kannst den Wortschatz dieser Sprachen nicht selbst erweitern.
Was meinst du bitte mit folgendem SAtz: "XML ist daher eine Metasprache, aber restriktiver als SGML und einfacher zu parsen. Wenn du willst eine Teilmenge davon." Da kapier ich nicht so viel.
SGML ist quasi die Mutter aller Metasprachen, war aber für bestimmte Zwecke zu kompliziert. XML ist eine eingeschränkte form von XML, quasi eine Teilmenge davon, nicht ganz so umfangreich und man muss mehr Regeln beachten, dafür einfacher anzuwenden. XML ist der Quasistandard momentan. Wenn du einen Webservice hast, der mit Infos gefüttert werden muss, wirst mit einem XML-dokument definieren, was der Webservice als Input braucht. Wenn der client, der den Webservice nutzt, dann seine Daten nach diesem Vorgegeben XML-Schema strukturiert (auszeichnet), kann der Webservice sie verarbeiten. Dadurch ist es quasi egal, was du lokal für einen Output hast. Bei dir läuft ein Programm, das was berechnet, das Ergebnis soll der Webservice nehmen und verarbeiten, danach nimmst du dessen Ergebnis und arbeitest weiter. Dann musst du nur dafür sorgen, dass dein Ergebnis so in XML strukturiert wird, dass der Webservice es versteht, bevor du es wegschickst. Und wenn das Ergebnis vom Webservice kommt, muss dein lokales Programm wissen, wie es aufgebaut ist (also wie die XML-Antwort vom Webservice aussieht), dann kannst du es einlesen und damit weiterarbeiten.
Das wird so im Internet praktiziert. Ein Beispiel für einen Webservice wäre z.B. eine Datenbankanfrage an einen entfernten Server. Dein Rechner wurschtelt was rum, bekommt eine Kunden-ID und soll nun in der Zentrale nach dessen Adresse fahnden. Also XML zum Webservice schicken, der leitet die Anfrage an die dortige Datenbank weiter, die sucht die Adresse raus, der Webservice verpackt das Resultat in ein XML und schickt es dir. du liest es aus, was ja einfach geht, weil du weisst, dass der Webservice das in ein tag <adress></adress> packt. Dann machst du lokal weiter mit der Adresse, fügst sie in einen Briefkopf ein z.B.
Mit "Du" meine ich deinen Rechner, der Witz an der sache ist ja die Automatisierung.
Das klappt mit HTML nicht, weils dort kein Tag <adress> gibt. Mit XML kein Problem.
Auf folgender Seite
steht, dass XML eine Metasprache sei. Doch wie kann ich eine Metasprache (XML) mit einer Objektsprache (HTML) zu einer Sprache vereinen (XHTML)?? Die Sache mit XML hab ich noch nicht kapiert.
Und was ist DTD. Die Erklärung in wikipedia kapier ich irgendwie auch nicht.
Wie schon oben erklärt, vereint wird da nichts. XHTML ist im Grunde HTML,m aber XML-konform gemacht, damit jedes XML-fähige Programm diese Dokumente lesen kann. Denn ein XML-Parser kann wegen der fehlenden schließenden Tags kein HTML lesen und validieren.
DTD bedeutet Doctype Definition. Wie auch XML-Schema ist DTD dazu da, den Aufbau deines XML-Dokuments zu definieren. Bei XML steht ganz außen immer ein Tag, darin kommen dann weitere Tags. Welche Tags wo stehen dürfen und wie oft, regelt die DTD.
Sie definiert z.b., dass für unseren Webservice das XML-Dokument mit <request>...</request> beginne und enden muss. Im request-Tag drin steht z.B. die Art des requests, sagen wir <query=adress/>. Er soll also die Adressdatenbank abfragen. Im DTD sind jetzt alle zulässigen Optionen definiert, also dass query=adress, aber auch query=name oder query=url zulässig ist. query=lieblingsgetränk definieren wir nicht, eine solche Anfrage ergibt eine Fehlermeldung als Antwort. Wir haben ja keine Getränkedatenbank hier, ihr Deppen.
Für die Antwort dasselbe Spiel <adress> als Tag, darin stehen die tags <name>, <street>, <city> usw. die DTD definiert auch die Reihenfolge, damit sowas wie <adress><city><name>...nicht geht, denn der Name-tag darf nicht innerhalb des City-Tags stehen. Davor dürfte er auch nicht stehen, damit dein Programm beim Einsetzen der Adresse nicht die Stadt ins Namenfeld schreibt und den Namen ins Stadtfeld. Wir wollen die Post ja nicht stressen.
siehe auch Wikipedia:
Konkret heißt das, dass in einer DTD die Reihenfolge, die Verschachtelung der Elemente und die Art des Inhalts von Attributen festgelegt wird – kurz gesagt: die Struktur des Dokuments.
In der Praxis wird DTD afaik nicht so häufig benutzt, sondern eher XML-Schema. Macht daselbe, aber XML-Schema ist selber XML, während die DTD-Syntax selbst nicht in XML ist sondern eine eigene Sprache nutzt.
Bei XML-Schema findest du unter
XML Schema ? Wikipedia auch Beispiele, wie sowas aussehen kann.
Wenn ich also ein Schema nehme, dass genau die Struktur der XHTML-Tags definiert, und damit ein XML-Dokument erstelle, ist dieses erstellte dokument dann XHTML. Jeder Browser kann es dann verarbeiten, und auch jedes andere Programm, dass dieses Schema für XHTML kennt.
Mit dem Schema und XML kannst du also eine ganz eigene Dokumentensprache für deine Programme definieren, die dann einlesen und weiterverarbeiten kannst. Maschinenlesbare Dokumente.
Abschließend noch was zu Textauszeichnung bzw. Markup:
Damit sind die Tags gemeint, die die Daten umschließen. sie zeichnen den Text bzw. die Daten zwischen den Text aus. Wenn da <h1> steht, weiß man, dass das eine Überschrift sein soll.
XML und HTML sind Markupsprachen, Java oder C++ sind keine. Markupsprachen dienen vor allem der Textverarbeitung, bei der Programmierung würde das wenig Sinn machen.
Objektsprache ist dabei der Oberbegriff, also alle Sprachen, in denen man Objekte erzeugen kann gemäß einem vorgegebenen Schema. Auszeichnungssprachen gehören da dazu.
Ich weiß ja nicht, wofür du die Infos brauchst, aber wenn du dich mit XML beschäftigen willst, es gibt da kleine Taschenbücher zum Nachschlagen, in denen die wichtigsten Sachen erklärt werden, auch Schemas usw.
XML kurz und gut: Simon St. Laurent, Michael Fitzgerald: Amazon.de: Bücher
Amazon.de: XML: Extensible Markup Language von Anfang an: Helmut Erlenkötter: Bücher
Ich hatte vor einer Prüfung dazu das Buch mit dem Pfau. die sind auch recht dünn, kann man in 2-3 Tagen durchlesen.