DomDocument läßt keine leeren Tags zu

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • DomDocument läßt keine leeren Tags zu

    hallo!

    ich erstelle einen XML baum mit DomDocument.
    PHP-Code:
    ...
    $head .= "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
    ... 
    der wird dann eingebettet ...

    PHP-Code:
        function embed($what$where) {

                
    $content = new DOMDocument('1.0''utf-8');    
                
    $content->preserveWhiteSpace true;
                
    $content->validateOnParse true;    
                
    $content->loadXML($what);
                foreach (
    $content->documentElement->childNodes as $item) {
                    
    $this->template->getElementById($where)->appendChild(
                        
    $this->template->importNode($itemtrue)
                    );
        } 
    (kann sein, dass die klammern ned stimmen, habs gschwind kopiert)
    dieser XML baum wird an anderer Stelle per XSLT processor transormiert.

    PHP-Code:
        function renderXHTML() {
            if (empty(
    $this->xml_content)) {
                
    $this->renderXML();
            }
            
            
    $xml = new DOMDocument('1.0''utf-8');
            
    $xml->loadXML($this->xml_content);

            
    $xsl = new DOMDocument('1.0''utf-8');
            
    $xsl->load($this->xsl_stylesheet);
            
            
    $proc = new XSLTProcessor;
            
    $proc->importStyleSheet($xsl);
            
            
    $this->xhtml_content $proc->transformToXML($xml);
            
        } 

    das problem ist, dass am ende des tages "leere" tags wie meta in der form <meta ...> im sourcecode stehen und die seite deshalb nicht validieren.

    irgendwie entscheidet der Dom processor, dass er das schliessende /> ruhig wegwerfen kann

    PHP 5.0.4
    Zuletzt geändert von kuhbus; 01.02.2007, 18:17.

  • #2
    es hat damit was zu tun:

    am schluß schiesse ich die page raus mit:
    PHP-Code:
    echo $this->a->saveHTML
    wenn ich das ändere in:

    PHP-Code:
    echo $this->a->saveXML
    dann stimmen zwar die tag-schliesser, aber dafür wird die seite gar nicht angezeigt (nur im quelltext sieht man was) wegen der XML declaration usw.......

    hmmmm

    Kommentar


    • #3
      hallo,

      mache am besten mal Test Ausgaben, und zwar würde ich bei der Funktion renderXHTML() einmal das xml ausgeben bevor du es in ein DomDocument lädst, und einmal nacher mit echo $xml->saveXML();exit();

      Und noch ein kleiner Tipp: Falls du die XSL-Transformationen bei jedem Seiten Aufruf machst, empfehle ich, das xml mit strings zusammen zu bauen. Dann erst wenn du es transformieren willst, in ein DomDocument laden, das spart Performance, denn wenn du viele Elemente per DomDocument + appendChild einfügst, braucht das zeit.
      Onlie Browsergame: http://www.war-of-empire.de <-- 2. Weltkrieg

      Kommentar

      Lädt...
      X