Entities in Markup Languages

Entities in Markup Languages
Redundanz Die Artikel Entitäten in Auszeichnungssprachen und Zeichen-Entität-Referenz überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Beteilige dich dazu an der Diskussion über diese Überschneidungen. Bitte entferne diesen Baustein erst nach vollständiger Abarbeitung der Redundanz. Stf 22:38, 25. Apr. 2009 (CEST)

Auszeichnungssprachen (Markup Languages) verwenden Entitäten (engl. entity bzw. entities, deutsch Einheiten, Gebilde), um wiederkehrende Informationseinheiten zu standardisieren.

Die heute weit verbreiteten Formate für Entitäten basieren auf SGML. Bei der Entwicklung von HTML und XML wurden Teile aus SGML übernommen, so auch einige Möglichkeiten zur Definition von Entitäten.

Sonderfall der Entitäten und bei weitem häufigster Vertreter ist das Character Entity, das gerade durch ein einzelnes Zeichen ersetzt werden soll. Dabei wird insbesondere eine mnemotechnische Abkürzung ersetzt durch die dezimal oder hexadezimal angegebene Zeichenkodierung.

Inhaltsverzeichnis

Anwendung

Mittels einer DTD wird vereinbart, jedes Vorkommen von &name; im Dokumententext durch eines oder mehrere Zeichen zu ersetzen.

Beispiele:
  • Hier wird vereinbart, alle &durch das Zeichen dezimal 38 zu ersetzen:
     <!ENTITY amp CDATA "&#38;" -- ampersand, Kaufmännisches Und; --> 
(DTD-Format: HTML)
  • Dokumenten-Text mit klarer Bedeutung:
He is 6&foot; 2&inch; tall.
Zu diesem Dokument werden drei unterschiedliche DTD verwendet:
  • 7-bit ASCII distribution DTD
           <!ENTITY foot   "&#39;">
           <!ENTITY inch   "&#34;">
  • Multibyte Unicode distribution DTD
           <!ENTITY foot   "&#8242;">
           <!ENTITY inch   "&#8243;">
  • Audiobook distribution DTD
           <!ENTITY foot   " foot ">
           <!ENTITY inch   " inch ">

Zeichen-Entitäten

Hier ist eine Entität durch genau ein Zeichen zu ersetzen.

Dabei sind zwei Fälle zu unterscheiden:

  • numerische Entitäten in der Form &#nnn;, wobei nnn die Codierung des einzusetzenden Zeichens ist.
Wird angewendet, wenn die direkte Eingabe dieses Zeichens nicht möglich ist; oder als Fluchtsymbol (Ersatzzeichen), wenn das betreffende Zeichen eine unerwünschte syntaktische Wirkung im Dokumententext hätte.
  • benannte Entitäten, bei denen statt einer Nummer ein leicht zu merkender name für das Zeichen vereinbart wurde.

Ersetzung von Entitäten durch Schriftzeichen

Der Ersatz einer Zeichenentität im Quelltext muss nicht zwingend 1:1 durch ein anderes Zeichen erfolgen. In europäisch kodierten Sprachen (lateinisch, griechisch) sind diakritische Zeichen üblich.

Beispiel:
Das Zeichen »é« kann wahlweise definiert sein als
  1. <!ENTITY eacute "&#233;">
  2. <!ENTITY eacute "&#xE9;">  —  (hexadezimal)
  3. <!ENTITY eacute "é">
  4. <!ENTITY eacute "&#x0301;e">
  5. <!ENTITY Kleines_E_mit_Strich_drüber_nach_rechts_oben "e&#x02CA;">
In den ersten beiden Definitionen wird das benannte durch eine numerische Entität ersetzt, im dritten durch ein einzelnes Unicode/ANSI-Zeichen und im vierten durch eine Kombination zweier Zeichen: ein Akut mit dem Grundbuchstaben e.

Es muss aber nicht immer so sein, dass ein Grundbuchstabe mit genau einem diakritischen Zeichen zusammentrifft; 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 kodierter 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:

In einer Sammlung von Texten in Koreanischer Schrift wird die Entität &ko_37; verwendet. Der Herausgeber verteilt die Dokumente zusammen mit den folgenden vier DTD.
  1. <!ENTITY ko_37 "&#12629;"> ; —  Unicode
  2. <!ENTITY ko_37 " yeo ">  —  Romanisierung
  3. <!ENTITY ko_37 "¤Å">  —  EUC-KR
  4. <!ENTITY ko_37 "&#60;img src='ko_37.png'&#62;">  —  Ersatzgrafik


Zukunft der Zeichenentitäten

Mit der allmählichen Verbreitung von UTF-8, UTF-16, UCS-2 und UCS-4 in internationalen IT-Anwendungen nimmt die Notwendigkeit einer Kodierung 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 Kodierung 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.

Benannte Zeichenentitäten

Benannte Zeichenentitäten sind für den Menschen da, nicht für die Maschine.

Computer können problemlos fünfstellige Zeichencodierungen verarbeiten – nur Menschen haben ihre Schwierigkeiten damit.

Gebräuchliche Namens-Definitionen

SGML (1986)
Latin Letters
isolat1   Added Latin 1
isolat2   Added Latin 2
isodia    Diacritical Marks
Graphics and Symbols
isonum    Numeric and Special Graphic
isopub    Publishing (Typographic)
isotech   General Technical
isobox    Box and Line Drawing
Added Mathematical Symbols
isoamsa   Arrow Relations
isoamsb   Binary Operators
isoamsc   Delimiters
isoamsn   Negated Relations
isoamso   Ordinary
isoamsr   Relations
Greek Characters
isogrk1   Greek Letters
isogrk2   Monotoniko Greek
isogrk3   Greek Symbols
isogrk4   Alternative Greek Symbols
Cyrillic Characters
isocyr1   Russian Cyrillic
isocyr2   Non-Russian Cyrillic
Dabei wurden nur die Namen und eine Beschreibung des Zeichens festgelegt; die Zuordnung von Codierungen konnte erst später mit Unicode erfolgen.
HTML 2 (1995)
  • Ersatzzeichen für die HTML-Syntax: amp, lt, gt, quot
  • Benannte Zeichen für ISO 8859-1 (also Codierungen 160…255)
Deren Definition ist identisch mit SGML:isolat1, wiedergegeben als: www.w3.org/TR/REC-html40/HTMLlat1.ent
HTML 4 (1999)
Wie HTML 2, aber Definition 152 weiterer Codierungen >255 – für die Darstellung Unicode erforderlich (UTF-8).
Definitionen erhältlich unter
Diese URL erwecken den Eindruck, ein HTML-Browser müsste die Definitionen ständig aus dem Internet nachladen. Das ist nicht so; die Standardzeichen sind fest einprogrammiert, alle HTML anzeigenden Programme sollten sie „kennen“.
XML (1998)
Vordefiniert sind nur general entities (amp, lt, gt, apos, quot) als Ersatzzeichen der XML-Syntax.
Anwender können beliebige Entitäten selbst definieren oder die vorstehend benannten DTD aus SGML oder HTML einbinden.
XHTML (2000)
Wie HTML 4, aber von XML zusätzlich das &apos; geerbt.
(siehe dazu unten)
MathML
Definiert sind Hunderte von Sonderzeichen, wie sie für mathematische Formeln benötigt werden. Überwiegend werden eigene Namen verwendet, die fast immer länger als die bei HTML und SGML sind.

Für dasselbe Zeichen können mehrere Namen verwendet werden:

dezimal
Zeichen
Entität Definition
168
¨
"die" SGML:isodia
"Dot" SGML:isotech
"uml" HTML.2, SGML:isodia
913
Α
"Agr" SGML:isogrk1
"Alpha" HTML.4
8598
"nwarr" SGML:isoamsa north west arrow
&#x2196; HTML
"UpperLeftArrow" MathML
"nwarrow" MathML

Dem Zeichen »Α« ist dabei nicht anzusehen, ob es ein griechisches großes Alpha oder ein lateinisches A ist.

Anmerkung

Gelegentlich 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:

□ □ □ □ □ □ □
&Rcy;&ucy;&scy;&scy;&kcy;&icy;&jcy;
Russkij
&#1056;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081;
&#x0420;&#x0443;&#x0441;&#x0441;&#x043A;&#x0438;&#x0439;
= Русский

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.

XHTML

Zuweilen wird behauptet, XHTML würde keine benannten Entitäten „verstehen“.

Dies ist definitiv nicht so.

XHTML 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.

Nicht jeder ältere Webbrowser ist aber bereits XHTML-fähig. Trotzdem werden XHTML-Dokumente hier meist richtig dargestellt, da die Unterschiede zwischen XHTML und HTML innerhalb der Fehlertoleranz liegen.

Allerdings treten in letzter Zeit 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 u. a. Dies führt zurzeit 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-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 es 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 Webbrowser) die wohlbekannten Definitionen nicht von sich aus anwendet.

Parameter-Entitäten

Ein Sonderfall in SGML, XML usw. sind die parameter entities. Sie können nicht in Dokumenten, sondern nur innerhalb von DTD benutzt werden. Ansonsten haben sie die identische Syntax, jedoch steht statt & ein % am Beginn.

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Document Type Definition — (DTD) is a set of markup declarations that define a document type for SGML family markup languages (SGML, XML, HTML). DTDs were a precursor to XML schema and have a similar function, although different capabilities. DTDs use a terse formal syntax …   Wikipedia

  • XML — Infobox file format name = Extensible Markup Language icon = logo = extension = .xml mime = application/xml, text/xml (deprecated) type code = uniform type = public.xml magic = owner = World Wide Web Consortium genre = Markup language container… …   Wikipedia

  • Character encodings in HTML — For a list of character entity references, see List of XML and HTML character entity references. HTML HTML and HTML5 Dynamic HTML XHTML XHTML Mobile Profile and C HTML Canvas element Character encodings Document Object Model Font family HTML… …   Wikipedia

  • HTML — For the use of HTML on Wikipedia, see Help:HTML in wikitext. HTML (HyperText Markup Language) Filename extension .html, .htm Internet media type text/html Type code TEXT …   Wikipedia

  • Unicode and HTML — Web pages authored using hypertext markup language (HTML) may contain multilingual text represented with the Unicode universal character set.The relationship between Unicode and HTML tends to be a difficult topic for many computer professionals,… …   Wikipedia

  • computer programming language — Introduction       any of various languages for expressing a set of detailed instructions for a digital computer. Such instructions can be executed directly when they are in the computer manufacturer specific numerical form known as machine… …   Universalium

  • CamelCase — (or camel case), also known as medial capitals,[1] is the practice of writing compound words or phrases in which the elements are joined without spaces, with each element s initial letter capitalized within the compound and the first letter… …   Wikipedia

  • Numeric character reference — A numeric character reference (NCR) is a common markup construct used in SGML and other SGML related markup languages such as HTML and XML. It consists of a short sequence of characters that, in turn, represent a single character from the… …   Wikipedia

  • MathML — For help writing formulae in Wikipedia, please see Help:Formula. (MathML) Mathematical Markup Language Developed by World Wide Web Consortium Type of format Markup language Extended from XML Standard(s) …   Wikipedia

  • Language — This article is about the properties of language in general. For other uses, see Language (disambiguation). Cuneiform is one of the first known forms of written language, but spoken language is believed to predate writing by tens of thousands of… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”