phpbar.de logo

Mailinglisten-Archive

[php] 1/2 OT: xml-schema fuer Artikel

[php] 1/2 OT: xml-schema fuer Artikel

Peter Bieling network at media-palette.de
Mon Mai 10 12:30:47 CEST 2004


Enrico Weigelt wrote:

> Deshalb ist es mir auch wichtig, daß die jeweiligen Strukturelemente
> eines Artikels möglichst sauber und einfach modelliert sind und im
> Fließtext sogut wie keine HTML-Tags (abgesehen von ein paar einfachen
> wie STRONG oder CITE) verwendet werden.

in diesem Fall ergibt sich das "mixed-content-Problem", das auch die 
Entwickler von SimpleXML (PHP5) beschäftigt hat.
Dank an Björn Schotte für den Link:
http://www.zend.com/php5/articles/php5-simplexml.php

<zitat>
While SimpleXML is a great tool for processing XML, its simplicity does 
come with a few drawbacks. Most notable among these is that processing 
mixed XML and text content with SimpleXML is very hard. For example, 
consider the following XML


   <?xml version="1.0"?>
   <flaw>
     <blurb>
       This <italic>is</italic> some sample <bold>text</bold> where
       SimpleXML <underline>will</underline> not behave well.
     </blurb>
   </flaw>

Accessing $document->blurb would return an element iterator that 
contained the contents of italic, bold, and underline. It would not, 
however, return the text surrounding those elements. This is because 
when given the choice between mixed elements and contents, SimpleXML 
will always choose to return the elements, and ignore the contents, of a 
particular tag.

SimpleXML has two solutions to this problem built into the library. 
Firstly, a method called asXML() is provided, which will take the given 
node and serialize its contents, as well as the contents of all its 
children(), to either a file or a string. With the example above, you 
would call $document->blurb->asXML() and it would return the full 
contents of the blurb node in a format suitable for printing or further 
processing.[...]
</zitat>

Wenn Du also mit SimpleXML arbeitest, sollte es kein Problem sein, den 
gesamten "Mixed content" als String einzulesen.

Meiner Klasse fehlt diese Möglichkeit zur Zeit noch. Möglich ist nur, 
den kompletten Inhalt eines Elements auszutauschen. Ich denke also, dass 
die nächste Version von XML-line das kann.
Eventuell baue ich auch die Möglichkeit ein, dass man bestimmte Elemente 
einfach ingnoriert, d.h. als String betrachtet.
Technisch am saubersten ist aber wohl die CDATA-Lösung.

Viele Grüße

Peter
-- 
http://www.media-palette.de/tools/xml-line/

php::bar PHP Wiki   -   Listenarchive