Start · Sprachen · PHP · Referenz · xmlwriter_end_dtd_attlist

xmlwriter_end_dtd_attlist

Funktion

Beendet eine DTD-Attributliste und schreibt das schließende <code>&gt;</code>-Zeichen in den XMLWriter-Ausgabepuffer.

seit PHP 5.1.2 Kategorie: xml

Signatur

xmlwriter_end_dtd_attlist(XMLWriter $writer): bool

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

Typ
bool
Beschreibung
Gibt 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);
<!DOCTYPE root [ <!ATTLIST page id ID #REQUIRED> ]>

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);
<!DOCTYPE catalog [ <!ATTLIST book isbn CDATA #REQUIRED lang NMTOKEN "de"> <!ATTLIST author role CDATA #IMPLIED> ]>

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