Start · Sprachen · PHP · Referenz · xmlwriter_start_dtd_attlist

xmlwriter_start_dtd_attlist

Funktion

Beginnt eine DTD-Attributlistendeklaration (<code>&lt;!ATTLIST</code>) im aktuellen XMLWriter-Dokument.

seit PHP 5.1.2 Kategorie: xml

Signatur

xmlwriter_start_dtd_attlist(XMLWriter $writer, string $name): bool

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

Typ
bool
Beschreibung
Gibt 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);
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE library [ <!ATTLIST book isbn CDATA #REQUIRED lang CDATA #IMPLIED> ]>

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();
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE catalog [ <!ATTLIST item id ID #REQUIRED category CDATA #IMPLIED> ]>

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