mmofacts.com

Doppelte Umwandlung mittels PHP-XSLT

gepostet vor 18 Jahre, 2 Monate von Moogly
Hallo,
ist mir fast schon peinlich, dass ich schon wieder ein Thema eröffnen muss, aber ich habe eine Frage. Ist keine doppelte Umwandlung eines Tags möglich? Hier mal meine XSL:























Hier wird der Tag formfeld und formarea erstellt, am Ende der xsl mache ich:
in der formular.xsl steht dann:








Normalerweise müsste doch eine doppelte Umwandlung möglich sein, denn ganz am Anfang in meiner Probierzeit mit XSL habe ich mal einen Tag gematcht und habe ein eingefügt, dieses musste ich dann ebenfalls matchen, damit es auch wirklich dargestellt wird.
Hoffe mein Problem ist klar?
Gruß
Moo
PS: Bei der Frage, wieso ich diese doppelte Umwandlung machen will, wenn ich nämlich oben statt nehme, wird bei der Ausgabe kein konformes XHTML erzeugt, es steht dann: , hier müsste aber /> stehen.
gepostet vor 18 Jahre, 2 Monate von knalli
Kompletter Unfug.
So, und nun warum.
Erstens, auch wenn im XSL .. steht, heißt das noch lange nicht, das im ErgebnisXML auch das so ist; solange kein Textknoten vorhanden ist, wird das Tag automatisch selbstterminierend.
Also, Beispiel:

text
erzeugt ein mindestens XHTML-wohlgeformtes und mE auch valides Inputfeld ().
Zweitens, XSLT transformiert einen XML-Baum in einen anderen XML-Baum. Mir ist nicht bewusst, dass man "doppelt" transfomieren kann. Heißt nicht, das dies nicht geht, nur habe ich davon noch nichts gehört. Hört sich auch überflüssig an. Wieso sollte man es?
Man kann aus JEDEM Xml JEDES Xml erzeugen, da im Endeffekt alles nur eine Sache des Baums ist. Es gibt theoretisch keine Einschränkungen; das einzige, was mir bisher ungelöst über den Weg kam, das waren dynamische Tagnamen (wahrscheinlich auch nur eine Frage des Wissens).
gepostet vor 18 Jahre, 2 Monate von Moogly

text

dann teste dies doch mal mit dem PHP-XSLT, bei mir wird eben kein /> erzeugt, sondern ein >. Das ist eben mein Problem, deshalb die doppelte Umformung.
Auf was war eigentlich das "Kompletter Unfug" bezogen?
Gruß
Moo
gepostet vor 18 Jahre, 2 Monate von knalli
Das ist Schwachsinn. Aus einem
unbreakable
kommt ganz klar ein
. Macht so natürlich wenig Sinn, nur wenn der Style dynamisch ist.
Du hast als Ausgabe alles korrekt angegeben? XHTML, und Co? Zeig am Besten mal alles.
gepostet vor 18 Jahre, 2 Monate von Moogly
XHTML ist angegeben. Werde evtl. mal Xampp neu draufhauen, das scheint sowieso einen Schatten zu haben.
Wegen doppelter Umformung, habe leider bei Google nichts gefunden, weiß evtl. jemand ob soetwas möglich ist?
Gruß
Moo
gepostet vor 18 Jahre, 2 Monate von Moogly
Ich kriegs nicht hin, hier mal die xsl:

xmlnssl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
utput method="html" indent="yes"/>





































bei mir wird kein /> erstellt
Gruß
Moo
gepostet vor 18 Jahre, 2 Monate von knalli
Kann ich jetzt mal eben nicht nachvollziehen, aber zwei Dinge:
1. Du rufst in gewisserweiße rekursiv Templates auf, IN einem Attribut. Damit schließt du ein, das weitere XML-Knoten (Tags u.a.) in einem XML-Attributknoten erstellt werden können. Das ist Unsinn. Berichtige mich wer, aber das geht nicht. Meines Erachtens geht gem. dem XHTML-Standard auch nicht, das Input mehrere Tagknoten enthält, sondern eben NUR Attributknoten (und diese sind festgelegt).
2. Du verwendest scheinbar Includes falsch: Ein Include ist wie in PHP zu verstehen: Es wird ein XML-Teilbaum in den bestehenden Baum eingehangen, wobei aber zu beachten ist, dass die dort eingefügten Regeln eine niedrige Priorität haben als die im Hauptdokument.
Das gesamte Regelwerk wird dann zur Transformierung genutzt.
Btw: XML sagt, dass alle Attributknotenwerte mit doppelten Anführungszeichen ausgezeichnet werden müssen. Ohne Ausnahme. (siehe bei dir encoding).
gepostet vor 18 Jahre, 2 Monate von Moogly
Hallo knalli,
danke für deine Auflistung meiner Fehler, habe sie mal versucht auszumerzen. Das Problem mit /> habe ich nun auch behoben. Danke nochmal an planetenkiller.
Zu Include)
Nein ich habe es nicht missverstanden, es ist genau so gewollt. Wie kommst du denn darauf, dass ich es missverstanden habe?
Hier die überarbeitete .xsl:

sl="http://www.w3.org/1999/XSL/Transform">
utput method="xml" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>






























Gruß
Moo
gepostet vor 18 Jahre, 2 Monate von knalli

Ist immer noch
--
Wie ich darauf komme? Du willst doch doppeltes transformieren, indem du das zweite Transformieren über das Include machen willst - oder habe ich das falsch verstanden? Das geht eben nicht, weil es keinen Sinn macht.
Und wie eingangs schon gesagt: Doppeltes Transformieren macht imho keinen Sinn, weil man alles direkt machen kann. Ich habe bei mir im System nur einmal eine indirekte Doppeltransformierung durchgeführt: Die statische Datengrundlage (die auch nebenbei publiziert wird) wird per PHP erst in das "Applikations-Xml" transformiert und dann (mit PHP) endgültig mittels dem Haupttemplate in das XHTMl transformiert. Hier war das die einzig sinnvolle Möglichkeit; alternativ müsste ich die Besonderheiten des Speicherformats im Template ablegen, was ich aber für wenig sinnvoll hielt. Und gleich sind beide Formate nicht, da eben das eine semantische Datenstruktur ist, das andere eine Layoutstruktur für eine Anwendung/Dokument.
gepostet vor 18 Jahre, 2 Monate von Moogly
Das wird irgendwie automatisch in umgewandelt.
Die doppelte Transformierung ist nun auch nichtmehr nötig, da ich ja das /> habe. Stimmt, das mit dem Include war eigentlich so gedacht. War aber falsch gedacht!! Nochmals vielen Dank für deine Hilfe :-)
Gruß
Moo
gepostet vor 18 Jahre, 2 Monate von knalli
Dann ist der XSLT Prozessor so intelligent, und verzeiht dir deinen Fehler Aber, um sicherzugehen..
gepostet vor 18 Jahre, 2 Monate von Moogly
Och mensch, ich besser es ja aus !

Auf diese Diskussion antworten