"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

XSLT Links - the secound encounter

Elektrosmog 12.03.2003 - 18:53 547 8
Posts

Elektrosmog

Addicted
Avatar
Registered: May 2002
Location: Hinterberg
Posts: 390
Also mein nächstes XSLT Problem:

Code: PHP
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
 <html><head></head><body bgcolor="#426289" text="#000000" id="all">
  <xsl:apply-templates />
 </body></html>
</xsl:template>

<xsl:template match="bild">
<img>
	<xsl:attribute name="src"><xsl:value-of select="." /> </xsl:attribute>
	<xsl:value-of select="." />
</img>
</xsl:template>

<xsl:template match="link1">
 <a>
  <xsl:attribute name="href"><xsl:value-of select="target" /></xsl:attribute>
  <xsl:value-of select="text" />
 </a>
</xsl:template>
<!-- Link 1 gibt text aus-->

<xsl:template match="link2">
<a>
	<xsl:attribute name="href"><xsl:value-of select="target" /></xsl:attribute>
	<xsl:value-of select="bild" />
</a>
</xsl:template>

</xsl:stylesheet>

Wieso gehts des nicht mit dem Bild als Linkobjekt (link2). Das Bild ohne die Link2 Tags wird mir aber korrekt angezeigt!

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von Elektrosmog
Also mein nächstes XSLT Problem:

Code: PHP
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
 <html><head></head><body bgcolor="#426289" text="#000000" id="all">
  <xsl:apply-templates />
 </body></html>
</xsl:template>

<xsl:template match="bild">
<img>
	<xsl:attribute name="src"><xsl:value-of select="." /> </xsl:attribute>
	<xsl:value-of select="." />
</img>
</xsl:template>

<xsl:template match="link1">
 <a>
  <xsl:attribute name="href"><xsl:value-of select="target" /></xsl:attribute>
  <xsl:value-of select="text" />
 </a>
</xsl:template>
<!-- Link 1 gibt text aus-->

<xsl:template match="link2">
<a>
	<xsl:attribute name="href"><xsl:value-of select="target" /></xsl:attribute>
	<xsl:value-of select="bild" />
</a>
</xsl:template>

</xsl:stylesheet>

Wieso gehts des nicht mit dem Bild als Linkobjekt (link2). Das Bild ohne die Link2 Tags wird mir aber korrekt angezeigt!
<img> is ein empty-tag, dh. er hat kein </img>
in xhtml darf es zwar empty-tags auch alternativ mit end-tag geben, nur darf dann zwischen <img></img> NICHTS stehen, weder leerzeichen, noch zeilenumbruch

edit: wie's in xsl mit den zeilenumbrüchen und whitespaces steht kann ich nicht sagen, weil man kann sich ja den produzierten source vom dämlichen ie nicht anschaun, aber das <xsl:value-of select="." /> sollt da auf keinen fall stehen ;)

abgesehen davon wärs ganz praktisch, wennst auch dtd und xml postest ;)
Bearbeitet von watchout am 12.03.2003, 20:11

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11326
1. statt den umständlichen xsl:attribute Elementen verwende ich wo immer möglich lieber diese Syntax:
<a href="{target}"><xsl:value-of select="text"/></a>


2. Es gibt Commandline XSLT Prozessoren (z.B. XT, aber auch bei MSXML ist da AFAIR was dabei), mit denen kann man sich dann in aller Ruhe den generierten Output anschauen.

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von that
1. statt den umständlichen xsl:attribute Elementen verwende ich wo immer möglich lieber diese Syntax:
<a href="{target}"><xsl:value-of select="text"/></a>
hmm, mag sein und ich kannte diese form auch noch nicht, aber das dürfte wohl wieder eine programmierstil-frage sein ;)

Elektrosmog

Addicted
Avatar
Registered: May 2002
Location: Hinterberg
Posts: 390
Zitat von that
1. statt den umständlichen xsl:attribute Elementen verwende ich wo immer möglich lieber diese Syntax:
<a href="{target}"><xsl:value-of select="text"/></a>


2. Es gibt Commandline XSLT Prozessoren (z.B. XT, aber auch bei MSXML ist da AFAIR was dabei), mit denen kann man sich dann in aller Ruhe den generierten Output anschauen.

ah des kenn ich noch nicht. werd das mal umsetzen und meinen Info Lehrer dermaßen verwirren. Thx

Elektrosmog

Addicted
Avatar
Registered: May 2002
Location: Hinterberg
Posts: 390
Habe die DTD, XML und XSLT gepostet. was mach ich falsch. Code bitte korrigieren!!

DTD Anweisung:

<!ELEMENT linktext (#PCDATA | link | link2)*>
<!ELEMENT link (target | text)>
<!ELEMENT link2 (ziel | bild)>
<!ELEMENT target (#PCDATA)>
<!ELEMENT text (#PCDATA)>
<!ELEMENT bild (#PCDATA)>
<!ELEMENT ziel (#PCDATA)>


XML Anwendung:

?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE linktext SYSTEM "link.dtd">
<?xml-stylesheet type="text/xsl" href="link.xsl" ?>
<linktext>
Unter der Adresse
<link><target>http://www.w3.org/Style/XSL/</target><text>Click</text></link>
finden Interessierte
die Einstiegsseite des W3-Konsortiums zu XSL. <link2><ziel>http://www.rpa-online.net</ziel><bild>wikilogo.gif</bild></link2><bild>wikilogo.gif</bild>
</linktext>

XSLT Anwendung:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Hier die ganzen Daten die ihr haben wolltet.




<xsl:template match="/">
<html><head></head><body bgcolor="#426289" text="#000000" id="all">
<xsl:apply-templates />
</body></html>
</xsl:template>

<xsl:template match="bild">
<img>
<xsl:attribute name="src"><xsl:value-of select="." /> </xsl:attribute>
<xsl:value-of select="bild" />
</img>
</xsl:template>

<xsl:template match="link">
<a>
<xsl:attribute name="href"><xsl:value-of select="target" /></xsl:attribute>
<xsl:value-of select="text" />
</a>
</xsl:template>
<!-- Link gibt text aus-->
Bearbeitet von Elektrosmog am 13.03.2003, 19:43

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von Elektrosmog
<xsl:template match="/">
<html><head></head><body bgcolor="#426289" text="#000000" id="all">
<xsl:apply-templates />
</body></html>
</xsl:template>

<xsl:template match="bild">
<img>
<xsl:attribute name="src"><xsl:value-of select="." /></xsl:attribute>
</img>

</xsl:template>

<xsl:template match="link">
<a>
<xsl:attribute name="href"><xsl:value-of select="target" /></xsl:attribute>
<xsl:value-of select="text" />
</a>
</xsl:template>
<!-- Link gibt text aus-->

<xsl:template match="link2">
<a>
<xsl:attribute name="href"><xsl:value-of select="target" /></xsl:attribute>
<xsl:value-of select="bild" />
</a>
</xsl:template>
wlkikiv - ich habs dir oben geschrieben, mit erklärung und allem drum und dran

aber ich gebs eh schon auf, wenn du den roten bereich so änderst wies jetz is, sollts passen

ps: das link2 template sollt noch dabei sein ;)
Bearbeitet von watchout am 13.03.2003, 20:15 (link2 added)

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11326
besorg dir das da:

http://msdn.microsoft.com/downloads...ompositedoc.xml

benutze es und schau dir den Output an. Dann solltest du ganz von selbst draufkommen, was falsch ist.

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von Elektrosmog
<!ELEMENT link (target | text)>
<!ELEMENT link2 (ziel | bild)>
flame me, aber is das "|" nicht ein exclusive OR? und nachdem kein * da steht... :rolleyes: probier mal mit nnem "," vielleicht gehts ja dann...
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz