Signatur
Beschreibung
xmlwriter_end_dtd_attlist() schließt eine zuvor mit xmlwriter_start_dtd_attlist() geöffnete DTD-Attributliste ab. Die Funktion schreibt das abschließende >-Zeichen der <!ATTLIST …>-Deklaration in den internen Puffer des XMLWriter-Objekts.
DTD-Attributlisten (ATTLIST) beschreiben in einer Document Type Definition (DTD), welche Attribute ein bestimmtes XML-Element haben darf, welchen Typ sie haben und welche Standardwerte gelten. Sie werden typischerweise innerhalb eines DTD-Abschnitts erzeugt, der mit xmlwriter_start_dtd() begonnen wurde.
Die Funktion wird in der prozeduralen API von XMLWriter verwendet; in der objektorientierten API steht die Methode XMLWriter::endDtdAttlist() zur Verfügung, die dasselbe Ergebnis liefert.
Nachdem xmlwriter_end_dtd_attlist() aufgerufen wurde, kann eine neue Attributliste für ein anderes Element geöffnet oder der DTD-Abschnitt mit xmlwriter_end_dtd() beendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $writer Pflicht | XMLWriter | Das XMLWriter-Objekt (in der prozeduralen API), das zuvor mit xmlwriter_open_memory() oder xmlwriter_open_uri() erstellt wurde. |
Rückgabewert
true zurück, wenn die DTD-Attributliste erfolgreich geschlossen wurde, oder false bei einem Fehler (z. B. wenn keine offene Attributliste vorhanden ist).Beispiele
DTD-Attributliste für ein Element definieren
<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_set_indent_string($writer, ' ');
// DTD starten
xmlwriter_start_dtd($writer, 'root', null, null);
// Attributliste für das Element 'page' starten
xmlwriter_start_dtd_attlist($writer, 'page');
// Ein DTD-Attribut hinzufügen: id vom Typ ID, Required
xmlwriter_write_dtd_attlist($writer, 'page', 'id ID #REQUIRED');
// Attributliste beenden
xmlwriter_end_dtd_attlist($writer);
// DTD beenden
xmlwriter_end_dtd($writer);
echo xmlwriter_output_memory($writer);
Mehrere Attributlisten in einem DTD-Abschnitt
<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_set_indent_string($writer, ' ');
xmlwriter_start_dtd($writer, 'catalog', null, null);
// Erste Attributliste
xmlwriter_start_dtd_attlist($writer, 'book');
xmlwriter_write_dtd_attlist($writer, 'book', 'isbn CDATA #REQUIRED lang NMTOKEN "de"');
xmlwriter_end_dtd_attlist($writer);
// Zweite Attributliste
xmlwriter_start_dtd_attlist($writer, 'author');
xmlwriter_write_dtd_attlist($writer, 'author', 'role CDATA #IMPLIED');
xmlwriter_end_dtd_attlist($writer);
xmlwriter_end_dtd($writer);
echo xmlwriter_output_memory($writer);
// Wichtig · Fallstricke
Reihenfolge beachten: xmlwriter_end_dtd_attlist() darf nur aufgerufen werden, wenn zuvor xmlwriter_start_dtd_attlist() aufgerufen wurde und die Attributliste noch nicht geschlossen ist. Ein nicht passendes Schließen kann zu ungültigem XML oder einem Rückgabewert false führen.
In der objektorientierten API lautet das Äquivalent $writer->endDtdAttlist(). Beide Varianten sind funktional identisch.