Hallo allerseits,
seit neuem beschaeftige ich mich auch mit XML/XSLT und hab auch schon ein bisschen was gemacht damit (Homepage: http://www.xsebbi.de). So, nun ist da auf der HP oben diese Navigationsleiste mit den Links. Das war so wie es jetzt ist recht einfach gemacht.
In der .xml-Datei: <menu />
Und die .xsl Datei hat passend dazu das gehabt: <xsl:template match="menu"> <tr align="center"> <td> </td> <td colspan="2"> navigation >> <a href="index.html">| home |</a> <a href="linux.html">| Linux |</a> <a href="physics.html">| physics for linux |</a> <a href="links.html">| links |</a> <a href="contact.html">| contact |</a> </td> </tr> </xsl:template>
Nur gefaellt mir das so wie es jetzt ist, nicht so ganz. Der aktive Link (die Seite aus der Liste, die aufgerufen wurde) soll irgendwie hervorgehoben sein. Fettgedruckt meinetwegen.
Nun faellt mir aber nicht ein, wie man solch ein Problem loesen koennte. Hat jemand von euch sowas aehnliches schonmal geloest??
Danke erstmal, Sebastian
Hi,
* Sebastian Roth [04/04/02 22:17:09] wrote:
In der .xml-Datei:
<menu />
Und die .xsl Datei hat passend dazu das gehabt: <xsl:template match="menu"> <tr align="center"> <td> </td> <td colspan="2"> navigation >> <a href="index.html">| home |</a> <a href="linux.html">| Linux |</a> <a href="physics.html">| physics for linux |</a> <a href="links.html">| links |</a> <a href="contact.html">| contact |</a> </td> </tr> </xsl:template>
Nur gefaellt mir das so wie es jetzt ist, nicht so ganz. Der aktive Link (die Seite aus der Liste, die aufgerufen wurde) soll irgendwie hervorgehoben sein. Fettgedruckt meinetwegen.
Nun faellt mir aber nicht ein, wie man solch ein Problem loesen koennte. Hat jemand von euch sowas aehnliches schonmal geloest??
Jein. Ich mache das persoenlich zwar anders, aber du koenntest die HTML-Dateien per Skript nachbearbeiten, indem du einfach fuer jede Datei einfach die Links korrigierst. Allerdings koenntest du damit in weitere Probleme trudeln.
Deshalb wuerde ich folgendes machen:
+ 'menu' so umdefinieren, dass du ihm ein Feld 'id' mitgeben kannst. In 'index.xml' steht dann '<menu id="index"/>' statt '<menu/>'
+ In der .xsl jeden Eintrag in der Navigationsleiste aendern: Aus
<a href="index.html">...
wird dann:
<xsl:choose> <xsl:when test="@id=='index'"> <b>| home |</b> </xsl:when> <xsl:otherwise> <a href="index.html">| home |</a> </xsl:otherwise> </xsl:choose>
... und bei Punkt 2 draengelt sich eine Skript-Loesung foermlich auf. Du machst dann eine Index-Datei, die folgendermassen aussehen koennte:
,- | HTML-Dateiname,'id'-Eintrag,String fuer Navigationsleiste | index.html,index,| home | | linux.html,linux,| Linux | | ... `-
Die liest du mit einem Skript aus (awk reicht natuerlich) und erstellst meinetwegen menu.xsl, was du in deine Standard-xsl-Datei einbindest.
Somit koenntest du mit einem Eintrag in deiner Index-Datei und einem Skript die Navigationsleiste einfach und gleich fuer alle Dateien aendern.
HTH,
Cheers, Rocco.
On Friday, 5. April 2002 00:49, Rocco Rutte wrote:
Hi,
Hallo,
Nun faellt mir aber nicht ein, wie man solch ein Problem loesen koennte. Hat jemand von euch sowas aehnliches schonmal geloest??
Jein. Ich mache das persoenlich zwar anders, aber du koenntest die HTML-Dateien per Skript nachbearbeiten, indem du einfach fuer jede Datei einfach die Links korrigierst. Allerdings koenntest du damit in weitere Probleme trudeln.
Genau deswegen will ich das nich machen. Von dem VonHand-Zeug will ich mich ja gerade distanzieren. ;-)
Deshalb wuerde ich folgendes machen:
'menu' so umdefinieren, dass du ihm ein Feld 'id' mitgeben kannst. In 'index.xml' steht dann '<menu id="index"/>' statt '<menu/>'
In der .xsl jeden Eintrag in der Navigationsleiste aendern: Aus
<a href="index.html">...
wird dann:
<xsl:choose> <xsl:when test="@id=='index'"> <b>| home |</b> </xsl:when> <xsl:otherwise> <a href="index.html">| home |</a> </xsl:otherwise> </xsl:choose>
Das hoert sich doch schonmal ganz gut an. Ich glaub so werde ich das machen. Zwar immer noch umstaendlich aber so sieht es erstmal ganz gut aus.
... und bei Punkt 2 draengelt sich eine Skript-Loesung foermlich auf. Du machst dann eine Index-Datei, die folgendermassen aussehen koennte:
,-
| HTML-Dateiname,'id'-Eintrag,String fuer Navigationsleiste | index.html,index,| home | | linux.html,linux,| Linux | | ...
`-
Die liest du mit einem Skript aus (awk reicht natuerlich) und erstellst meinetwegen menu.xsl, was du in deine Standard-xsl-Datei einbindest.
Ich bin des awk nicht maechtig. Mal sehen was Python dazu meint. Mit einer externen Datei klingt das natuerlich auch gut. ;-)
Somit koenntest du mit einem Eintrag in deiner Index-Datei und einem Skript die Navigationsleiste einfach und gleich fuer alle Dateien aendern.
Wunderbar, werd ich mich heut dranmachen.
Danke vielmals!
HTH,
Cheers, Rocco.
Sebastian
Hi,
* Sebastian Roth [04/05/02 18:12:47] wrote:
On Friday, 5. April 2002 00:49, Rocco Rutte wrote:
Von dem VonHand-Zeug will ich mich ja gerade distanzieren. ;-)
Von der Moeglichkeit, ausgehend von den Sourcen auch andere Formate als HTML erstellen zu koennen, ist fuer mich so ziemlich der einzige Grund, XML verwenden. Du kannst mit Skripten auch noch Inhaltsverzeichnisse und weiss ich was machen.
<xsl:choose> <xsl:when test="@id=='index'"> <b>| home |</b> </xsl:when> <xsl:otherwise> <a href="index.html">| home |</a> </xsl:otherwise> </xsl:choose>
Das hoert sich doch schonmal ganz gut an. Ich glaub so werde ich das machen. Zwar immer noch umstaendlich aber so sieht es erstmal ganz gut aus.
Klar ist das umstaendlich. Aber es wird nur einmal benutzt und man kann es bequem mit einem Skript machen. Ich bin damit noch nicht so weit und weiss nicht, wie es mit Schleifen, Arrays & Co. aussieht.
,-
| HTML-Dateiname,'id'-Eintrag,String fuer Navigationsleiste | index.html,index,| home | | linux.html,linux,| Linux | | ...
`-
Die liest du mit einem Skript aus (awk reicht natuerlich) und erstellst meinetwegen menu.xsl, was du in deine Standard-xsl-Datei einbindest.
Ich bin des awk nicht maechtig. Mal sehen was Python dazu meint.
Sollte auch nicht schwer sein. Geht auch mit Perl. Das muss halt zeilenweise eingelesen, die Eintraege ausgelesen (FS=",") und dann neu formatiert ausgegeben werden.
Cheers, Rocco.
On Friday, 5. April 2002 20:11, Rocco Rutte wrote:
Hi,
Hallo,
Von der Moeglichkeit, ausgehend von den Sourcen auch andere Formate als HTML erstellen zu koennen, ist fuer mich so ziemlich der einzige Grund, XML verwenden. Du kannst mit Skripten auch noch Inhaltsverzeichnisse und weiss ich was machen.
Feine Sache das. Ich hatte mir auch mal ueberlegt so eine Art unabhaenige Programmiersprache mit XSLT zu machen. Meinetwegen ein Tag <print>Hallo</print> und wenn man das parst kann das ja in den verschiedenen Sprachen immer anders aussehen. Aber ich glaub das werd ich nicht vollstaendig hinbekommen. ;-) Ein wenig komplex.
Klar ist das umstaendlich. Aber es wird nur einmal benutzt und man kann es bequem mit einem Skript machen. Ich bin damit noch nicht so weit und weiss nicht, wie es mit Schleifen, Arrays & Co. aussieht.
Schleifen? Meinst du jetzt die Sachen mit xsl:for-each ?
Ich bin des awk nicht maechtig. Mal sehen was Python dazu meint.
Sollte auch nicht schwer sein. Geht auch mit Perl. Das muss halt zeilenweise eingelesen, die Eintraege ausgelesen (FS=",") und dann neu formatiert ausgegeben werden.
Jepp, so schwer war das nicht. Python-Skript ist angehangen (fuer die Leute die es interessiert). Die ganzen Leerzeichen sind nur wegen der Formatierung drinne.
Cheers, Rocco.
Sebastian
On Sat, Apr 06, 2002 at 04:07:45PM +0200, Sebastian Roth wrote:
On Friday, 5. April 2002 20:11, Rocco Rutte wrote:
Hi,
Hallo,
Von der Moeglichkeit, ausgehend von den Sourcen auch andere Formate als HTML erstellen zu koennen, ist fuer mich so ziemlich der einzige Grund, XML verwenden. Du kannst mit Skripten auch noch Inhaltsverzeichnisse und weiss ich was machen.
Feine Sache das. Ich hatte mir auch mal ueberlegt so eine Art unabhaenige Programmiersprache mit XSLT zu machen. Meinetwegen ein Tag <print>Hallo</print> und wenn man das parst kann das ja in den verschiedenen Sprachen immer anders aussehen. Aber ich glaub das werd ich nicht vollstaendig hinbekommen. ;-) Ein wenig komplex.
Die Idee ist natürlich ein Fass ohne Boden. Interessant ist es schon aus einer XML-Syntax z.B. Python und Perl zu erstellen. Doch dafür würde ich nicht XSLT, sondern lieber SAX nehmen.
thomas
Sebastian Roth wrote:
Hallo allerseits,
Hallo,
seit neuem beschaeftige ich mich auch mit XML/XSLT und hab auch schon ein bisschen was gemacht damit (Homepage: http://www.xsebbi.de). So, nun ist da auf der HP oben diese Navigationsleiste mit den Links. Das war so wie es jetzt ist recht einfach gemacht.
In der .xml-Datei:
<menu />
Und die .xsl Datei hat passend dazu das gehabt: <xsl:template match="menu"> <tr align="center"> <td> </td> <td colspan="2"> navigation >> <a href="index.html">| home |</a> <a href="linux.html">| Linux |</a> <a href="physics.html">| physics for linux |</a> <a href="links.html">| links |</a> <a href="contact.html">| contact |</a> </td> </tr> </xsl:template>
Nur gefaellt mir das so wie es jetzt ist, nicht so ganz. Der aktive Link (die Seite aus der Liste, die aufgerufen wurde) soll irgendwie hervorgehoben sein. Fettgedruckt meinetwegen.
Gib' doch dem Stylesheet einfach einen Parameter mit, welchen Menueintrag es hervorheben soll ...
Bye.
Jens
Hallo Sebastian, (Am Fri, 05 Apr 2002 09:02:23 +0200 hat Jens Lorenz in lug_dd angemerkt:)
Nur gefaellt mir das so wie es jetzt ist, nicht so ganz. Der aktive Link (die Seite aus der Liste, die aufgerufen wurde) soll irgendwie hervorgehoben sein. Fettgedruckt meinetwegen.
Gib' doch dem Stylesheet einfach einen Parameter mit, welchen Menueintrag es hervorheben soll ...
Entweder so, wie Jens vorschlägt, über CSS, oder aber direkt im Header deiner Seite angeben (wenn diese Einstellungen seitenweise unterschied- lich sein sollen/müssen).
| <head> | <STYLE> | a:link { background-color: #ffea95; color:#757575; } | a:visited { background-color: #ffea95; color:#757575; } | a:active { background-color: #ffea95; color:#757575; } | a:hover { background-color: #ffea95; color:#757575; font-weight: bolder; } | </STYLE> | </head>
Dies würde m.E. graue Schrift auf gelbem Hintergrund erzeugen. Bei HOVER würde die Schrift FETT werden. Aber Vorsicht - die Menüzeile "zappelt" dann wegen der verändernden Breite der Schrift.
Besser wäre Vorder und Hintergrundfarbe zu tauschen und die Eigenschaft FETT lieber weglassen. Etwa so:
| a:hover { background-color: #757575; color:#ffea95; }
Gruss Jörg Behrend
On Friday, 5. April 2002 09:42, Joerg Behrend wrote:
Hallo Sebastian,
Hallo Joerg + Jens,
(Am Fri, 05 Apr 2002 09:02:23 +0200 hat Jens Lorenz in lug_dd angemerkt:)
Gib' doch dem Stylesheet einfach einen Parameter mit, welchen Menueintrag es hervorheben soll ...
Entweder so, wie Jens vorschlägt, über CSS, oder aber direkt im Header deiner Seite angeben (wenn diese Einstellungen seitenweise unterschied- lich sein sollen/müssen).
| <head> | <STYLE> | a:link { background-color: #ffea95; color:#757575; } | a:visited { background-color: #ffea95; color:#757575; } | a:active { background-color: #ffea95; color:#757575; } | a:hover { background-color: #ffea95; color:#757575; | font-weight: bolder; } </STYLE> | </head>
Dies würde m.E. graue Schrift auf gelbem Hintergrund erzeugen. Bei HOVER würde die Schrift FETT werden. Aber Vorsicht - die Menüzeile "zappelt" dann wegen der verändernden Breite der Schrift.
Besser wäre Vorder und Hintergrundfarbe zu tauschen und die Eigenschaft
FETT lieber weglassen. Etwa so: | a:hover { background-color: #757575; color:#ffea95; }
den selben Gedanken mit CSS hatte ich auch, nur leider funktioniert die Klasse a:active bei Seiten ohne Frames nicht richtig. Wenn ich das definiere und dann draufklicke sieht man die Schrift (wie in deinem Beispiel) fett. Danach wird die Seite wo ich draufgeklickt hatte geladen, allerdings ohne irgendwas fettem in der Navigationsleiste. Bei Frames ist das nicht so. Also wenn man da einen Frame fuer Navigation und einen fuer Inhalt hat, klappt das wunderbar. Aber Frames will ich nicht.
Gruss Jörg Behrend
Trotzdem danke,
Sebastian
Joerg Behrend wrote:
Hallo,
Nur gefaellt mir das so wie es jetzt ist, nicht so ganz. Der aktive Link (die Seite aus der Liste, die aufgerufen wurde) soll irgendwie hervorgehoben sein. Fettgedruckt meinetwegen.
Gib' doch dem Stylesheet einfach einen Parameter mit, welchen Menueintrag es hervorheben soll ...
Entweder so, wie Jens vorschlägt, über CSS, oder aber direkt im Header deiner Seite angeben (wenn diese Einstellungen seitenweise unterschied- lich sein sollen/müssen).
Ich meinte kein CSS, sondern ein Parameter für das XSLT-Stylesheet. Also mit <xsl:param /> unter dem root-Tag. Der Wert läßt sich dann normal per <xsl:value-of /> oder ${name} abfragen ... (auch im xsl:if etc.
Jens
lug-dd@mailman.schlittermann.de