PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : html in xml einbetten


clodetta
10.10.2007, 09:53
hallihallo,
ich hätte da gerne mal ein problem...
und zwar habe ich eine XML-konfigurationsdatei, die so allerlei informationen bereithält...
unter anderem möchte ich darin gerne htmlsource haben, den ich dann entsprechend auslesen und -geben kann...
natürlich bin ich jetzt an dem punkt, an dem ich feststellen muß, daß ich ohne DTD ganz offensichtlich nicht weiterkomme, da der XMLparser sich ganz schoen an den html-tags, im speziellen an den <> zeichen stört.
zudem ist mein aufbau wie folgt...

<HTMLTable>
<ListTemplateTable>
<table width=90% id=foldercontents >
</ListTemplateTable>
<ListTemplateHeader>
<thead>
<tr>
<th width=10% align=left></th>
<th width=55% align=left>Filename</th>
<!--<th width=30% align=right>Size</th>-->
</tr>
</thead>
... weitere folgen

wie man eindeutig sieht, fängt das problem hier schon direkt im ersten element ListTemplateTable auf:
das table-tag wird geöffnet, aber nicht mehr geschlossen, der parser sieht ds nit als HTML sondern will das als gutgeformtes XML ansehen...:rolleyes: und dann kracht´s natürlich....
ich hab jetzt schon mal gesucht -auch hier im forum - bin aber lediglich auf sowas wie das hier gestossen:

<!DOCTYPE HTMLTable [
<!ENTITY lt "<">
<!ENTITY gt ">">
]>

aber da meint er dann wieder
End tag 'ListTemplateTable' does not match the start tag 'table'. Error processing resource
ansonsten war mir noch CDATA ins auge gesprungen, vllt würde das darüber gehen...
aber ich denke, im endeffekt komm ich nicht um ne dtd umhin, oder!?


hmmm.. kann mir jemand einen rat geben, wie die ungefähr aussehen müsste....? würde mich riesig freuen.... :rolleyes: ;)
liebe grüsse,
die clodetta


Scavi
10.10.2007, 11:30
Mit dem C(haracter)DATA-Abschnitten kriegste das hin. Die sind ja speziell dafür da, dass Character nicht als Markup interpretiert werden.

ich hätte da gerne mal ein problem... ...du bist nicht ausgelastet oder ;)

clodetta
10.10.2007, 11:36
hallihallo,
ich habe es jetzt doch noch selbst hingekriegt; allerdings bin ich nicht sicher, ob das die ultimativlösung ist, aber es macht, was es soll und wie ich es will ;)
und zwar hab ich die entsprechenden html-tags in ein CDATA reingelegt...
in dieser form kann man dann tags jedweder art - auch solche, die nicht xml-ordnungsgemäß wieder geschlossen wurden - ins xml-file setzen...
somit wird die "gute lesbarketi" für den endanwender, der über das xml file aussehen und verhalten der seite konfigurieren möchte, erhalten.
schaut mal, wie ich´s davor hatte:

<ListTemplateHeader>
&lt;thead&gt;
&lt;tr&gt;
&lt;th width='10%' align='left'&gt;&lt;/th&gt;
&lt;th width='30%' align='left'&gt;Filename&lt;/th&gt;
&lt;th width='13%' align='left'&gt;Size&lt;/th&gt;
&lt;th width='25%' align='left'&gt;Date created&lt;/th&gt;
&lt;th width='22%' align='left'&gt;Date modified&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
</ListTemplateHeader>

jetzt schaut das ganze so aus:

<ListTemplateHeader>
<![CDATA[<thead>
<tr>
<th width='10%' align='left'></th>
<th width='30%' align='left'>Filename</th>
<th width='13%' align='left'>Size</th>
<th width='25%' align='left'>Date created</th>
<!--<th width='22%' align='left'>Date modified</th>-->
</tr>
</thead>]]>
</ListTemplateHeader>
...usw

und anfängliche bedenken, ich könnte auf den CDATA bereich keine xpath-queries mehr absetzen, haben sich als unbegründet erwiesen...
das hat mich zwar gewundert, aber hochgradig erfreut :D

jo, ich denke, so kann man´s erstmal lassen....
es sei denn, jemand hat eine elegantere und bessere idee, dann bin ich da gerne für zu haben;)

liebe grüsse,
die clodetta

Mit dem C(haracter)DATA-Abschnitten kriegste das hin. Die sind ja speziell dafür da, dass Character nicht als Markup interpretiert werden.

das is ja geil, sozusagen, zeitgleich gepostet. ok, aber wenn du mir auch CDATA empfiehlst, dann schein´ ich ja doch den richtigen weg eingeschlagen zu haben!!! ;)
dank dir trotzdem :)

...du bist nicht ausgelastet oder ;)

;) :)

Scavi
10.10.2007, 11:39
das is ja geil, sozusagen, zeitgleich gepostet. ok, aber wenn du mir auch CDATA empfiehlst, dann schein´ ich ja doch den richtigen weg eingeschlagen zu haben!!! ;)
dank dir trotzdem :) ..yup.

eViL_oNe
11.10.2007, 21:33
öhm -- wäre eine Lösung mit XSL nicht prinzipiell sinnvoller? So wie der gepostete Code aussieht, geht es ja offensichtlich um Templates...

clodetta
11.10.2007, 22:13
hi, eViL_oNe.
nur kürzlich, weil ich auf dem weg ins bett bin und deine antwort grad gesehen hab...;)
wir haben das jetzt so lösen können, daß wir den "template"-teil in´s "wohlgeformte" xml gebracht haben und der parser das dann ohne CDATA "schluckt".
dennoch würde mich die xsl variante interessieren...
was wäre denn so die stichwörter, nach denen ich da hinsichtlich dessen gucken musss...
freue mich über antwort :)
und meld mich morsche wieder....
gutes nächtle - an alle ;)
liebe grüsse,
die clodetta

eViL_oNe
11.10.2007, 22:32
grundsätzlich ist der ansatz so, dass man seine View in XML spezifiziert, und dann eine Umwandlung in (X)HTML mittels XSL macht.

beispiel:

<article>
<title>Beispiel</title>
<description>Eine Beschreibung</description>
</article>

wird mit einer passenden XSL zu

<h1>Beispiel</h1>
<p>Beschreibung</p>


über XSL kann man sich etwa bei SelfHTML informieren: http://de.selfhtml.org/xml/darstellung/index.htm

die Möglichkeiten von XSL gehen weit über CSS hinaus. Es ist durchaus möglich, seinen content ohne Layoutinformationen in XML zu beschreiben und die eigentliche Darstellung auf XSL zu verschieben. Dadurch ist es ohne weiteres möglich, vom gleichen Content unterschiedliche Ausgabeformate (etwa RSS, HTML, LaTeX, RDF, CSV, mit XSL:FO sogar PDF) anzubieten. Apache Cocoon verfolgt etwa diesen Ansatz:

http://cocoon.apache.org/

Scavi
12.10.2007, 08:27
Wenn sie wirklich nur ne Konfgurationsdatei brauch um etwas HTML zu speichern, dann wäre es massiver overhead eine xsl-Transformation einzusetzen.
Vielleicht würde diese etwas übersichtlicher werden, wegen Struktur- und Inhaltstrennung, doch ist dies viel aufwendiger um dies zu erstellen und ausserdem kostet eine Transformation auch Zeit und verbraucht relativ viel RAM.

clodetta
12.10.2007, 12:30
hallöchen, :)
danke euch beiden für eure antworten!!
ich denke, ich tendiere zu Scavi´s aussage:
Bei dem, wofür ich das brauch, wäre xsl vllt doch overhead.
aber die sache mit XSL werd ich mir trotzdem nochmals anschauen, daher:
Danke für die Links, eViL_oNe


liebe grüsse,
die clodetta

eViL_oNe
12.10.2007, 20:25
k -- es gibt da natürlich auch optimierungspotenzial, etwa cachen von xsl-Output. Ich kenne allerdings dein Problem zu wenig, um beurteilen zu können, ob XSL da ein Overhead wäre *g*

clodetta
15.10.2007, 11:06
hallöchen, eViL_oNe
nunja, also es handelt sich dabei um eine ca 5kb große xml-datei in der diverse infos vorliegen.....
also, nix großes, von daher denke ich, müsste es erstmal so gehen... oder ? ;)

liebe grüsse,
die clodetta