zurück zur Startseite
  


Zurück XHTMLforum > (X)HTML und CSS > (X)HTML
Seite neu laden XSLT – Grundsatzfrage

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 29.06.2008, 16:18
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 27.06.2008
Beiträge: 16
Granjow befindet sich auf einem aufstrebenden Ast
Standard XSLT – Grundsatzfrage

Hoi zäme,

Ich kämpfe gerade etwas mit XSLT, es tut nicht so, wie ich es will. Irgendwie verstehe ich da wohl das Prinzip nicht ganz. Momentan habe ich etwa das:

test.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="xslt-style.xsl"?>

<data>
<content>
<title>Importing XML Files</title>
<back href="index.xml"/>
	<p>text</p>
	<s-xslt>
&lt;xsl:copy-of select="document('footer.xml')/data/content"/&gt;
	</s-xslt>
</content>
</data>
xslt-style.xsl
Code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>

<xsl:template match="/data">
	<html>
	<head>
		<title><xsl:value-of select="/data/title"/> – XSL</title>
		<link rel="stylesheet" type="text/css" href="../css/style.css" />
		<xsl:copy-of select="/data/head"/>
	</head>
	<body>
		<xsl:apply-templates select="/data/back"/>
		<h1><xsl:value-of select="/data/title"/></h1>
		<xsl:apply-templates select="/data/content"/>
	</body>
	</html>
</xsl:template>

<xsl:template match="/data/back">
	<a href="{@href}" class="backNobefore">&lt; back</a>
</xsl:template>

<xsl:template match="s-xslt">
	<code class="xslt"><xsl:copy-of select="."/></code>
</xsl:template>

<xsl:template match="*">
	<xsl:copy-of select="."/>
</xsl:template>

</xsl:stylesheet>
Der Problemteil ist nun das <xsl:apply-templates select="/data/content"/>. Ich habe zuvor copy-of verwendet, bin dann aber in der Hoffnung, dass das tag s-xslt ersetzt wird, auf apply-template umgestiegen. Funktioniert hat es immer noch nicht, dafür waren alle Tags weg, bis ich das template mit match="*" am Ende des Dokuments eingefügt habe.

Meine Frage nun: Wie macht man das richtig? Mit apply-template müsste doch meines Erachtens der Inhalt von /data/content an die dortige Stelle kopiert werden und die templates darauf angewendet werden – etwa das für s-xslt. Oder?

Granjow
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 29.06.2008, 20:46
Benutzerbild von Geronimo
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 14.06.2004
Beiträge: 2.645
Geronimo sorgt für eine eindrucksvolle AtmosphäreGeronimo sorgt für eine eindrucksvolle Atmosphäre
Standard

Keine Ahnung. Mit XHTML hat das nicht wirklich etwas zu tun.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 04.08.2008, 13:34
Hans Wurst
neuer user
 
Registriert seit: 23.12.2007
Beiträge: 47
hallo2008 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Granjow Beitrag anzeigen
[...]

test.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="xslt-style.xsl"?>

<data>
<content>
<title>Importing XML Files</title>
<back href="index.xml"/>
	<p>text</p>
	<s-xslt>
&lt;xsl:copy-of select="document('footer.xml')/data/content"/&gt;
	</s-xslt>
</content>
</data>
[...]
Erkläre mir mal, was du dir bei dem von mir markierten gedacht hast
Mit Zitat antworten
  #4 (permalink)  
Alt 04.08.2008, 16:14
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 27.06.2008
Beiträge: 16
Granjow befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von designfanatiker Beitrag anzeigen
Keine Ahnung. Mit XHTML hat das nicht wirklich etwas zu tun.
Sorry, aber das XSLT-Forum ist verdammt schwer zu finden!

Zitat:
Zitat von hallo2008 Beitrag anzeigen
Erkläre mir mal, was du dir bei dem von mir markierten gedacht hast
Das sollte Beispielcode werden. Könnte natürlich auch so aussehen:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="xslt-style.xsl"?>

<data>
<content>
<title>Importing XML Files</title>
<back href="index.xml"/>
	<p>text</p>
	<s-xslt><![CDATA[
<!-- deep copy of a node -->
<xsl:copy-of select="document('footer.xml')/data/content"/>
	]]></s-xslt>
</content>
</data>
Problem ist inzwischen gelöst, für die Lösung siehe hier.

Granjow
Mit Zitat antworten
  #5 (permalink)  
Alt 04.08.2008, 16:25
Benutzerbild von Geronimo
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 14.06.2004
Beiträge: 2.645
Geronimo sorgt für eine eindrucksvolle AtmosphäreGeronimo sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Granjow Beitrag anzeigen
Sorry, aber das XSLT-Forum ist verdammt schwer zu finden!
Glaube ich dir gern. Ich weiß noch nicht einmal wozu man XSLT verwendet.
Mit Zitat antworten
  #6 (permalink)  
Alt 04.08.2008, 16:36
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 27.06.2008
Beiträge: 16
Granjow befindet sich auf einem aufstrebenden Ast
Standard

*g*Dann wirds aber Zeit Ist nämlich echt was tolles, solange man nicht debuggen muss.

Kannst dir ja auch mal meine Seite oben anschauen, die habe ich auch mit XSLT transformiert.

Granjow
Mit Zitat antworten
  #7 (permalink)  
Alt 04.08.2008, 23:20
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 19.07.2005
Beiträge: 211
Cyberman befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Granjow Beitrag anzeigen
Ist nämlich echt was tolles, solange man nicht debuggen muss.
Durchaus.
Allerdings kann das bei manchen Browsern zu Problemen führen. Ich habe eine XML-Datei mit XSLT aufbereitet bei der sich Opera weigert sie anzuzeigen, offenbar passt ihm nicht daß ein optionales Attribut nicht gefüllt ist...

Ich pers. würde mich nicht vollständig drauf verlassen daß das überall geht. Bei speziellen Fällen ists ja egal, aber bei einer Webseite wärs mir zu riskant.

[edit]Die Seite bzw. die Technik finde ich allerdings faszinierend. Nur will auch sie Opera nicht. Firefox schon...

Geändert von Cyberman (04.08.2008 um 23:24 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 05.08.2008, 08:08
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 27.06.2008
Beiträge: 16
Granjow befindet sich auf einem aufstrebenden Ast
Standard

Mit Opera 9.5 sollte es gehen. Alte Version? Hast du bei deiner Seite vielleicht eine nicht ganz korrekte XML-Datei? Ich habe mich schon Stunden gefragt, wieso der IE eine Seite anzeigt und Firefox nicht, bis ich darauf gekommen bin, dass die XML-Deklaration auf der zweiten Zeile stand und die erste Zeile leer war. (Findet das irgendjemand in den Spezifikationen, dass die erste Zeile nicht leer sein darf?)

Ja, einige Browser unterstützen XSLT noch nicht (konqueror afaik), ist mir bei dieser Seite aber egal, da es mir hier vor allem um möglichst wenig Schreibaufwand und x-fach gleich vorhandene Daten geht, genau das halt, was ich in ein XSLT-Stylesheet packen kann. Wenn sie nicht ganz jeder anschauen kann, ist das nicht weiter schlimm, ist noch keine weltbekannte Seite.

Safari und IE unterstützen XSLT btw auch.

Granjow
Mit Zitat antworten
  #9 (permalink)  
Alt 05.08.2008, 20:57
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 19.07.2005
Beiträge: 211
Cyberman befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Granjow Beitrag anzeigen
Mit Opera 9.5 sollte es gehen. Alte Version?
Hum. 9.27 - offenbar zu alt.

Zitat:
Hast du bei deiner Seite vielleicht eine nicht ganz korrekte XML-Datei?
Das frage ich mich jedesmal erneut, leider ohne Ergebnis. Es ist schwer XML zu validieren, zumindest finde ich keinen brauchbaren Validator.
An sich sollte es korrekt sein, nur verwende ich etliche Attribute die nur optionalen Inhalt haben bzw. vordefinierten Inhalt. Den frage ich dann im XSLT ab, und Opera (9.27) scheint das nicht zu mögen.
Allerdings habe ich ehrlich gesagt auch nicht zu viel Zeit darauf verwendet - meine XML-Seite benutzen ev. 5 Leute, und ich kenne jeden davon und weiß daß keiner Opera verwendet...

Zitat:
Ich habe mich schon Stunden gefragt, wieso der IE eine Seite anzeigt und Firefox nicht, bis ich darauf gekommen bin, dass die XML-Deklaration auf der zweiten Zeile stand und die erste Zeile leer war. (Findet das irgendjemand in den Spezifikationen, dass die erste Zeile nicht leer sein darf?)
Ich glaube irgendwann hat mal jemand gesagt daß in SGML die erste Zeile nur die Deklaration sein darf, also kein Kommentar oder so.
Der IE(6, +?) ist da ja ohnehin etwas heikel, soweit ich weiß - sobald die erste Zeile kein DocType ist geht er in den Quirks-Modus.
Ev. liegts daran - der IE kann nicht flexibel erkennen was passiert.
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 05.08.2008, 21:03
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 27.06.2008
Beiträge: 16
Granjow befindet sich auf einem aufstrebenden Ast
Standard

Hast du mal versucht, einfach das Dokument selber einzubinden? Also mit <xsl:copy-of select="document('asdf.xml')"/>? Eventuell bringt er dann eine Fehlermeldung, falls es nicht valid ist.

Granjow
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Hilfsmittel zur Erstellung von XSLT - zur Transformation von XML zu HTML AndreasB (X)HTML 2 23.11.2010 09:21
Grundsatzfrage über padding, Box sprengt vorhandene div box michi-muc CSS 5 22.10.2009 14:39
XSLT Problem mit Auslesen der Daten schnubbi (X)HTML 3 26.08.2008 19:54
Sinnvoller Einsatz von XSLT xmariox CSS 2 24.01.2006 21:01
xhtml clientseitig aus xml und xslt Ricochet (X)HTML 2 11.11.2005 20:19


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:02 Uhr.