DomDocument läßt keine leeren Tags zu

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by kuhbus; 01-02-2007, 19: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

    Comment


    • #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

      Comment

      Working...
      X