Für HTML-Dateien sind Leerzeichen nicht wichtig; für XML ist die Standardposition jedoch die Beibehaltung von Leerzeichenknoten (eine Erläuterung der Leerzeichenknoten finden Sie weiter unten).
Laut XML-Spezifikation ist das sogenannte Leerzeichen eine beliebige Kombinationsfolge aus vier Zeichen:
---------------- --- -----
Leerzeichen (Leerzeichen), der entsprechende Zeichenwert ist #x20
Rückgabezeichen (Carriage Return), der entsprechende Zeichenwert ist #xD
Zeilenumbruchzeichen (Newline), Der entsprechende Zeichenwert ist #xA
Tabulatorzeichen (Tab), der entsprechende Zeichenwert ist #x9.
Die Leerzeichen in der XML-Datei bilden auch Knoten, bei denen es sich um Leerzeichenknoten handelt. Raumknoten gehören zum Textknotentyp.
Bei XML und XSLT treten bei Raumknoten zwei Probleme auf:
---------------------------------------
1. Um zu bestimmen, welche Leerzeichen in der XML-Eingabedatei wichtig sind, muss der XSLT-Prozessor diese Leerzeichenknoten sehen. Der Schlüssel zur Entscheidung ist das Attribut xml:space.
2. Bestimmen Sie, welche Leerzeichen in der XSL-Vorlagendatei wichtig sind. Der XSLT-Prozessor sollte sie in den Ergebnisbaum kopieren. Der Schlüssel zur Entscheidung sind die beiden Befehle xsl:strip-space
und xsl:preserve-space.
"Wichtige und unwichtige Raumknoten"
-----------------------------------------
Wenn jemand Der Inhalt einer Komponente kann nur Komponenten enthalten, dann sind die Raumknoten in der Komponente unbedeutend.
Wenn der Inhalt einer Komponente vom Typ #PCDATA ist, sollten die darin enthaltenen Raumknoten als wichtig (signifikant) angesehen werden.
Wenn der Komponenteninhalt eine Mischung aus Textinhalt und Komponenten ist, kann dies nicht beurteilt werden. Dies sollte von der semantischen Bedeutung der Komponente und ihrem Inhalt abhängen.
Bevor der xslt-Prozessor mit der XML-Eingabedatei in Kontakt kommt, wird diese vom XML-Parser analysiert
———————————————— ————————————— ---
(1) Das xml:space-Attribut kann den Modus der Verarbeitung von Space-Knoten durch nachfolgende XML-Anwendungen ändern. Beispielsweise wird der xslt-Prozessor davon beeinflusst das xml:space-Attribut.
(2) Die Endsymbole am Ende einer Spaltenmarkierung oder eines Inhalts in der XML-Datei werden durch ein einzelnes Zeilenumbruchzeichen (#xA) ersetzt.
(3) Bevor der Attributwert an die XML-Anwendung übergeben wird, sollte der XML-Parser auch standardisierte Operationen am Attributwert durchführen. Dies liegt daran, dass verschiedene Betriebssysteme unterschiedliche Kombinationen der Endzeichen jeder Textzeile haben. Beispielsweise endet das Windows-System mit dem Rückgabezeichen und dem neuen Zeilenzeichen, während das Unix-System nur mit der neuen Zeilenzeichengruppe endet
-Symbol. Nachdem der XML-Parser die XML-Datei gelesen hat, ersetzt er zunächst alle Endsymbole durch ein einziges neues Zeilenzeichen. Dies vereinheitlicht nicht nur die Unterschiede im Design verschiedener Endsymbole zwischen verschiedenen Systemen, sondern vereinfacht auch die Bedienungsschwierigkeiten nachfolgender XML-Anwendungen . Einen solchen Vorgang nennt man „Normalisierung“.
a, das Endsymbol jeder Textspalte muss auf ein einzelnes Zeilenumbruchzeichen (#xA) normalisiert werden.
b, jedes Leerzeichen (#x20, #xD, #xA, #x9) sollte durch ein Leerzeichen (#x20) ersetzt werden.
c: Wenn der Attributwert einen Wortparametercode enthält, sollte dieser beispielsweise durch das Referenzzeichen ersetzt werden.
Wird durch Newline-Zeichen (#xA) ersetzt.
d. Wenn der Attributwert eine Entitätsreferenz enthält, sollte er durch seinen Ersetzungstext ersetzt werden.
d. h. alle anderen Zeichen sollten direkt in den normalisierten Attributwert eingefügt werden.
f. Wenn der Attributtyp nicht CDATA ist, sollte der XML-Parser außerdem die Leerzeichenfolge vor und nach dem Attributwert löschen sollte ebenfalls durch ein einzelnes Leerzeichen ersetzt werden.
Nachdem der XSLT-Prozessor den Strukturbaum der XML-Eingabedatei und der XSL-Vorlagendatei erstellt hat, führt er die benachbarten Textknoten in der Komponente zu einem einzelnen Textknoten zusammen und führt dann einige Textknoten zusammen . Wenn der Textknoten jedoch eine der folgenden Bedingungen erfüllt, wird er beibehalten:
-----------------
(1) Die übergeordnete Komponente des Textes Der Knoten ist ein Mitglied des Satzes von Elementnamen, die Leerzeichen erhalten.
(2) Der Textknoten enthält mindestens ein Nicht-Leerzeichen.
(3) In einer Vorfahrenkomponente des Textknotens gibt es ein xml:space-Attribut, dessen Wert erhalten bleibt, und in der aktuellen Vorfahrenkomponente gibt es keinen anderen standardmäßigen xml:space-Attributwert. Andere Textknoten werden entfernt.
Für XSL-Vorlagen ist nur eine xsl:text-Komponente im sogenannten platzerhaltenden Komponentennamensatz verfügbar. Die Raumknoten in der XSL-Vorlagendatei werden gelöscht, aber wenn die Raumknoten in der xsl:text-Komponente erscheinen, bleiben sie erhalten.
Das obige ist der detaillierte Inhalt vonErklären Sie Leerzeichen in XML. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!