Signatur
Beschreibung
xmlwriter_start_attribute() öffnet ein Attribut mit dem angegebenen Namen im zuletzt gestarteten XML-Element. Nach dem Aufruf dieser Funktion kann der Attributwert mit xmlwriter_text() oder xmlwriter_write_raw() gesetzt und das Attribut anschließend mit xmlwriter_end_attribute() geschlossen werden. Alternativ bietet xmlwriter_write_attribute() eine kombinierte Funktion zum Schreiben eines vollständigen Attributs in einem Schritt.
Diese Funktion ist dann sinnvoll, wenn der Attributwert dynamisch zusammengesetzt wird oder aus mehreren Schritten besteht, da sie das explizite Öffnen und Schließen des Attributs erlaubt. Sie gehört zur prozeduralen API von XMLWriter und arbeitet auf einem zuvor mit xmlwriter_open_memory() oder xmlwriter_open_uri() erstellten Writer-Handle.
Attribute müssen nach dem Öffnen des zugehörigen Elements, jedoch vor dem Hinzufügen von Kindelementen oder Text-Inhalten gesetzt werden. Der Attributname muss ein gültiger XML-Name sein; ungültige Namen führen zu einem Rückgabewert false.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $writer Pflicht | XMLWriter | Das XMLWriter-Handle, das zuvor mit xmlwriter_open_memory() oder xmlwriter_open_uri() erstellt wurde. |
|
| $name Pflicht | string | Der Name des Attributs. Muss ein gültiger XML-Name sein (z. B. href, class, data-id). |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. ungültiger Attributname oder falsche Schreibreihenfolge).Beispiele
Attribut schrittweise schreiben
<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_start_document($writer, '1.0', 'UTF-8');
xmlwriter_start_element($writer, 'link');
// Attribut manuell öffnen, Wert schreiben, schließen
xmlwriter_start_attribute($writer, 'href');
xmlwriter_text($writer, 'https://example.com');
xmlwriter_end_attribute($writer);
xmlwriter_start_attribute($writer, 'title');
xmlwriter_text($writer, 'Beispiel-Link');
xmlwriter_end_attribute($writer);
xmlwriter_end_element($writer);
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
Vergleich mit xmlwriter_write_attribute
<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_start_document($writer, '1.0', 'UTF-8');
xmlwriter_start_element($writer, 'img');
// Kurzform für einfache Attributwerte
xmlwriter_write_attribute($writer, 'src', 'logo.png');
// Langform, wenn der Wert dynamisch zusammengesetzt wird
$prefix = 'img';
$id = 42;
xmlwriter_start_attribute($writer, 'id');
xmlwriter_text($writer, $prefix . '-' . $id);
xmlwriter_end_attribute($writer);
xmlwriter_end_element($writer);
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
// Wichtig · Fallstricke
Reihenfolge beachten: xmlwriter_start_attribute() darf nur aufgerufen werden, nachdem ein Element mit xmlwriter_start_element() geöffnet wurde, aber bevor Textinhalt oder Kindelemente hinzugefügt werden. Eine falsche Schreibreihenfolge führt zu ungültigem XML oder einem Fehler.
Namespace-Attribute: Für Attribute mit Namespace-Präfix steht xmlwriter_start_attribute_ns() zur Verfügung.
Der Attributname darf keine Leerzeichen oder reservierten XML-Zeichen enthalten. Ungültige Namen werden von der Funktion abgelehnt (false-Rückgabe).