Start · Sprachen · PHP · Referenz · xmlwriter_end_pi

xmlwriter_end_pi

Funktion

Beendet eine zuvor geöffnete XML-Verarbeitungsvorschrift (Processing Instruction) und schreibt das schließende <code>?&gt;</code>.

seit PHP 5.1.2 Kategorie: xml

Signatur

xmlwriter_end_pi(XMLWriter $writer): bool

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

Typ
bool
Beschreibung
Gibt 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);
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="style.xsl"?> <root>Inhalt</root>

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();
<?xml version="1.0" encoding="UTF-8"?> <?php echo "Hallo Welt";?> <data>Beispiel</data>

// 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.