Je suis nouveau sur XML et j'essaie de comprendre les bases. J'ai lu la ligne ci-dessous dans "Learning XML", mais ce n'est toujours pas clair pour moi. Quelqu'un peut-il m'indiquer un livre ou un site Web qui explique clairement ces bases?
De Learning XML:
La déclaration XML décrit certaines des propriétés les plus générales du document, indiquant au processeur XML qu'il lui faut un analyseur XML pour interpréter ce document.
Qu'est-ce que ça veut dire?
Je comprends la partie xml version
- Doc et utilisateur de doc doivent "parler" dans la même version de XML. Mais qu'en est-il de la partie encoding
? Pourquoi est-ce nécessaire?
Pour comprendre l'attribut "encoding", vous devez comprendre la différence entre octets et caractères.
Pensez aux octets comme des nombres entre 0 et 255, alors que les caractères sont des choses comme "a", "1" et "Ä". L'ensemble de tous les caractères disponibles s'appelle un jeu de caractères.
Chaque caractère a une séquence d'un ou plusieurs octets utilisés pour le représenter; Cependant, le nombre exact d'octets et leur valeur dépendent du encodage utilisé et il existe de nombreux encodages différents.
La plupart des codages sont basés sur un ancien jeu de caractères et un codage appelé ASCII qui correspond à un seul octet par caractère (en réalité, seulement 7 bits) et contient 128 caractères, y compris un grand nombre des caractères communs utilisés en anglais américain.
Par exemple, le jeu de caractères ASCII contient 6 caractères représentés par les valeurs 60 à 65.
Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║ Character ║
╠══════╬══════════════║
║ 60 ║ < ║
║ 61 ║ = ║
║ 62 ║ > ║
║ 63 ║ ? ║
║ 64 ║ @ ║
║ 65 ║ A ║
╚══════╩══════════════╝
Dans l'ensemble ASCII complet, la valeur la plus basse utilisée est 0 et la plus haute 127 (les deux sont des caractères de contrôle masqués).
Cependant, une fois que vous commencez à avoir besoin de plus de caractères que ce que ASCII de base fournit (par exemple, des lettres avec des accents, des symboles monétaires, des symboles graphiques, etc.), ASCII ne convient pas et vous avez besoin de quelque chose de plus complet. Vous avez besoin de plus de caractères (un jeu de caractères différent) et d'un codage différent, car 128 caractères ne suffisent pas pour contenir tous les caractères. Certains codages offrent un octet (256 caractères) ou jusqu'à six octets.
Au fil du temps, de nombreux encodages ont été créés. Dans le monde Windows, il existe CP1252, ou ISO-8859-1, alors que les utilisateurs de Linux ont tendance à préférer UTF-8. Java utilise UTF-16 de manière native.
Une séquence de valeurs d'octets pour un caractère dans un codage peut représenter un caractère complètement différent dans un autre codage ou même être invalide.
Par exemple, dans ISO 8859-1, â est représenté par un octet de valeur 226
, alors que dans TF-8 il s'agit de deux octets: 195, 162
. Cependant, dans ISO 8859-1, 195, 162
aurait deux caractères, Ã, ¢ .
Considérez XML comme une séquence de caractères, mais une séquence d'octets.
Imaginons que le système recevant le code XML voit les octets 195, 162
. Comment sait-il quels sont ces caractères?
Pour que le système interprète ces octets en tant que caractères réels (et donc les affiche ou les convertisse en un autre codage), il doit connaître le codage utilisé dans le code XML.
Étant donné que la plupart des codages sont compatibles avec ASCII, dans la mesure où les caractères alphabétiques et les symboles de base disparaissent, dans ce cas, la déclaration elle-même peut s’en tirer en utilisant uniquement les caractères ASCII pour définir le codage. Dans d'autres cas, l'analyseur doit essayer de comprendre le codage de la déclaration. Comme il sait que la déclaration commence par <?xml
, il est beaucoup plus facile de le faire.
Enfin, l’attribut version
spécifie la version XML, qui est actuellement au nombre de deux (voir versions XML de Wikipedia) . Il existe de légères différences entre les versions, de sorte qu’un analyseur XML doit savoir Dans la plupart des cas (pour les anglophones de toute façon), la version 1.0 est suffisante.
Une déclaration XML n'est pas requise dans tous les documents XML; Cependant, les auteurs de documents XHTML sont vivement encouragés à utiliser les déclarations XML dans tous leurs documents. Une telle déclaration est requise lorsque le codage de caractères du document est différent de UTF-8 ou UTF-16 par défaut et qu'aucun codage n'a été déterminé par un protocole de niveau supérieur. Voici un exemple de document XHTML. Dans cet exemple, la déclaration XML est incluse.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Virtual Library</title>
</head>
<body>
<p>Moved to <a href="http://example.org/">example.org</a>.</p>
</body>
</html>
Veuillez vous référer au normes W3 pour XML .
La déclaration de codage identifie le codage utilisé pour représenter les caractères du document.
Plus d'informations sur la déclaration XML ici: http://msdn.Microsoft.com/en-us/library/ms256048.aspx =
Quelqu'un peut-il m'indiquer un livre ou un site Web qui explique clairement ces bases?
Vous pouvez vérifier ceci Tutoriel XML avec des exemples.
Mais qu'en est-il de la partie encodage? Pourquoi est-ce nécessaire?
Le W3C fournit explication à propos de l'encodage:
"Le caractère du document défini pour XML et HTML 4.0 est Unicode (ISO 10646). Cela signifie que les navigateurs HTML et les processeurs XML doivent se comporter comme s'ils utilisaient Unicode en interne. Cela ne signifie toutefois pas que les documents doivent être transmis au format Unicode. Tant que le client et le serveur s'accordent sur le codage, ils peuvent utiliser n'importe quel codage pouvant être converti au format Unicode ... "
Ceci est le XML optionnel préambule.
version="1.0"
signifie qu'il s'agit de la norme XML à laquelle ce fichier est conformeencoding="utf-8"
signifie que le fichier est codé à l'aide du codage Unicode UTF-8