Hallo,
habe mich heute etwas mit XSL Dateien beschäftigt und habe ein Versuch an einem vorgegebenem Code orientiert gestartet.
Hier mal die index.xml:
Hallo Welt! TEST
Die dazugehörige style.xsl
xmlnssl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/TR/REC-html40">
utput method="html"/>
Laut meiner Meinung habe ich nun für den TAG im XSL-Template festgelegt, dass der Inhalt fett ausgegeben wird. Im IE klappt das auch, nur mein FF Beta 2 stellt das nicht fett da. Habe ich etwas falsch gemacht, oder stimmt das so?
Gruß
Moo
XSL-Template FF-Darstellungsproblem
gepostet vor 18 Jahre, 4 Monate von Moogly
gepostet vor 18 Jahre, 4 Monate von Tetha
Warum wendest du denn im Template fuer den Tag nochmals alle Templates an?
Ich denke, du willst da eher sowas haben:
MfG
Ich denke, du willst da eher sowas haben:
MfG
gepostet vor 18 Jahre, 4 Monate von Moogly
Naja, aber meine Methode muss doch auch gehen? Im IE und Opera klappts ja. Hat der FF hier einen Bug?!
Gruß
Moo
Gruß
Moo
gepostet vor 18 Jahre, 4 Monate von knalli
Was sagt FF 1.5? Wenn dort richtig, ist es Bug - und sollte evtl gemeldet werden
gepostet vor 18 Jahre, 4 Monate von Tetha
Das scheint wirklich ein Bug zu sein, Knalli.
Ich hab das grade zum eine mal durch meinen xslt-anwender in PHP gejagt und der ersetzt den Tag ebenfalls korrekt, auch wenn ich den in statt umbenenne, zum anderen hab ich grade nochmal geguckt, wie xsl:apply-templates genau funktioniert (es wendet halt die Templates auf alle child-nodes des aktuellen Knotens an, da sollte bei "test" halt nix matchen und test einfach ausgegeben weden)
MfG
Ich hab das grade zum eine mal durch meinen xslt-anwender in PHP gejagt und der ersetzt den Tag ebenfalls korrekt, auch wenn ich den in statt umbenenne, zum anderen hab ich grade nochmal geguckt, wie xsl:apply-templates genau funktioniert (es wendet halt die Templates auf alle child-nodes des aktuellen Knotens an, da sollte bei "test" halt nix matchen und test einfach ausgegeben weden)
MfG
gepostet vor 18 Jahre, 4 Monate von Moogly
Knalli: Bei mir wird es im FF 1.5. ebenfalls nicht angezeigt!
Gruß
Moo
Gruß
Moo
gepostet vor 18 Jahre, 4 Monate von knalli
Also, ich habe mir das mal angeguckt. Tatsache ist, das der Firefox es ersetzt! Man schaue es sich im Liveinspector an, und überzeuge sich selbst. Das Problem ist, dass er den Tag nicht fett darstellt.
Ich habe jetzt mal XHTML genommen, damit funktionierts.
xmlnssl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="html">
utput method="html" indent="yes"/>
Titel
Ich würde bei XSL sowieso XHTML empfehlen; denn du müsstest sowieso mindestens XHTML Transitional als Ausgabe verwenden, denn das kommt mindestens raus.
Ausgabe
TEST
Ich habe jetzt mal XHTML genommen, damit funktionierts.
xmlnssl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="html">
utput method="html" indent="yes"/>
Titel
Ich würde bei XSL sowieso XHTML empfehlen; denn du müsstest sowieso mindestens XHTML Transitional als Ausgabe verwenden, denn das kommt mindestens raus.
Ausgabe
TEST
gepostet vor 18 Jahre, 4 Monate von Moogly
Naja, ich will aber das reine XML ein wenig austesten. Also hab ich da keinen Fehler gemacht, sondern FF hat einen Bug?!
Gruß
Moo
Gruß
Moo
gepostet vor 18 Jahre, 4 Monate von knalli
Original von Moogly
Naja, ich will aber das reine XML ein wenig austesten. Also hab ich da keinen Fehler gemacht, sondern FF hat einen Bug?!
Gruß
Moo
Keine Ahnung. HTML 4 zählt definitiv nicht zu einer Sollausgabe, wenn du mich fragen würdest. Ob das jetzt durch XSL aber wirklich ausgeschlossen ist, oder ein "Feature" vom Firefox ist, weiß ich nicht.
Scheinbar scheint es mit XHTML aber zu funktionieren, und da die Ausgabe eh XHTML ist (auch wenn man was anderes deklariert)..
gepostet vor 18 Jahre, 4 Monate von Moogly
Okay, dann werde ich eben XHTML nehmen müssen.
Danke für eure Hilfe!
Gruß
Moo
Danke für eure Hilfe!
Gruß
Moo
gepostet vor 18 Jahre, 4 Monate von knalli
Original von Moogly
Okay, dann werde ich eben XHTML nehmen müssen.
Danke für eure Hilfe!
Gruß
Moo
Daraus schließe ich, dass dir da was Wissen fehlt: XSLT ist ein Transform-Processor, welcher ein XML in ein anderes XML umwandelt (über die "Baumgeschichte", Stichwort Graphentheorie).
Und es gibt derzeit nur 3 Standards für HTML, die XML sind: 2 nennenswerte XHTML 1.0 und der XHTML 1.1
Wenn ich es mir recht überlege.. HTML 4 wäre sogar falsch; denn dort dürfen keine sich selbst terminierende Tags wie
auftauchen; bei XSL MÜSSEN die da sein (und werden uU automatisch erstellt). Wenn du im XSL schreibst:
wird in der Ausgabe daraus
.
gepostet vor 18 Jahre, 4 Monate von Moogly
Mhm, ich habe hier eine Seite, da wird das wie an meinem Beispiel gemacht. Ist diese Aussage also falsch?
Gruß
Moo
Gruß
Moo
gepostet vor 18 Jahre, 4 Monate von knalli
Original von Moogly
Mhm, ich habe hier eine Seite, da wird das wie an meinem Beispiel gemacht. Ist diese Aussage also falsch?
Gruß
Moo
Hm.. also HTML 4 Strict (das einzige, was mir jetzt einfallen würde) ist aber doch auch nicht XML-tauglich, oder? Was sagt HTML 4 denn zu
? Weil das ist neben hr und img ein Knackpunkt; wenn das in HTML 4 nicht gültig ist (und das würde ich jetzt mal meinen), dann ist HTML 4 in XSL Kappes; sonst.. naja, eigentlich auch
Wenn du auf XSL setzt, würde ich auf jeden Fall alles in XML machen.. und damit auch das HTML. Und ich meine damit jetzt auch richtiges XHTML, also 1.0 Strict oder 1.1 (das ist Strict). Du musst dich ja auch nur einmal da reinarbeiten und ein Template erstellen; danach kümmert dich das ja nicht mehr, weil du dann eh immer alles valid hast.
gepostet vor 18 Jahre, 4 Monate von Moogly
Jo, ich arbeite mich ja zurzeit rein. Theoretisch ist es ja möglich, einfach mit neune XSL Files ein komplett neues Design zu gestalten, oder? So hab ich mir das jedenfalls vorgestellt, als Templateersatz. Nun muss ich nur mal gucken wie das mit der Geschwindigkeit aussieht.
Eine Frage hab ich noch und zwar, du benutzt doch sicher eigene Tags, oder? Schreibst du dann auch jedesmal, wenn du eigene Tags benutzt, eine DTD und ein Schemata, damit der Inhalt der Tags etc. genau festgelegt ist? Dadurch könnte man ja theoretisch die meisten Sicherheitslücken schließen, oder?
Mist sind doch zwei Fragen
Gruß
Moo
Eine Frage hab ich noch und zwar, du benutzt doch sicher eigene Tags, oder? Schreibst du dann auch jedesmal, wenn du eigene Tags benutzt, eine DTD und ein Schemata, damit der Inhalt der Tags etc. genau festgelegt ist? Dadurch könnte man ja theoretisch die meisten Sicherheitslücken schließen, oder?
Mist sind doch zwei Fragen
Gruß
Moo
gepostet vor 18 Jahre, 4 Monate von knalli
Ja, ich habe eine eigene XML-Notation entworfen (quasi ein eigenes Applications-XML):
Unterschlupf von knallilein
knalli
322
1
text
preview
Willkommen in deinem Unterschlupf, knallilein der Ädmin Betä Cheatä!
usw.
Diverse Layoutelemente sind eben vordefiniert. Einige wenige Tags (b und strong zu strong, i und em zu em, a, image zu img) werden "durchgeschleift; der Rest wird aus "meiner" Logik dann im XSL in das XHTML übersetzt.
Eine eigene DTD oder XSD habe ich nicht entworden, aus den folgenden Gründen:
- jetzt nicht ganz praktikabel, weil ich nicht ganz systematisch vorgegangen bin, sondern dann erweitere, wenn ich etwas erweitern muss (kommt jetzt sehr sehr selten vor, bei den ersten Scripts öfetrs),
- ist das nur etwas für das ego, weil:
- nicht notwendig
Eine XSD oder eine DTD ist nur (ausschließlich) zur Validierung notwendig; evtl gibt es Editoren, die aus einem Schema eine "mögliche" Gestaltung als Assistenen geben können, aber in der Regel kann man mit einem Schema/Deflist wenig anfangen. Die Frage ist vor allem, wofür?
Wenn du anderen Leuten auch die Möglichkeit geben willst, über deine XSL Seiten anzuzeigen, die dann umstandslos in dein Template übertragen werden, dann ist eine solche Validierung sinnvoll; im geschlossenen System deiner "Templateengine" halte ich das aber für sinnlos. Es hat eben keinen Einfluss darauf.
Ein Beispiel ist der Doctype der HTMLs: Durch die Angabe wird das HTML auch nicht schöner; der einzige Unterschied ist hier (besonders), dass der Browser den Doctype selber erkennt und ggf in einen anderen Modus schaltet. Mit dem Doctype selber hat das nur nicht viel zu tun.
Unterschlupf von knallilein
knalli
322
1
text
preview
Willkommen in deinem Unterschlupf, knallilein der Ädmin Betä Cheatä!
usw.
Diverse Layoutelemente sind eben vordefiniert. Einige wenige Tags (b und strong zu strong, i und em zu em, a, image zu img) werden "durchgeschleift; der Rest wird aus "meiner" Logik dann im XSL in das XHTML übersetzt.
Eine eigene DTD oder XSD habe ich nicht entworden, aus den folgenden Gründen:
- jetzt nicht ganz praktikabel, weil ich nicht ganz systematisch vorgegangen bin, sondern dann erweitere, wenn ich etwas erweitern muss (kommt jetzt sehr sehr selten vor, bei den ersten Scripts öfetrs),
- ist das nur etwas für das ego, weil:
- nicht notwendig
Eine XSD oder eine DTD ist nur (ausschließlich) zur Validierung notwendig; evtl gibt es Editoren, die aus einem Schema eine "mögliche" Gestaltung als Assistenen geben können, aber in der Regel kann man mit einem Schema/Deflist wenig anfangen. Die Frage ist vor allem, wofür?
Wenn du anderen Leuten auch die Möglichkeit geben willst, über deine XSL Seiten anzuzeigen, die dann umstandslos in dein Template übertragen werden, dann ist eine solche Validierung sinnvoll; im geschlossenen System deiner "Templateengine" halte ich das aber für sinnlos. Es hat eben keinen Einfluss darauf.
Ein Beispiel ist der Doctype der HTMLs: Durch die Angabe wird das HTML auch nicht schöner; der einzige Unterschied ist hier (besonders), dass der Browser den Doctype selber erkennt und ggf in einen anderen Modus schaltet. Mit dem Doctype selber hat das nur nicht viel zu tun.
gepostet vor 18 Jahre, 4 Monate von Moogly
Aber gehen wir mal von einem Tag aus, den man sich entworfen hat. Wäre es hier nicht sinnvoll, mittels DTD erst festzulegen, dass dieser Tag nicht leer sein darf und dann mittels Schemata festzulegen, dass der Inhalt aus einer Zeichenfolge einem @ einer weiterem Zeichenfolge einem Punkt und einem 2-3 Buchstaben String zusammengesetzt sein muss?
Das gleiche könnte man mit etc. machen?
Ich verstehe zwar, dass man es selber nicht benötigt, da man ja weiß welcher Inhalt in ein Tag darf und welcher nicht, aber wenn man jetzt z.B. Daten anzeigt die vom Client kommen, könnte man durch solche Schemata und DTDs einem Sicherheitsrisiko aus dem Weg gehen, oder sehe ich das falsch?
Gruß
Moo
Das gleiche könnte man mit etc. machen?
Ich verstehe zwar, dass man es selber nicht benötigt, da man ja weiß welcher Inhalt in ein Tag darf und welcher nicht, aber wenn man jetzt z.B. Daten anzeigt die vom Client kommen, könnte man durch solche Schemata und DTDs einem Sicherheitsrisiko aus dem Weg gehen, oder sehe ich das falsch?
Gruß
Moo
gepostet vor 18 Jahre, 4 Monate von knalli
Das der Tag nicht leer sein darf, kann aber nur ein entsprechender XML-Validator überprüfen. Das XSL kann das nicht checken. Du musst im XSL eher dafür sorgen, dass, sofern plz leer ist, eine Alternative angezeigt wird. Sonst kommt da ein leerer Tag.
Also Zum beispiel
Deine Adresse ist
therwise>
keine PLZ hinterlegt
therwise>
Also Zum beispiel
Deine Adresse ist
therwise>
keine PLZ hinterlegt
therwise>
gepostet vor 18 Jahre, 4 Monate von Moogly
Jo, aber das meinte ich nicht, ich meinte schon in der XML checken lassen ob alles stimmt, falls etwas nicht mit der Vorgabe übereinstimmt, wird eben ein Fehler von der Schemata angezeigt, oder habe ich das falsch verstanden?
Gruß
Moo
Gruß
Moo
gepostet vor 18 Jahre, 4 Monate von knalli
Ja.. weil Schema und DTD nichts mit der Integrität von XML zu tun haben, sondern ob es valide ist. Du kannst also einen Validator installieren (ka, ob es sowas für bsp. PHP gibt), und die XML-Datei checken. Aber XSL ist nur für die Transformation von XML-Baum1 in XML-Baum2 verantwortlich/zu gebrauchen.
gepostet vor 18 Jahre, 4 Monate von Moogly
Ich glaube da gab es einen Validator von MS oder so, aber der hat Probleme mit XInclude soweit ich weiß! Mal sehen, ich lass die DTD und das Schemata einfach erstmal weg
Und jetzt leg ich mir mal eine Grundstruktur an, die ich für meinen nächsten kleinen BG-Versuch nutzen kann! Danke für deine Hilfe knalli!
Gruß
Moo
Und jetzt leg ich mir mal eine Grundstruktur an, die ich für meinen nächsten kleinen BG-Versuch nutzen kann! Danke für deine Hilfe knalli!
Gruß
Moo
gepostet vor 18 Jahre, 4 Monate von woodworker
DTD's sind eh veraltet
XSD ist das neue DTD
XSD ist das neue DTD
gepostet vor 18 Jahre, 4 Monate von knalli
Original von woodworker
DTD's sind eh veraltet
XSD ist das neue DTD
Und XML-Schemas sind XSD. Also, was genau meinst du?
gepostet vor 18 Jahre, 4 Monate von schokofreak
Woodie hat da recht.
Zusätzlich: Wird in einem XML ein Schema spezifiziert, so wird das XML auch validiert.
Sprich spart euch das ganze rumüberlegen, wie ihr die Validierung hinkriegt. Einfach Schema spezifizieren und das wars. Der Rest geschieht automatisch.
Zusätzlich: Wird in einem XML ein Schema spezifiziert, so wird das XML auch validiert.
Sprich spart euch das ganze rumüberlegen, wie ihr die Validierung hinkriegt. Einfach Schema spezifizieren und das wars. Der Rest geschieht automatisch.
gepostet vor 18 Jahre, 4 Monate von knalli
Hä? Womit hat wer recht?
XSD ist eine Definition über XML in XML, das sog. XML-Schema. DTD ist die Defintion in dem Typegedöns, nur eben älter als XSD und nicht so objektorientiert wie XSD. Beides kann man zur Validierung nutzen. Hat aber auch beides nichts mit XSL zu tun.
Es ist also egal, ob man DTD oder XSD nimmt, denn XSL validiert eben nicht.
Was die prinzipielle Validierung angeht.. das geht mit beiden automatisch.
XSD ist eine Definition über XML in XML, das sog. XML-Schema. DTD ist die Defintion in dem Typegedöns, nur eben älter als XSD und nicht so objektorientiert wie XSD. Beides kann man zur Validierung nutzen. Hat aber auch beides nichts mit XSL zu tun.
Es ist also egal, ob man DTD oder XSD nimmt, denn XSL validiert eben nicht.
Was die prinzipielle Validierung angeht.. das geht mit beiden automatisch.