DocBookRenderer.class.php

gehe zur Dokumentation dieser Datei
00001 <?php
00002 
00015 class DocBookRenderer
00016 {
00017      var $linkedObjectIds = array();
00018      var $encodeHtml      = false;
00019           
00020 
00027      function renderElement( $child )
00028      {
00029           global $conf;
00030           
00031           $attr = array();
00032           $val  = '';
00033           $praefix = '';
00034           $suffix  = '';
00035           $empty   = false;
00036 
00037           switch( strtolower(get_class($child)) )
00038           {
00039                case 'tableofcontentelement':
00040                     $tag = 'toc';
00041                     break;
00042 
00043                case 'rawelement':
00044                     $tag = '';
00045                     $val = $child->src;
00046                     
00047                     break;
00048 
00049                case 'textelement':
00050                     $tag = 'para';
00051 
00052                     $val = $child->text;
00053                     $val = Text::encodeHtml( $val );
00054                     $val = Text::replaceHtmlChars( $val );
00055                     break;
00056 
00057                case 'footnoteelement':
00058                     $tag = 'footnote';
00059                     break;
00060 
00061                case 'codeelement':
00062                     
00063                     $tag = 'emphasis';
00064                     $attr['role'] = 'code';
00065                     break;
00066 
00067                case 'quoteelement':
00068                     $tag = 'blockquote';
00069                     break;
00070 
00071 
00072                case 'paragraphelement':
00073                     $tag = 'para';
00074                     break;
00075 
00076                case 'speechelement':
00077                     $tag = 'citiation';
00078                     break;
00079 
00080                case 'linebreakelement':
00081                     $tag   = '';
00082                     $val   = "\n";
00083                     break;
00084 
00085                case 'linkelement':
00086                     $tag = 'ulink';
00087                     $attr['url'] = htmlspecialchars($child->getUrl());
00088                     break;
00089 
00090                case 'imageelement':
00091                     $empty       = true;
00092                     $tag = 'graphic';
00093                     $attr['fileref'] = $child->getUrl();
00094                     break;
00095 
00096                case 'strongelement':
00097                     $tag = 'emphasis';
00098                     $attr['role'] = 'strong';
00099                     break;
00100 
00101                case 'emphaticelement':
00102                     $tag = 'emphasis';
00103                     $attr['role'] = 'italic';
00104                     break;
00105 
00106                case 'insertedelement':
00107                     $tag = 'emphasis';
00108                     $attr['role'] = 'inserted';
00109                     break;
00110 
00111                case 'removedelement':
00112                     $tag = 'emphasis';
00113                     $attr['role'] = 'removed';
00114                     break;
00115 
00116                case 'headlineelement':
00117                     $tag = 'chapter'; // $child->level ?
00118                     
00119                     $l = new LinkElement();
00120                     $l->name = $child->getName();
00121                     $child->children[] = $l;
00122                     
00123                     break;
00124 
00125                case 'tableelement':
00126                     $tag = 'table';
00127                     break;
00128 
00129                case 'tablelineelement':
00130                     $tag = 'row';
00131                     break;
00132 
00133                case 'definitionlistelement':
00134                     $tag = 'variablelist';
00135                     break;
00136 
00137                case 'definitionitemelement':
00138                     if   ( !empty($child->key) )
00139                     {
00140                          $tag = 'listitem';
00141                          $val = $child->key;
00142                     }
00143                     else
00144                     {
00145                          $tag = 'term';
00146                     }
00147                     break;
00148 
00149                case 'tablecellelement':
00150                     //if ( $child->isHeading )
00151                     $tag = 'entry';
00152                     break;
00153 
00154                case 'listelement':
00155                     $tag = 'itemizedlist';
00156                     break;
00157                     
00158                case 'teletypeelement':
00159                     $tag = 'emphasis';
00160                     $attr['role'] = 'code';
00161                     break;
00162                     
00163                case 'numberedlistelement':
00164                     $tag = 'orderedlist';
00165                     break;
00166                     
00167                case 'listentryelement':
00168                     $tag = 'listitem';
00169                     break;
00170 
00171                default:
00172                     
00173                     $tag = 'unknown-element';
00174                     $attr['class'] = strtolower(get_class($child));
00175                     break;
00176           }                   
00177 
00178           $val .= $praefix;
00179           foreach( $child->children as $c )
00180           {
00181                $val .= $this->renderElement( $c );
00182           }
00183 
00184           $val .= $suffix;
00185           return $this->renderXmlElement($tag,$val,$empty,$attr);
00186           
00187      }
00188 
00189 
00190 
00200      function renderXmlElement( $tag,$value,$empty,$attr=array() )
00201      {
00202           global $conf;
00203           if   ( $tag == '' )
00204                return $value;
00205                
00206           $val = '<'.$tag;
00207           foreach( $attr as $attrName=>$attrInhalt )
00208           {
00209                $val .= ' '.$attrName.'="'.$attrInhalt.'"';
00210           }
00211           
00212           if   ( $value == '' && $empty )
00213           {
00214                $val .= ' />';
00215                return $val;
00216           }
00217           
00218           $val .= '>'.$value.'</'.$tag.'>';
00219           return $val;
00220      }
00221 
00222      
00223      
00229      function render()
00230      {
00231           $this->renderedText = '';
00232           $this->renderedText .= '<?xml version="1.0" encoding="UTF-8" ?>';
00233           $this->renderedText .= '<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">';
00234           
00235           foreach( $this->children as $child )
00236                $this->renderedText .= $this->renderElement( $child );
00237 
00238           return $this->renderedText;
00239      }
00240 }
00241 
00242 ?>

Erzeugt am Thu May 14 00:55:49 2009 für OpenRat von  doxygen 1.5.8