Entität (Auszeichnungssprache)Entitäten (englisch entity, entities) werden in Auszeichnungssprachen (englisch markup languages) wie SGML, XML, HTML, XHTML und HTML5 verwendet, um wiederkehrende Informationseinheiten zu verwalten und wiederzuverwenden. Die weit verbreitete Syntax für Entitäten basiert auf SGML. Bei der Entwicklung von XML und HTML Version 5 wurden Teile aus SGML übernommen, so auch einige Möglichkeiten zur Definition von Entitäten. Häufigster Vertreter ist die Zeichen-Entität, welche durch ein einzelnes Zeichen ersetzt werden soll. Dabei wird insbesondere eine mnemotechnische Abkürzung (benannte Entität) ersetzt durch die dezimal oder hexadezimal angegebene Zeichencodierung (numerische Entität, Zeichenverweis). Benannte Entität
Computer können problemlos fünfstellige Zeichencodierungen verarbeiten – nur Menschen haben ihre Schwierigkeiten damit. Benannte Entitäten verbessern die Lesbarkeit von Dokumenten durch den Benutzer. Mittels einer Dokumenttypdefinition (DTD) wird eine benannte Entität mit Name (Entitätsname) und Inhalt (Entitätsinhalt) deklariert. Wird im Dokumententext auf den Entitätsnamen referenziert, dann ersetzt der Parser die Referenz durch den Entitätsinhalt.[1]
<!ENTITY amp CDATA "&"> <!-- ampersand/Kaufmännisches Und ("et"): & -->
<!ENTITY foot "'"> <!-- ' -->
<!ENTITY inch """> <!-- " -->
<!ENTITY foot "′"> <!-- ′ -->
<!ENTITY inch "″"> <!-- ″ -->
<!ENTITY foot " foot ">
<!ENTITY inch " inch ">
Zeichenverweis (Numerische Entität)In der SGML-Norm wurden numerische Entitäten als Zeichenverweise (engl. Character Reference) eingeführt.[2] Auch in XML werden numerische Entitäten als Zeichenverweise definiert.[3] Bei der numerischen Entität wird der Zeichencode als Entität in das Dokument eingetragen als:
Der Parser ersetzt den Zeichencode durch das codierte Zeichen (siehe auch HTML-Entität). Ersetzung von Entitäten durch SchriftzeichenDer Ersatz einer Zeichenentität im Quelltext muss nicht zwingend 1:1 durch ein anderes Zeichen erfolgen. In europäisch codierten Sprachen (lateinisch, griechisch) sind diakritische Zeichen üblich.
Es muss aber nicht immer ein Grundbuchstabe mit genau einem diakritischen Zeichen zusammentreffen; mehrere solcher Modifikationen können über, unter und neben dem Grundbuchstaben erfolgen. In außereuropäischen Schriftsystemen existieren außerdem vielfältige Ligaturen, also unterschiedlichste Kombinationen zusammentreffender Einzelbuchstaben – als Beispiele sei Devanagari oder Tamilisch herausgegriffen. In anderen Fällen (beispielsweise im Arabischen) hängt die Gestalt des sich ergebenden Schriftzeichens vom Kontext, von der sprachlichen Bedeutung ab – und nicht nur vom Zusammentreffen numerisch codierter Einzelzeichen, wie es leicht durch eine Software umgerechnet werden kann. Im Deutschen wäre als entsprechendes Beispiel die korrekte Verwendung des langen s und runden s zu nennen oder das Verbot von ff-, fi-, fl-Ligaturen über Silbengrenzen hinweg. Nicht jede Kombination mehrerer Elemente zu einem Schriftzeichen ist jedoch mit einer eigenen Unicode-Nummer registriert. Deshalb muss auch künftig den Anwendern die Möglichkeit gegeben werden, spezifische Schriftzeichen als eigene character entities zu vereinbaren. Eine Entität kann ferner ein Verweis auf eine Grafik (Bitmap wie auch SVG) sein.
Zukunft der ZeichenentitätenMit der allmählichen Verbreitung von UTF-8, UTF-16, UCS-2 und UCS-4 in internationalen IT-Anwendungen nimmt die Notwendigkeit einer Codierung von Schriftzeichen mittels character entities allmählich ab. Es wird aber noch viele Jahre dauern, bis weltweit das letzte Kommunikationsprotokoll und die letzte Software-Anwendung Multi-Byte-Zeichen fehlerfrei handhaben kann. Daher bleibt die Notwendigkeit bestehen, für den Austausch mittels numerischer Entitäten selbst noch auf die Stufe us-ascii (7 bit) zurückfallen zu können. Die Konvertierung ist aber in beiden Richtungen verlustfrei möglich, sofern die general entities dabei nicht angetastet werden und sofern überhaupt eine spezifische Codierung im Universal Character Set existiert. Bedeutung wird die Darstellung als benannte Entity wohldefinierter Einzelzeichen langfristig nur für das Lesen und Schreiben von XML-Quelltext durch menschliche Bearbeiter behalten, wenn Zeichen außerhalb der jeweiligen Sprachwelt vorkommen (seien sie nun fremdsprachlich oder auch mathematisch). Zu erwarten ist, dass im Quelltext für die Betrachtung und Veränderung die Codierungen aus problematischen Zahlenbereichen on-the-fly in benannte Entitäten umgewandelt und bei Abspeicherung wieder in numerische Entitäten oder direkt als Zeichen codiert werden. Das Namensschema liegt dann lediglich lokal beim Bearbeiter vor und dringt nicht nach außen; neben den verbreiteten durch SGML definierten englischen Namen können genauso gut auch deutsche, französische oder russische Entitätennamen angezeigt werden. Benannte Zeichenentitäten waren 1986 unter den damaligen Bedingungen ein sinnvolles und notwendiges Konzept in SGML. Unter sich langsam ändernden Bedingungen und mittels benutzerfreundlicher grafischer Eingabehilfen besteht auf modernen Systemen diese Notwendigkeit nicht mehr, sofern Unicode-Zeichen definiert sind. Bei HTML – der häufigsten Anwendung – ist das der Fall. ISO-genormte Zeichennamen
Für dasselbe Zeichen können mehrere Namen verwendet werden:
Dem Zeichen »Α« ist dabei nicht anzusehen, ob es ein griechisches großes Alpha oder ein lateinisches A ist. AnmerkungGelegentlich erfolgt der Einwand, mnemonische Entitäten würden die Arbeit unnötig kompliziert machen, weil die entsprechenden DTDs vereinbart und bereitgestellt werden müssten und man solle doch gleich die richtigen Zeichen tippen bzw. nur mit den numerischen Entitäten arbeiten. Dazu einfach ein Beispiel in SGML:isocyr1 zum Vergleich:
Es kann durchaus sinnvoll sein, nach dem Editieren die benannten Entitäten automatisch in die numerische Form umzuwandeln, in diesem Format an Andere weiterzugeben – aber bei der nächsten Änderung durch menschliche Bearbeiter die numerischen Entitäten wieder mnemonisch darzustellen. Die Darstellung als Entitäten hat weiterhin den Vorteil, dass unterschiedliche Zeichen mit unterschiedlicher Bedeutung, die sich bei der grafischen Darstellung sehr ähneln (z. B.: Hochkomma, Akzent, Apostroph, Anführungszeichen), eindeutig unterschieden werden können. XHTMLXHTML enthält exakt alle Definitionen aus HTML 4.0, und in jeder Implementierung müssen alle benannten Entitäten bekannt sein (und sind es auch, üblicherweise hard-coded). Diese Weiterentwicklung betrifft inneres Format und Struktur der Elemente (tags), nicht aber den Nutztext und nicht die Entitäten. Allerdings traten Mitte der 2000er Jahre vermehrt Probleme in der Kommunikation mit Webservern auf: Sie stellen die Dokumente nicht mehr mit dem MIME-Typ text/html bereit, sondern als application/xml, text/xml und andere. Dies führte damals tatsächlich zu Darstellungsproblemen, wenn (ältere) Browser daraufhin den Text nicht mehr als HTML erkennen. Weiterhin gibt es XML-Anwendungen, die mit Textpassagen arbeiten und die dazu die vergleichbaren und bekannten HTML-Elemente nachempfunden haben. Aktuelles und häufigstes Beispiel sind schriftliche RSS-Web-Feeds (News). Sie enthalten wie HTML <p>, <span>, <div> und auch <head> / <body>. Der Quelltext sieht daher aus, als ob es sich um HTML handeln würde. Da dieses aber gar kein HTML-Dokument ist, können benannte Entitäten nicht benutzt werden – sofern die entsprechenden DTD nicht eingebunden wurden oder die Darstellungssoftware (meist der Webbrowser) die wohlbekannten Definitionen nicht von sich aus anwendet. Parameter-EntitätenEin Sonderfall in SGML, XML usw. sind parameter entities. Sie dürfen nicht in Dokumenten, sondern nur innerhalb der DTD benutzt werden. Ansonsten haben sie die identische Syntax, jedoch steht statt Syntax der Deklaration: <!ENTITY % Name SYSTEM "externe.datei" >
Syntax der Referenz (Aufruf der Entität): %Name;
Literatur
Weblinks
Einzelnachweise
|