Signatur
Beschreibung
xmlwriter_end_pi() schließt eine XML-Verarbeitungsvorschrift, die zuvor mit xmlwriter_start_pi() geöffnet wurde. Eine Processing Instruction hat die Form <?ziel inhalt?> und dient dazu, anwendungsspezifische Anweisungen direkt in ein XML-Dokument einzubetten – ein bekanntes Beispiel ist die PHP-Öffnungsmarke oder die <?xml-stylesheet?>-Anweisung.
Die Funktion gehört zur prozeduralen Schnittstelle von XMLWriter. Das entsprechende Objekt-Pendant lautet XMLWriter::endPi(). Beide Varianten erzeugen dasselbe Ergebnis; welche Schreibweise verwendet wird, hängt vom bevorzugten Programmierstil ab.
Ein typischer Einsatz ist das Einbetten von Stylesheet-Verweisen oder anderen Metaanweisungen, die von verarbeitenden Programmen (Browsern, XSLT-Prozessoren usw.) ausgewertet werden sollen, ohne den eigentlichen Dateninhalt des XML zu beeinflussen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $writer Pflicht | XMLWriter | Die XMLWriter-Instanz, auf der die Verarbeitungsvorschrift geschlossen werden soll. Diese wird typischerweise durch xmlwriter_open_memory() oder xmlwriter_open_uri() erstellt. |
Rückgabewert
true bei Erfolg zurück, false wenn kein offenes Processing-Instruction-Element vorhanden ist oder ein interner Fehler auftritt.Beispiele
Stylesheet-Verarbeitungsvorschrift in ein XML-Dokument einbetten
<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
// XML-Deklaration
xmlwriter_start_document($writer, '1.0', 'UTF-8');
// Stylesheet-Processing-Instruction
xmlwriter_start_pi($writer, 'xml-stylesheet');
xmlwriter_text($writer, 'type="text/xsl" href="style.xsl"');
xmlwriter_end_pi($writer);
// Root-Element
xmlwriter_start_element($writer, 'root');
xmlwriter_text($writer, 'Inhalt');
xmlwriter_end_element($writer);
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
Objektorientierte Verwendung zum Vergleich
<?php
$writer = new XMLWriter();
$writer->openMemory();
$writer->setIndent(true);
$writer->startDocument('1.0', 'UTF-8');
// PHP-ähnliche Processing Instruction als Beispiel
$writer->startPi('php');
$writer->text('echo "Hallo Welt";');
$writer->endPi(); // entspricht xmlwriter_end_pi($writer)
$writer->startElement('data');
$writer->text('Beispiel');
$writer->endElement();
$writer->endDocument();
echo $writer->outputMemory();
// Wichtig · Fallstricke
Reihenfolge beachten: xmlwriter_end_pi() darf nur aufgerufen werden, nachdem xmlwriter_start_pi() geöffnet wurde. Ein Aufruf ohne vorherige start_pi-Entsprechung führt zur Rückgabe von false und erzeugt kein gültiges XML.
Kein verschachteltes Öffnen: Processing Instructions dürfen nicht ineinander verschachtelt werden. Ebenso darf zwischen xmlwriter_start_pi() und xmlwriter_end_pi() kein weiteres Element geöffnet werden, da dies die XML-Struktur ungültig machen würde.