Jednostka (język znaczników)
Encje ( encja angielska , encje ) są w językach znaczników ( angielskie języki znaczników ), ponieważ SGML , XML , HTML , XHTML i HTML5 wykorzystywały powtarzalne jednostki informacji do zarządzania i ponownego wykorzystania.
Powszechnie stosowana obecnie składnia encji oparta jest na SGML . Przy tworzeniu XML i HTML w wersji 5 przyjęto części SGML, w tym niektóre opcje definiowania encji.
Najczęstszym przedstawicielem jest encja znakowa, którą należy zastąpić pojedynczym znakiem. W szczególności skrót mnemoniczny (nazwa encji) jest zastępowany dziesiętnym lub szesnastkowym kodowaniem znaków (encja numeryczna, odwołanie znakowe).
Nazwany podmiot
Imiona (nazwane jednostki znaków) są dla ludzi, liczby są dla maszyn. Komputery z łatwością radzą sobie z kodowaniem pięciocyfrowym - tylko ludzie mają z tym problemy.
Nazwane encje poprawiają czytelność dokumentów dla użytkownika.
Nazwana encja o nazwie (nazwa encji) i treści (zawartość encji) jest deklarowana przy użyciu definicji typu dokumentu (DTD). Jeśli nazwa encji jest przywoływana w tekście dokumentu, parser zastępuje odwołanie treścią encji.
-
Przykłady:
- Tutaj uzgodniono, że wszystkie & amp; należy zastąpić 38 znakiem dziesiętnym :
<!ENTITY amp CDATA "&"> <!-- ampersand/Kaufmännisches Und ("et"): & -->
- (format DTD: HTML)
-
- Tekst dokumentu o jasnym znaczeniu:
- On ma 6 i stopę; 2 cale; wysoka.
- W tym dokumencie używane są trzy różne DTD:
- DTD dla 7-bitowego środowiska ASCII
<!ENTITY foot "'"> <!-- ' -->
<!ENTITY inch """> <!-- " -->
- DTD dla wielobajtowego środowiska Unicode
<!ENTITY foot "′"> <!-- ′ -->
<!ENTITY inch "″"> <!-- ″ -->
- DTD dla środowiska audiobooków
<!ENTITY foot " foot ">
<!ENTITY inch " inch ">
Odwołanie znakowe (jednostka liczbowa)
W standardzie SGML encje numeryczne zostały wprowadzone jako odwołania znakowe . Jednostki numeryczne są również definiowane jako odwołania do znaków w XML . W przypadku encji liczbowej kod znaku jest wpisywany jako encja w dokumencie jako:
-
&#nnn;
, gdzie nnn jest kodem dziesiętnym znaku, który ma być użyty, lub -
&#xhhhh;
, gdzie hhhh jest kodem szesnastkowym używanego znaku.
Parser zastępuje kod znaku zakodowanym znakiem.
Zastąpienie bytów postaciami
Zastąpienie encji znakowej w tekście źródłowym nie musi koniecznie wynosić 1:1 innym znakiem. Znaki diakrytyczne są powszechne w kodowanych językach europejskich (łaciński, grecki) .
- Przykład:
- Znak "é" można opcjonalnie zdefiniować jako
- <! ENTITY eacute "& # 233;">
- <! ENTITY eacute "& # xE9;"> - ( szesnastkowo )
- <! ENTITY eacute "é">
- <! ENTITY eacute "e & # x0301;">
- <! ENTITY Small_E_mit_Strich_drüber_nach_rechts_oben "e & # x02CA;">
- W pierwszych dwóch definicjach nazwane zostaje zastąpione liczbą, w trzeciej pojedynczym znakiem Unicode/ANSI, aw czwartej kombinacją dwóch znaków: akcentem ostrym z podstawową literą e .
Jednak litera podstawowa nie zawsze musi pokrywać się z dokładnie jednym znakiem diakrytycznym; kilka takich modyfikacji można dokonać powyżej, poniżej i obok litery podstawowej.
W pozaeuropejskich systemach pisma występują też różnorodne ligatury , czyli najróżniejsze kombinacje pojedynczych liter, które łączą się ze sobą – przykładem są dewanagari czy tamilski . W innych przypadkach (na przykład w języku arabskim ) kształt wynikowego znaku zależy od kontekstu, od znaczenia językowego - a nie tylko od zbiegu zakodowanych numerycznie pojedynczych znaków, co można łatwo przekonwertować za pomocą oprogramowania. W niemieckim, odpowiedni przykład byłoby poprawne zastosowanie długich s i okrągłe S lub zakaz ff , fi , fl ligatur przez granice sylaby.
Jednak nie każda kombinacja kilku elementów tworząca jeden znak jest rejestrowana z własnym numerem Unicode . Z tego powodu użytkownicy muszą nadal mieć możliwość uzgodnienia określonych znaków jako własnych jednostek znaków . Encja może być również odniesieniem do grafiki ( bitmapy oraz SVG ).
- Przykład:
- Jednostka jest używana w zbiorze tekstów w alfabecie koreańskim
&ko_37;
. Wydawca dystrybuuje dokumenty wraz z następującymi czterema DTD.-
<!ENTITY ko_37 " ㅕ">
<!ENTITY Encoding "UCS">
- Unicode -
<!ENTITY ko_37 " yeo ">
<!ENTITY Encoding "romanization">
- Latynizacja -
<!ENTITY ko_37 "¤Å">
<!ENTITY Encoding "EUC-KR">
- EUC- KR -
<!ENTITY ko_37 "<img src='ko_37.png'>">
<!ENTITY Encoding "graphic glyphs">
- Grafika zastępcza
-
- W wielu przydatnych tekstach znaki są następnie wyświetlane za pomocą & ko_ nn ; pisemny. Notatka taka jak:
- Ten widok dokumentu jest pokazany w & Encoding; (wersja: & koTXT-Version; - wymagana: 1.2).
- Informuje to czytelników, które DTD jest obecnie integrowane i może pomóc w rozwiązywaniu problemów z wyświetlaniem.
Przyszłość bytów postaci
Wraz ze stopniowym rozprzestrzenianiem UTF- 8, UTF-16, UCS -2 i UCS-4 w międzynarodowych IT aplikacji, potrzeba znaków kodują wykorzystaniem encji znakowych jest stopniowo maleje . Jednak minie wiele lat, zanim ostatni protokół komunikacyjny i oprogramowanie na świecie będą mogły obsługiwać znaki wielobajtowe bez błędów.
W związku z tym pozostaje potrzeba możliwości powrotu do poziomu us-ascii (7 bitów) dla wymiany za pomocą jednostek numerycznych . Jednak konwersja jest możliwa w obu kierunkach bez strat, pod warunkiem, że nie zostaną naruszone byty ogólne i jeśli w ogóle istnieje określone kodowanie w uniwersalnym zbiorze znaków .
Na dłuższą metę reprezentacja jako nazwana jednostka dobrze zdefiniowanych pojedynczych znaków będzie ważna dla czytania i pisania tekstu źródłowego XML przez redaktorów ludzkich tylko wtedy, gdy znaki występują poza odpowiednim światem językowym (czy to w języku obcym, czy matematycznym). Należy się spodziewać, że w tekście źródłowym do przeglądania i zmiany kodowania z problematycznych zakresów liczbowych zostaną na bieżąco przekonwertowane na nazwane jednostki, a po zapisaniu zostaną ponownie zakodowane na jednostki numeryczne lub bezpośrednio jako znaki.
Schemat nazewnictwa jest wtedy dostępny tylko lokalnie w procesorze i nie przenika na zewnątrz; Oprócz typowych angielskich nazw zdefiniowanych przez SGML, mogą być również wyświetlane niemieckie, francuskie lub rosyjskie nazwy podmiotów.
Nazwane jednostki znakowe były znaczącą i niezbędną koncepcją w SGML w 1986 roku w ówczesnych warunkach. W wolno zmieniających się warunkach i za pomocą przyjaznych dla użytkownika graficznych pomocy wejściowych, taka potrzeba nie istnieje już w nowoczesnych systemach, o ile zdefiniowane są znaki Unicode. Tak jest w przypadku HTML - najpopularniejszej aplikacji.
Standardowe nazwy znaków ISO
- SGML (1986)
-
- litery łacińskie
- isolat1 Dodano łacinę 1
- isolat2 Dodano łacinę 2
- izodia znaki diakrytyczne
- Grafika i symbole
- Isonum Numeryczne i Specjalne Grafiki
- isopub publikowanie (typograficzne)
- Isotech Ogólne Techniczne
- Isobox Box i rysowanie linii
- Dodano symbole matematyczne
- isoamsa Arrow Relations
- operatory binarne isoamsb
- ograniczniki isoamsc
- isoamsn Zanegowane relacje
- isoamso zwyczajny
- isoamsr Relacje
- greckie znaki
- isogrk1 greckie litery
- isogrk2 Monotoniko grecki
- isogrk3 Symbole greckie
- isogrk4 Alternatywne greckie symbole
- Znaki cyrylicy
- isocyr1 rosyjski cyrylica
- isocyr2 Cyrylica nierosyjska
- litery łacińskie
-
Podano jedynie nazwy i opis znaku; Kodowanie można było przypisać dopiero później za pomocą Unicode .
- Definicja na www.w3.org/2003/entities/iso8879doc
- HTML 2 (1995)
-
- Znaki zastępcze dla składni HTML: amp , lt , gt , quot
- Nazwane znaki dla ISO 8859-1 (tj. kody 160 ... 255)
- Ich definicja jest identyczna z SGML: isolat1 (reprezentowana jako
www.w3.org/TR/REC-html40/HTMLlat1.ent
).
- HTML 4 (1999)
- Jak HTML 2, ale definicja 152 dodatkowych kodowań > 255 - do reprezentacji wymagany jest Unicode (UTF-8).
- Definicje dostępne na
- Te adresy URL sprawiają wrażenie, że przeglądarka HTML musiałaby stale ładować definicje z Internetu. To nie tak; standardowe znaki są zakodowane na stałe, wszystkie programy wyświetlające HTML powinny je "znać".
- XML (1998)
- Tylko ogólne jednostki (amp, lt, gt, apos, quot) są wstępnie zdefiniowane jako znaki zastępcze w składni XML.
- Użytkownicy mogą samodzielnie definiować dowolne encje lub integrować ww. DTD z SGML lub HTML.
- XHTML (2000)
- Podobnie jak HTML 4, ale także
'
odziedziczony z XML . - (patrz poniżej )
- MathML
- Zdefiniowano setki znaków specjalnych, takich jak te wymagane do formuł matematycznych. Przeważnie używane są własne nazwy, które są prawie zawsze dłuższe niż te w HTML i SGML.
- XML (2010)
- W latach 2007-2010 zebrano wszystkie nazwy zwyczajowe i połączono w jeden projekt. W DTD 2237 nazw jest mapowanych na kodowania znaków:
- W szczególności uwzględniono SGML (1986) i MathML ; obejmuje to również cały kod HTML. W indywidualnych przypadkach ujednolicono najbardziej praktyczny wariant, w którym różne obrazy istniały na kilku kodach znaków w tym samym celu.
Dla tego samego znaku można użyć wielu nazw:
znaki dziesiętne unicode |
podmiot | definicja |
---|---|---|
168 ¨ U + 00A8 |
„ ” | SGML: izodia |
„ Kropka ” | SGML: izotech | |
„ uml ” | HTML.2, SGML: izodia | |
913 Α U + 0391 |
„ Agr ” | SGML: isogrk1 |
„ Alfa ” | HTML.4 | |
8598 ↖ U + 2196 |
" głupiec " | SGML: isoamsa północno-zachodnia strzałka |
& # x2196; | HTML | |
„ Górna Lewa Strzałka ” | MathML | |
" Nowrow " | MathML |
Ze znaku »Α« nie wynika, czy jest to grecka litera alfa, czy łacińska A.
adnotacja
Czasami pojawia się zarzut, że encje mnemoniczne niepotrzebnie komplikują pracę, ponieważ odpowiednie DTD muszą być uzgodnione i dostarczone i należy od razu wpisać poprawne znaki lub pracować tylko z encjami liczbowymi.
Tylko przykład w SGML: izocyr1 dla porównania:
- □ □ □ □ □ □ □
- & R cy; & u cy; & s cy; & s cy; & k cy; & i cy; & j cy;
- = Ruski
- = & # 1056; & # 1091; & # 1089; & # 1089; & # 1082; & # 1080; & # 1081;
- = & # x0420; & # x0443; & # x0441; & # x0441; & # x043A; & # x0438; & # x0439;
- = Русский
Może być całkiem sensowne automatyczne przekonwertowanie nazwanych jednostek na formę liczbową po edycji i przekazanie ich innym w tym formacie - ale ponowne przedstawienie jednostek liczbowych mnemonicznie przy następnej zmianie przez redaktorów.
Reprezentacja jako byty ma również tę zaletę, że można wyraźnie rozróżnić różne znaki o różnych znaczeniach, które są bardzo podobne w reprezentacji graficznej (np. apostrof, akcent, apostrof, cudzysłowy).
XHTML
XHTML zawiera dokładnie wszystkie definicje z HTML 4.0, aw każdej implementacji wszystkie nazwane encje muszą być znane (i są zwykle zakodowane). Ten dalszy rozwój wpływa na wewnętrzny format i strukturę elementów ( tagów ), ale nie na użyteczny tekst, a nie na encje.
Jednak w połowie lat 2000 pojawiło się coraz więcej problemów w komunikacji z serwerami WWW : nie udostępniają one już dokumentów typu MIME text/html , ale jako application/xml , text/xml i inne. W tym czasie faktycznie prowadziło to do problemów z wyświetlaniem, gdy (starsze) przeglądarki nie rozpoznawały już tekstu jako HTML.
Istnieją również aplikacje XML, które działają z fragmentami tekstu i opierają się na porównywalnych i znanych elementach HTML. Aktualnym i najczęstszym przykładem są pisane kanały RSS - web feed ( news ). Podobnie jak HTML, zawierają one <p> , <span> , <div> oraz <head> / <body> . Tekst źródłowy wygląda więc tak , jakby był HTML. Ponieważ nie jest to w ogóle dokument HTML, nazwane encje nie mogą być używane - chyba że odpowiedni DTD został zintegrowany lub oprogramowanie wyświetlające (głównie przeglądarka internetowa ) nie używa dobrze znanych własnych definicji.
Jednostki parametryczne
Szczególnym przypadkiem w SGML , XML itp. są encje parametryczne . Nie można ich używać w dokumentach, a jedynie w DTD . W przeciwnym razie mają taką samą składnię, ale zamiast &
tam jest %
na początku.
Składnia deklaracji:
<!ENTITY % Name SYSTEM "externe.datei" >
Składnia referencji (wywołanie encji):
%Name;
literatura
- Charles Goldfarb , Priscilla Walmsley: XML w pakiecie Office 2003: Zarządzanie danymi za pomocą programów Word, Excel, FrontPage i InfoPath , Pearson , 2004, ISBN 978-3-8273-2179-4 books.google.de
linki internetowe
- encje HTML
- Unicode, kodowanie, odwołania do znaków numerycznych i encje
- Kodowanie i dekodowanie encji HTML
Indywidualne dowody
- ↑ Goldfarb i in.: XML w Office 2003 , Pearson , 2004, s. 320–322
- ↑ ISO 8879: 1986-10. W: www.din.de. Pobrano 4 grudnia 2016 .
- ↑ Rozszerzalny język znaczników (XML) 1.0 (wydanie piąte). W: www.w3.org. Pobrano 4 grudnia 2016 .
- ↑ www.w3.org/TR/REC-html40/HTMLlat1.ent HTMLlat1.ent ( angielski , ENT) w3.org. Źródło 29 marca 2019.
- ↑ Łatwiejszy do odczytania zasób w sekcji Odwołania do encji znaków w HTML 4 (również W3C ).
- ↑ Ostatnio: 10 kwietnia 2014 r., Rekomendacja W3C. Dokument miał więc status zalecenia.