!!! Listing 1: expat_beispiel.php "P", "TITLE" => "B", "PARA" => "P" ); // start_element() - wird vom XML-Parser bei öffnenden // Tags aufgerufen function start_element( $parser, $name, $attribute ) { // Umwandlungstabelle in den lokalen Scope holen global $tag_tabelle; // Testen, ob den aktuelle Tag in der Tabelle definiert ist if( isset( $tag_tabelle[ $name ] ) ) { // Öffnenden Tag ausgeben print "<" . $tag_tabelle[ $name ] . ">"; } } // end_element() - wird vom XML-Parser bei schließenden // Tags aufgerufen function end_element( $parser, $name ) { // Umwandlungstabelle in den lokalen Scope holen global $tag_tabelle; // Testen, ob der aktuelle Tag in der Tabelle definiert ist if( isset( $tag_tabelle[ $name ] ) ) { // Schließenden Tag ausgeben print ""; } } // daten() - wird vom XML-Parser für CDATA-Bereiche aufgerufen function daten( $parser, $data ) { // Datenbereich ausgeben print $data; } // Instanz des XML Parsers erzeugen $parser = xml_parser_create(); // Parameter des XML Parsers setzen xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, true ); // Handler für Elemente ( öffnende / schließende Tags ) setzen xml_set_element_handler( $parser, "start_element", "end_element" ); // Handler für Daten ( CDATA ) setzen xml_set_character_data_handler( $parser, "daten" ); // Versuchen, die Datei zu öffnen if (! ( $fp = fopen( "expat_beispiel.xml", "r" ) ) ) { // Fehler -> Ausführung abbrechen die( "XML Fehler: Konnte Datei nicht öffnen." ); } // Datei zeilenweise auslesen while( $data = fread( $fp, 4096 ) ) { // Versuchen, die aktuelle Zeile zu parsen if( !xml_parse( $parser, $data, feof( $fp ) ) ) { // Fehler -> Ausführung abbrechen die( "XML Fehler: " . xml_error_string( xml_get_error_code( $parser ) ) . " in Zeile " . xml_get_current_line_number( $parser ) ); } } // Vom XML-Parser belegten Speicher freigeben xml_parser_free( $parser ); ?> !!! Listing 2: expat_beispiel.xml Absatztitel Absatztext !!! Listing 3: Ausgabe von expat_beispiel.php

Absatztitel

Absatztext

!!! Listing 4: create_article.php
 ... 
$root = $doc->add_root( "article" );

  //  ... 
  $artheader = $root->new_child( "artheader", "" );

  //  ... 
  $art_title = $artheader->new_child( "title", "Ein Artikel in DocBook" );

  //  ... 
  $author = $artheader->new_child( "author", "" );

    //  ... ,  ... 
    $firstname = $author->new_child( "firstname", "Sebastian" );
    $surname = $author->new_child( "surname", "Bergmann" );

  //  ... 
  $sect = $root->new_child( "sect1", "" );

    //  ... 
    $sect_title = $sect->new_child( "title", "Absatzüberschrift" );

    //  ... 
    $sect_para = $sect->new_child( "para", "Absatztext" );

// XML ausgeben
print htmlspecialchars( $doc->dumpmem() );
?>
!!! Listing 5: artikel.xml
Ein Artikel in DocBook Sebastian Bergmann Absatzüberschrift Absatztext
!!! Listing 6: baumdarstellung.php "); print_r($tree); print(""); ?> !!! Listing 7: artikel.xsl <xsl:value-of select="title" /> von <xsl:value-of select="author/firstname" /> <xsl:value-of select="author/surname" />


Absatztitel Absatztext !!! Listing 8: artikel.php !!! Listing 9: Ausgabe von artikel.php Ein Artikel in DocBook von Sebastian Bergmann

Absatztitel
Absatztext

!!! Listing 10: xslt_ob.php