Jestem nowy w XML i próbuję zrozumieć podstawy. Przeczytałem poniższy wiersz w „Learning XML”, ale nadal nie jest to dla mnie jasne. Czy ktoś może wskazać mi książkę lub stronę internetową, która jasno wyjaśnia te podstawy?
Z Learning XML :
Deklaracja XML opisuje niektóre z najbardziej ogólnych właściwości dokumentu, informując procesor XML, że potrzebuje parsera XML do interpretacji tego dokumentu.
Co to znaczy?
Rozumiem xml version
część - zarówno dokument, jak i użytkownik dokumentu powinni „rozmawiać” w tej samej wersji XML. Ale co z tą encoding
częścią? Dlaczego jest to konieczne?
Odpowiedzi:
Aby zrozumieć atrybut „encoding”, musisz zrozumieć różnicę między bajtami a znakami .
Pomyśl o bajtach jako o liczbach od 0 do 255, podczas gdy znaki to takie rzeczy jak „a”, „1” i „Ę”. Zestaw wszystkich dostępnych znaków nazywany jest zestawem znaków .
Każdy znak ma sekwencję jednego lub więcej bajtów, które są używane do jego reprezentacji; jednak dokładna liczba i wartość bajtów zależy od zastosowanego kodowania i istnieje wiele różnych kodowań.
Większość kodowań opiera się na starym zestawie znaków i kodowaniu zwanym ASCII, które zawiera jeden bajt na znak (w rzeczywistości tylko 7 bitów) i zawiera 128 znaków, w tym wiele typowych znaków używanych w amerykańskim angielskim.
Na przykład tutaj jest 6 znaków w zestawie znaków ASCII, które są reprezentowane przez wartości od 60 do 65.
W pełnym zestawie ASCII najniższa używana wartość to zero, a najwyższa 127 (oba to ukryte znaki sterujące).
Jednak gdy zaczniesz potrzebować więcej znaków niż zapewnia podstawowy ASCII (na przykład litery z akcentami, symbole walut, symbole graficzne itp.), ASCII nie jest odpowiednie i potrzebujesz czegoś bardziej rozbudowanego. Potrzebujesz więcej znaków (inny zestaw znaków) i potrzebujesz innego kodowania, ponieważ 128 znaków nie wystarcza, aby zmieścić wszystkie znaki. Niektóre kodowania oferują jeden bajt (256 znaków) lub do sześciu bajtów.
Z biegiem czasu powstało wiele kodowań. W świecie Windows istnieje CP1252 lub ISO-8859-1, podczas gdy użytkownicy Linuksa preferują UTF-8. Java natywnie używa UTF-16.
Jedna sekwencja wartości bajtów dla znaku w jednym kodowaniu może oznaczać zupełnie inny znak w innym kodowaniu, a nawet może być nieprawidłowa.
Na przykład, w ISO 8859-1 , Â jest reprezentowany przez jeden bajt wartości
226
, podczas gdy w UTF-8 to dwa bajty:195, 162
. Jednak w ISO 8859-1 ,195, 162
byłyby dwie postacie, a, ¢ .Pomyśl o XML nie jako o sekwencji znaków, ale o sekwencji bajtów.
Wyobraź sobie, że system odbierający XML widzi bajty
195, 162
. Skąd wie, jakie to postacie?Aby system mógł zinterpretować te bajty jako rzeczywiste znaki (a więc wyświetlić je lub przekonwertować na inne kodowanie), musi znać kodowanie używane w XML.
Ponieważ większość typowych kodowań jest kompatybilna z ASCII, jeśli chodzi o podstawowe znaki alfabetu i symbole, w takich przypadkach sama deklaracja może uciec z użyciem tylko znaków ASCII do określenia kodowania. W innych przypadkach parser musi spróbować ustalić kodowanie deklaracji. Ponieważ wie, że deklaracja zaczyna się od
<?xml
, jest o wiele łatwiejsza do zrobienia.Na koniec
version
atrybut określa wersję XML, której obecnie są dwie (zobacz wersje XML Wikipedii . Istnieją niewielkie różnice między wersjami, więc parser XML musi wiedzieć, z czym ma do czynienia. W większości przypadków (dla języka angielskiego głośniki i tak), wersja 1.0 jest wystarczająca.źródło
Deklaracja XML nie jest wymagana we wszystkich dokumentach XML; jednakże autorzy dokumentów XHTML są zdecydowanie zachęcani do używania deklaracji XML we wszystkich swoich dokumentach. Taka deklaracja jest wymagana, gdy kodowanie znaków dokumentu jest inne niż domyślne UTF-8 lub UTF-16 i żadne kodowanie nie zostało określone przez protokół wyższego poziomu. Oto przykład dokumentu XHTML. W tym przykładzie dołączona jest deklaracja XML.
Proszę zapoznać się ze standardami W3 dla XML .
źródło
To jest opcjonalna preambuła XML .
version="1.0"
oznacza, że jest to standard XML zgodny z tym plikiemencoding="utf-8"
oznacza, że plik jest zakodowany przy użyciu kodowania UTF-8 Unicodeźródło
Więcej na temat deklaracji XML tutaj: http://msdn.microsoft.com/en-us/library/ms256048.aspx
źródło
Możesz sprawdzić ten samouczek XML z przykładami.
W3C podaje wyjaśnienie dotyczące kodowania:
źródło
Deklaracja XML w mapie dokumentu składa się z następujących elementów:
To jest obowiązkowe. Chociaż liczba ta może ulec zmianie w przyszłych wersjach XML, wersja 1.0 jest wersją bieżącą.
Deklaracja kodowania,
To jest opcjonalne. Jeśli jest używana, deklaracja kodowania musi pojawić się bezpośrednio po informacji o wersji w deklaracji XML i musi zawierać wartość reprezentującą istniejące kodowanie znaków.
źródło