webentwicklung-frage-antwort-db.com.de

Bedeutung von - <? Xml version = "1.0" encoding = "utf-8"?>

Ich bin neu in XML und versuche, die Grundlagen zu verstehen. Ich habe die folgende Zeile in "XML lernen" gelesen, aber es ist mir immer noch nicht klar. Kann mich jemand auf ein Buch oder eine Website verweisen, die diese Grundlagen klar erklärt?

Von XML lernen:

Die XML-Deklaration beschreibt einige der allgemeinsten Eigenschaften des Dokuments und teilt dem XML-Prozessor mit, dass zur Interpretation dieses Dokuments ein XML-Parser erforderlich ist.

Was bedeutet das?

Ich verstehe das xml version part - sowohl doc als auch der Benutzer von doc sollten in derselben XML-Version "sprechen". Aber was ist mit dem Teil encoding? Warum ist das notwendig?

88
XML Boy

Um das Attribut "Kodierung" zu verstehen, müssen Sie den Unterschied zwischen Bytes und Zeichen verstehen.

Stellen Sie sich Bytes als Zahlen zwischen 0 und 255 vor, während Zeichen Dinge wie "a", "1" und "Ä" sind. Die Menge aller verfügbaren Zeichen wird Zeichensatz genannt.

Jedes Zeichen hat eine Folge von einem oder mehreren Bytes, mit denen es dargestellt wird. Die genaue Anzahl und der Wert der Bytes hängen jedoch von der verwendeten Kodierung ab, und es gibt viele verschiedene Kodierungen.

Die meisten Kodierungen basieren auf einem alten Zeichensatz und einer Kodierung mit dem Namen ASCII). Dies ist ein einzelnes Byte pro Zeichen (tatsächlich nur 7 Bits) und enthält 128 Zeichen, einschließlich vieler in den USA gebräuchlicher Zeichen Englisch.

Hier sind beispielsweise 6 Zeichen im Zeichensatz ASCII, die durch die Werte 60 bis 65 dargestellt werden.

Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║  Character   ║
╠══════╬══════════════║
║  60  ║      <       ║
║  61  ║      =       ║
║  62  ║      >       ║
║  63  ║      ?       ║
║  64  ║      @       ║
║  65  ║      A       ║
╚══════╩══════════════╝

In der vollständigen Menge ASCII) ist der niedrigste verwendete Wert Null und der höchste Wert 127 (beide sind ausgeblendete Steuerzeichen).

Wenn Sie jedoch mehr Zeichen benötigen als die Basis-Zeichen ASCII) (z. B. Buchstaben mit Akzenten, Währungssymbolen, Grafiksymbolen usw.), ASCII ist nicht geeignet und Sie benötigen etwas Ausführlicheres. Sie benötigen mehr Zeichen (einen anderen Zeichensatz) und Sie benötigen eine andere Codierung, da 128 Zeichen nicht für alle Zeichen ausreichen. Einige Codierungen bieten ein Byte (256 Zeichen) oder mehr auf sechs Bytes.

Im Laufe der Zeit wurden viele Codierungen erstellt. In der Windows-Welt gibt es CP1252 oder ISO-8859-1, während Linux-Benutzer UTF-8 bevorzugen. Java verwendet nativ UTF-16.

Eine Folge von Bytewerten für ein Zeichen in einer Codierung kann für ein völlig anderes Zeichen in einer anderen Codierung stehen oder sogar ungültig sein.

Beispielsweise wird in ISO 8859-1 â durch ein Byte des Werts 226 Dargestellt. , während in UTF-8 zwei Bytes sind: 195, 162. In ISO 8859-1 wäre 195, 162 Jedoch zwei Zeichen Ã, ¢ .

Stellen Sie sich XML nicht als Folge von Zeichen, sondern als Folge von Bytes vor.

Stellen Sie sich vor, das System, das das XML empfängt, sieht die Bytes 195, 162. Woher weiß es, welche Charaktere das sind?

Damit das System diese Bytes als tatsächliche Zeichen interpretieren (und sie so anzeigen oder in eine andere Codierung konvertieren kann), muss es die in XML verwendete Codierung kennen.

Da die meisten gängigen Codierungen mit ASCII kompatibel sind, was grundlegende alphabetische Zeichen und Symbole angeht, kann die Deklaration selbst nur die Zeichen ASCII= verwenden, um anzugeben, wie die Codierung lautet In anderen Fällen muss der Parser versuchen, die Kodierung der Deklaration herauszufinden. Da bekannt ist, dass die Deklaration mit <?xml Beginnt, ist dies viel einfacher.

Schließlich gibt das Attribut version die XML-Version an, von der es derzeit zwei gibt (siehe Wikipedia-XML-Versionen . Es gibt geringfügige Unterschiede zwischen den Versionen, daher muss ein XML-Parser dies tun Wissen, womit es zu tun hat. In den meisten Fällen (für englischsprachige Benutzer) ist Version 1.0 ausreichend.

112
rghome

Eine XML-Deklaration ist nicht in allen XML-Dokumenten erforderlich. Autoren von XHTML-Dokumenten wird jedoch dringend empfohlen, in allen Dokumenten XML-Deklarationen zu verwenden. Eine solche Deklaration ist erforderlich, wenn die Zeichenkodierung des Dokuments nicht die Standardkodierung UTF-8 oder UTF-16 ist und von einem übergeordneten Protokoll keine Kodierung ermittelt wurde. Hier ist ein Beispiel für ein XHTML-Dokument. In diesem Beispiel ist die XML-Deklaration enthalten.

<?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>

Bitte beachten Sie die W3-Standards für XML .

20
Pavan

Die Codierungsdeklaration gibt an, welche Codierung zur Darstellung der Zeichen im Dokument verwendet wird.

Weitere Informationen zur XML-Deklaration finden Sie hier: http://msdn.Microsoft.com/en-us/library/ms256048.aspx =

3
robasta

Kann mich jemand auf ein Buch oder eine Website verweisen, die diese Grundlagen klar erklärt?

Sie können dies überprüfen XML Tutorial mit Beispielen.

Aber was ist mit dem Codierungsteil? Warum ist das notwendig?

W3C bietet Erklärung zum Kodieren:

"Der Dokumentzeichensatz für XML und HTML 4.0 ist Unicode (auch bekannt als ISO 10646). Dies bedeutet, dass sich HTML-Browser und XML-Prozessoren so verhalten sollten, als ob sie intern Unicode verwenden würden. Dies bedeutet jedoch nicht, dass Dokumente in Unicode übertragen werden müssen. Solange sich Client und Server auf die Codierung einigen, können sie jede Codierung verwenden, die in Unicode konvertiert werden kann ... "

2
O.Badr

Dies ist die XML-Präambel optional.

  • version="1.0" bedeutet, dass dies der XML-Standard ist, dem diese Datei entspricht
  • encoding="utf-8" bedeutet, dass die Datei mit der UTF-8-Unicode-Codierung codiert wird
2
Oded