Signatur
Beschreibung
xmlwriter_start_dtd_attlist() öffnet eine DTD-Attributlistendeklaration (<!ATTLIST ...>) für das angegebene Element. Sie wird verwendet, um innerhalb einer Document Type Definition (DTD) die erlaubten Attribute eines XML-Elements zu deklarieren.
Nach dem Aufruf dieser Funktion können mit xmlwriter_write_dtd_attlist_entry() einzelne Attributdefinitionen hinzugefügt werden. Die Deklaration muss abschließend mit xmlwriter_end_dtd_attlist() geschlossen werden.
Diese Funktion ist nützlich, wenn ein vollständig valides XML-Dokument mit eingebetteter DTD erzeugt werden soll, z. B. für den Austausch mit Systemen, die DTD-Validierung erfordern. Die prozedurale Variante nimmt das XMLWriter-Objekt als ersten Parameter entgegen; es gibt auch eine objektorientierte Methode XMLWriter::startDtdAttlist().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $writer Pflicht | XMLWriter | Die XMLWriter-Instanz, auf der die Deklaration geöffnet wird. |
|
| $name Pflicht | string | Der Name des XML-Elements, für das die Attributliste deklariert wird (z. B. 'book'). |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. wenn der Writer nicht korrekt initialisiert wurde oder die Funktion außerhalb eines DTD-Blocks aufgerufen wird).Beispiele
Einfache DTD-Attributlistendeklaration
<?php
$writer = xmlwriter_open_memory();
xmlwriter_set_indent($writer, true);
xmlwriter_set_indent_string($writer, ' ');
xmlwriter_start_document($writer, '1.0', 'UTF-8');
// DTD-Bereich beginnen
xmlwriter_start_dtd($writer, 'library', null, null);
// Attributliste für das Element 'book' beginnen
xmlwriter_start_dtd_attlist($writer, 'book');
// Einzelne Attribute zur Attributliste hinzufügen
xmlwriter_write_dtd_attlist_entry($writer, 'isbn', 'CDATA', '#REQUIRED');
xmlwriter_write_dtd_attlist_entry($writer, 'lang', 'CDATA', '#IMPLIED');
// Attributliste schließen
xmlwriter_end_dtd_attlist($writer);
// DTD schließen
xmlwriter_end_dtd($writer);
xmlwriter_end_document($writer);
echo xmlwriter_output_memory($writer);
Objektorientierte Verwendung mit XMLWriter-Klasse
<?php
$writer = new XMLWriter();
$writer->openMemory();
$writer->setIndent(true);
$writer->setIndentString(' ');
$writer->startDocument('1.0', 'UTF-8');
$writer->startDtd('catalog');
// Attributliste für 'item' beginnen
$writer->startDtdAttlist('item');
$writer->writeDtdAttlistEntry('id', 'ID', '#REQUIRED');
$writer->writeDtdAttlistEntry('category', 'CDATA', '#IMPLIED');
$writer->endDtdAttlist();
$writer->endDtd();
$writer->endDocument();
echo $writer->outputMemory();
// Wichtig · Fallstricke
Reihenfolge beachten: xmlwriter_start_dtd_attlist() muss innerhalb eines geöffneten DTD-Blocks aufgerufen werden (nach xmlwriter_start_dtd()). Ein Aufruf außerhalb führt zu einem Fehler oder unerwartetem Verhalten.
Abschluss nicht vergessen: Jeder Aufruf von xmlwriter_start_dtd_attlist() muss mit einem entsprechenden xmlwriter_end_dtd_attlist() abgeschlossen werden, um ein wohlgeformtes XML-Dokument zu erzeugen.
Die DTD-Validierung ist in modernen Anwendungen weniger gebräuchlich; für neue Projekte sind XML-Schema (XSD) oder RELAX NG oft die bevorzugten Alternativen.