mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 19.04.2024 11:06 Benutzername: Passwort: Auto-Login

Thema: xpat php vom 06.02.2006


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> xpat php
Seite: 1, 2  Weiter
Autor Nachricht
Account gelöscht
Threadersteller


Ort: -
Alter: -
Verfasst Mo 06.02.2006 00:28
Titel

xpat php

Antworten mit Zitat Zum Seitenanfang

kann man dem xml parser ivm der funktion xml_parse_into_struct() latin-1 entities beibringen?
 
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Mo 06.02.2006 11:34
Titel

Antworten mit Zitat Zum Seitenanfang

Ja. Evtl. über Umwege. Was klappt denn nicht?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
Account gelöscht
Threadersteller


Ort: -
Alter: -
Verfasst Mo 06.02.2006 11:47
Titel

Antworten mit Zitat Zum Seitenanfang

Äh Parsefehler "unbekannte entität"?
 
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Mo 06.02.2006 11:49
Titel

Antworten mit Zitat Zum Seitenanfang

Code bitte.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Account gelöscht
Threadersteller


Ort: -
Alter: -
Verfasst Mo 06.02.2006 11:57
Titel

Antworten mit Zitat Zum Seitenanfang

naja das wird dir aber auch nicht helfen. ich machs mal abgekürzt:

Code:



        // DEBUG:
        // replacing & for avoiding undeclared entity error
        // $str = str_replace("&", "&", $str);

   // converting into unicode
        // $str = utf8_encode($str);

        // ordenary parser creation, namespaces are located by script
        $p = xml_parser_create();
       
        // no whitespace, no case folding
        xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, false);
        xml_parser_set_option($p, XML_OPTION_SKIP_WHITE, true);
       
        // building xml tree
        if (!xml_parse_into_struct($p, $str, $val)) {
            echo "<div style=\"color:red; font-weight:bold; background:black;\" class=\"error\">parse-error " . xml_get_error_code($p) . ": " . xml_error_string(xml_get_error_code($p)) . " in line " . xml_get_current_line_number($p)
             . "</div>";
            die();
        }
        xml_parser_free($p);

        $this->xml = $val;



ne XML-Datei die Fehler liefert, sieht so aus:

Code:
<?xml version="1.0"?>
<porn>
   <facial>&ouml;</facial>
</porn>



Lustigerweise wird aus dem Error ne Warning, wenn ich nen Doctype angebe. Dabei ist es aber latte, ob der Pfad zur DTD stimmt, der Parser ignoriert die (er validiert ja auch nicht, muss er auch gar nicht). Aber egal ob Fehler oder Warnung, er verweigert ab der Stelle so oder so seinen Dienst.


Zuletzt bearbeitet von am Mo 06.02.2006 11:59, insgesamt 2-mal bearbeitet
 
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Mo 06.02.2006 12:09
Titel

Antworten mit Zitat Zum Seitenanfang

Du musst dem Parser erklären, wie er mit den Entities umzugehen hat. Also mit namepsaces arbeiten.
Code:
<?xml version="1.0"?>
     <porn xmlns="http://www.w3.org/1999/xhtml">
         <facial>&ouml;</facial>
</porn>


Siehe dazu
http://de.php.net/manual/en/function.xml-parser-create-ns.php
http://de.php.net/manual/en/function.xml-set-start-namespace-decl-handler.php
oder
http://de.php.net/manual/en/function.xml-set-unparsed-entity-decl-handler.php
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Account gelöscht
Threadersteller


Ort: -
Alter: -
Verfasst Mo 06.02.2006 12:16
Titel

Antworten mit Zitat Zum Seitenanfang

Nee klappt nicht, hab ich schon versucht. Ich schreibs ja eh direkt in nen Array, somit fallen die Callbackfunctionen schonmal raus. Und den Namespace ignoriert er. Viel schlimmer: Verwende ich xml_parser_create_ns(), so schneidet der mir (un)sinnigerweise einfach meine Namespaceprefixe ab...


//
ich brauch die präfixe halt, weil ich meine templates damit verwurschtle

Code:
<?xml version="1.0"?>
<tpl:template>
<tpl:doctype name="xhtml 1.0" mode="transitional"/>
<tpl:html>
<head>
   <tpl:content label="content2"/>
    <tpl:title>optimusprime
      <tpl:menuLevel>
         <tpl:menuEntries>
            <tpl:isVisited>
               <tpl:menuLevel>
                  <tpl:menuEntries>
                     <tpl:isVisited>
                        / {sys:$menuTitle}
                        <tpl:menuLevel>
                           <tpl:menuEntries>
                              <tpl:isVisited>
                                  / {sys:$menuTitle}
                              </tpl:isVisited>
                           </tpl:menuEntries>
                        </tpl:menuLevel>
                     </tpl:isVisited>
                  </tpl:menuEntries>
               </tpl:menuLevel>
            </tpl:isVisited>
            <tpl:isSelected>
               / {sys:$menuTitle}
            </tpl:isSelected>
         </tpl:menuEntries>
      </tpl:menuLevel>
   </tpl:title>
    <tpl:meta/>
    <link rel="stylesheet" href="all.css" type="text/css" media="all" />
    <link rel="stylesheet" href="special.css" type="text/css" media="all" />
   <link rel="stylesheet" href="sIFR-screen.css" type="text/css" media="screen" />
   <link rel="stylesheet" href="sIFR-print.css" type="text/css" media="print" />
   <script src="sifr.js" type="text/javascript"></script>
   <script src="sifr-addons.js" type="text/javascript"></script>
</head>
<body>
   <div style="display:inline"><a id="top"></a></div>
   <div id="mainnavi">
      <!-- root -->
      <tpl:menuLevel>
         <tpl:menuEntries>
         <h1><tpl:a><span>{sys:$menuTitle}</span></tpl:a></h1>
            <!-- 1. Level -->
            <tpl:menuLevel>
               <ul>
                  <tpl:menuEntries>

                     <li>
                        <tpl:a>{sys:$menuTitle} </tpl:a>
                     </li>
                  </tpl:menuEntries>

               </ul>

            </tpl:menuLevel>
         </tpl:menuEntries>
      </tpl:menuLevel>
   </div>
   <div id="subnavi">
      <tpl:menuLevel>
         <tpl:menuEntries>
            <tpl:menuLevel>

               <tpl:menuEntries>
                  <tpl:isVisited>
                     <tpl:menuLevel>
                        <tpl:hasChilds>
                           <ul>
                              <tpl:menuEntries>
                                 <li><tpl:a class="mainnavi_{sys:$menuTitle}"><span>{sys:$menuTitle}</span></tpl:a></li>
                              </tpl:menuEntries>
                           </ul>
                           <p>&amp;nbsp;</p>
                        </tpl:hasChilds>
                     </tpl:menuLevel>

                  </tpl:isVisited>

               </tpl:menuEntries>
            </tpl:menuLevel>
         </tpl:menuEntries>
      </tpl:menuLevel>
      <ul>
         <li><tpl:a id="impressum">{sys:$menuTitle}</tpl:a></li>
      </ul>
      <div id="googleads">
         <script type="text/javascript">
         //&lt;![CDATA[
            google_ad_client = "pub-1799851216784292";
            google_ad_width = 120;
            google_ad_height = 240;
            google_ad_format = "120x240_as";
            google_ad_type = "text";
            google_ad_channel ="";
            google_color_border = "2D2922";
            google_color_bg = "13100E";
            google_color_link = "FFFFFF";
            google_color_url = "8D8573";
            google_color_text = "FFFFFF";
         //]]&gt;
         </script>
         <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
      </div>
   </div>
   <div id="content">
      <h2>{sysg:$pageTitle}</h2>
        <tpl:content label="content1"/>
    </div>
    <div id="sidebar">
      <tpl:content label="content3"/>
      <tpl:content label="content4"/>
      <tpl:content label="content5"/>
   </div>
   <div id="footer" style="clear:left;">
      <hr/>
        <h3>Verantwortlich i. S. d. Presserechts:</h3>
      <address>Johannes Heinen
      Königstraße 257
      47798 Krefeld</address>
      <p>Alle Inhalte dieser Seiten sowie Verweise auf fremde Ressourcen werden sorgfältig geprüft.
      Falls ihr trotzdem etwas zu beanstanden habt, schreibt mir doch bitte eine
      E-Mail, bevor ihr mir ne Abmahnung schickt. Ich bin Student -> Bei mir is eh nix zu holen ;).</p>
      <p>Benutzt einfach das Formular am rechten Seitenrand.</p>
   </div>
   <script type="text/javascript">
   //&lt;![CDATA[
   /* Replacement calls. Please see documentation for more information. */

      if(typeof sIFR == "function"){
         sIFR.replaceElement(named({sSelector:"h2", sFlashSrc:"baskerville.swf", sColor:"#FBF9F3", sLinkColor:"#FBF9F3", sBgColor:"none", sHoverColor:"#999999", nPaddingTop:0, nPaddingBottom:0, sWmode:"transparent", sFlashVars:""}));
         sIFR.replaceElement(named({sSelector:"#mainnavi li", sFlashSrc:"baskerville.swf", sColor:"#FBF9F3", sLinkColor:"#FBF9F3", sBgColor:"none", sHoverColor:"#999999", nPaddingTop:0, nPaddingBottom:0, sWmode:"transparent", sFlashVars:""}));
      };
   //]]&gt;
   </script>
</body>
</tpl:html>
</tpl:template>


Zuletzt bearbeitet von am Mo 06.02.2006 12:25, insgesamt 2-mal bearbeitet
 
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Mo 06.02.2006 12:29
Titel

Antworten mit Zitat Zum Seitenanfang

Was ist mit DOM oder SimpleXML?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.