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
Fre Mai 7 10:33:29 CEST 2004


Hallo Enrico,

Enrico Weigelt wrote:

> Der Loader selbst steckt in article_load_xml.inc, im File xml-escape.inc
> steckt ein kleiner workaround für ein Problem das ich mit expat hab:
> er meckert, daß bestimmte entities nicht definiert sind ... 

ja, Du machst Dir das Leben einfacher, wenn Du Dein XML-Dokument 
(Beispiel war nicht dabei) so beginnst:
<?xml version="1.0" encoding="ISO-8859-1"?>

Damit sagtst Du dem Parser auch, dass er Umlaute verwenden darf 
(natürlich nicht für die Tags aber für die Werte).
Bei UTF-8 musst Du die Zeichen codieren, aber nicht mit HTML-Entities 
sondern z.B. so für "ü" &#252;
Also mit hexadezimalem Unicode-Zeichen. (Oder Du müsstest die Entities 
erst deklarieren, ich weiß aber nicht, ob Expat das verarbeitet.)

BTW: Deine str_replace-Verwendung finde ich etwas eigenartig. Wozu diese 
Verschachtelung. Du kannst doch z.B. $search und $replace beides als 
Array übergeben.

> <snip>
> 
>>Ich fürchte da hat jeder seine eigenen Ansprüche. Sicherlich gibt es da 
>>auch schon fertige Lösungen in XML für die verschiedensten Zwecke. Hast 
>>Du mal recherchiert?
> 
> Nein, dazu bin ich noch nicht gekommen - das eigene Problem geht vor ;-)
> Ich hatte ja erst gedacht, daß ich für verschiene Artikeltypen
> untschiedliche Schemata bräuchte, aber (abgesehen von Bildern) ist es 
> mir bis dato erstmal gelungen, alle meine Erfordernisse in einem einfachen
> Schema unterzubringen. Beispiele siehe Attachement.

Apropos Schema. (siehe Betreff) Bei XML-Schema erwarte ich eine 
Deklaration Deines Dokumenttyps, eben mit "XML Schema"
http://www.w3.org/XML/Schema
Also vorsichtig mit den Begriffen. ;-)

> *schnief*
> Muß eingestehen, daß ich noch nicht wirklich weisß, wie die 
> Namespaces richtig funktionieren.

Es gibt da sicherlich eine Menge Leute, die Dir das besser erklären 
können als ich. Prefixe sind dann sinnvoll, wenn Du mit Elementen oder 
Attributen arbeitest, die sich auf verschiedene Namensräume beziehen.
Wenn Du HTML verwenden willst, könntest Du das natürlich auch so machen 
wie XSLT.
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Damit trennst Du optisch Deine Tags von den HTML-Tags, musst das aber 
wie hier deklarieren.

Ich würde Dir aber eher raten, den HTML-Code stattdessen so zu verpacken:
<artikel_text>
<![CDATA[<p>Ein Absatz in HTML, der in mein Template eingeschleust wird, 
ohne sich mit meiner Artikel-XML zu vermischen</p>]]></artikel_text>

> Ich hatte ja erst gedacht, ich könnte dem Expat einfach sagen, daß 
> er nur alle Tags mit einem bestimmten Prefix ("ARTICLE:") auswerfen und
> alles andere als CDATA behandeln soll. Leider hab ich dazu nix gefunden,
> sodaß ich das dann selbst machen mußte.

Nein, so ist das auch nicht gedacht. s.o.

[...]

> hmm, ich kenne mich mit XML noch nicht wirklich aus. Vielleicht kannst Du
> das ja mal etwas konkretisieren :)

Ich bin da auch noch nicht am Ende meines Weges, aber ich empfehle Dir 
dringend, SelfHTML8 von Stefan Münz herunterzuladen und das XML-Kapitel 
zu lesen. Da ist eingentlich alles so weit zusammengefasst und gut 
erklärt, dass man mit XML arbeiten kann.

>>>Das Ganze wird von meinem Loader in eine einfache, verschachtelte 
>>>Array-Struktur gelegt, mit der ich dann Templates fülle.
>>
>>Man könnte dafür natürlich auch XSLT verwenden. Dann spart man sich den 
>>Umweg über Deinen Loader. ;-)
> 
> Das braucht aber wieder eine entsprechende extension und frißt sicher
> auch 'n bissl Zeit. Außerdem bau ich nunmal generell alles mit patTemplate,
> und da möchte ich nicht noch XSLT dazwischenwerfen.


Wenn es darum geht, aus den Artikeln Webseiten zu machen, muss das ja 
nicht in Echtzeit erfolgen. Du kannst mit Sablotron ja XHTML-Seiten 
generieren und diese dann für den Benutzer bereitstellen. Björn Schotte 
würde dafür XML-Transformer nehmen. ;-)

Als Server-Mensch müsste doch das auch für Dich interessant sein:
http://xml.apache.org/xalan-c/index.html
(Gibt es auch als Java-Version.)

So, jetzt muss ich aber wieder meiner Beschäftigung nachgehen. ;-)

Viele Grüße

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


php::bar PHP Wiki   -   Listenarchive