Signatur
Beschreibung
Eine XML-Verarbeitungsvorschrift (engl. Processing Instruction, kurz PI) ist ein spezielles XML-Konstrukt der Form <?target content?>, das Anweisungen für eine bestimmte Anwendung oder einen Parser enthält. Bekannte Beispiele sind <?xml-stylesheet type="text/css" href="style.css"?> oder PHP-eigene PIs in älteren Architekturen.
xmlwriter_write_pi kombiniert intern die Schritte xmlwriter_start_pi, Inhalt schreiben und xmlwriter_end_pi in einem einzigen Aufruf. Das ist praktisch, wenn der gesamte Inhalt der PI bereits als String vorliegt und keine schrittweise Befüllung nötig ist.
Die Funktion ist Teil der prozeduralen API von XMLWriter. Die objektorientierte Entsprechung lautet $writer->writePi($target, $content). Sie eignet sich überall dort, wo ein wohlgeformtes XML-Dokument programmatisch erzeugt werden soll und Metadaten oder Verarbeitungshinweise eingebettet werden müssen.
Der Rückgabewert ist true bei Erfolg, andernfalls false. Ein Fehler tritt z. B. auf, wenn der angegebene $target-String keinen gültigen XML-Namen darstellt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $writer Pflicht | XMLWriter | Die XMLWriter-Instanz, in deren Ausgabepuffer die Verarbeitungsvorschrift geschrieben wird. |
|
| $target Pflicht | string | Der Zielname der Verarbeitungsvorschrift, z. B. xml-stylesheet oder php. Muss ein gültiger XML-Name sein. |
|
| $content Pflicht | string | Der Inhalt der Verarbeitungsvorschrift, d. h. alles, was zwischen dem Zielnamen und dem schließenden ?> steht. |
Rückgabewert
true zurück, wenn die Verarbeitungsvorschrift erfolgreich in den Puffer geschrieben wurde, andernfalls false.Beispiele
XML-Stylesheet-Verarbeitungsvorschrift einfügen
<?php
$writer = new XMLWriter();
$writer->openMemory();
$writer->startDocument('1.0', 'UTF-8');
// Stylesheet-Verarbeitungsvorschrift schreiben
$writer->writePi('xml-stylesheet', 'type="text/css" href="style.css"');
$writer->startElement('root');
$writer->writeElement('item', 'Hallo Welt');
$writer->endElement();
$writer->endDocument();
echo $writer->outputMemory();
Prozedurale API: Verarbeitungsvorschrift mit xmlwriter_write_pi
<?php
$writer = xmlwriter_open_memory();
xmlwriter_start_document($writer, '1.0', 'UTF-8');
// Prozedurale Variante
$success = xmlwriter_write_pi($writer, 'app-config', 'mode="production" debug="false"');
var_dump($success);
xmlwriter_start_element($writer, 'config');
xmlwriter_write_element($writer, 'version', '2.5');
xmlwriter_end_element($writer);
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
// Wichtig · Fallstricke
Gültiger Zielname: Der $target-Parameter muss ein gültiger XML-Name sein. Die Zeichenfolge xml (in jeder Groß-/Kleinschreibung) ist für das XML-Prolog reserviert und sollte nicht als PI-Zielname verwendet werden, da dies zu ungültigem XML führen kann.
Inhalt ohne ?>: Der $content-String darf die Zeichenfolge ?> nicht enthalten, da dies die PI vorzeitig schließen würde und das erzeugte Dokument nicht mehr wohlgeformt wäre.
OOP vs. prozedural: Ab PHP 8.0 wird die prozedurale Funktion intern auf die XMLWriter-Objektmethode gemappt. Beide Varianten sind funktional äquivalent.