DATA in XSLT???
HaThoV
- xsl
Moin Gemeinde,
ich bin schier am Verzweifeln. Ich möchte nämlich folgendes XML-Konstrukt
<linkliste>Begriff
<link uri="abc">ABC</link>
<link uri="def">DEF</link>
<link uri="ghi">GHI</link>
</linkliste>
in ungefähr so ein HTML-Konstrukt
<span>Begriff
<span class="LinkListe">
<a href="abc">ABC</a>
<a href="def">DEF</a>
<a href="ghi">GHI</a>
</span>
</span>
umwandeln. Ich finde aber keinen Weg, mit XSLT "Begriff" zu isolieren. Mit
<xsl:for-each select="link">
kann ich zwar die Links extrahieren, aber wie extrahiere ich den ersten Textknoten unter <linklist>
? Eigentlich sollte das doch ganz einfach gehen.
<xsl:for-each select="#text">
funktioniert jedenfalls nicht.
Hoffe jemand hat 'ne Idee...
mfg
T.
Hallo HaThoV,
Ich finde aber keinen Weg, mit XSLT "Begriff" zu isolieren.
<xsl:value-of select="linkliste/text()"/>
Grüße,
Thomas
Thnx auch Dir,
<xsl:value-of select="linkliste/text()"/>
Grüße,
Thomas
mfg
T.
(auch Thomas :)
Hallo!
ich bin schier am Verzweifeln. Ich möchte nämlich folgendes XML-Konstrukt
<linkliste>Begriff
<link uri="abc">ABC</link>
<link uri="def">DEF</link>
<link uri="ghi">GHI</link>
</linkliste>
> in ungefähr so ein HTML-Konstrukt
> ~~~html
> <span>Begriff
> <span class="LinkListe">
> <a href="abc">ABC</a>
> <a href="def">DEF</a>
> <a href="ghi">GHI</a>
> </span>
> </span>
>
umwandeln. Ich finde aber keinen Weg, mit XSLT "Begriff" zu isolieren.
<xsl:value-of select="text()" />
im Kontext der linkliste-Node.
Als kurzes Merkblatt für sowas:
node() matcht jeden Knoten
text() matcht jeden Textknoten (auch <![CDATA[ ]]>)
* matcht jedes Element
foo matcht ein Element namens 'foo'
processing-instruction() matcht jede PI (<?...?>)
processing-instruction(xml-stylesheet) matcht jede PI, deren Typ
xsl-stylesheet ist (d.h. <?xml-stylesheet ...?>)
comment() matcht jedes Kommentar (allerdings darf ein XML-Parser
Kommentare wegwerfen, d.h. man sollte sich nicht darauf verlassen)
Ich frage mich jedoch, ob Dein XML-Datenmodell wirklich ideal ist, ich würde ja eher so etwas machen wollen:
<linkliste>
<begriff>Begriff</begriff>
<link uri="abc">ABC</link>
...
</linkliste>
Dann ist sowas nämlich strukturell eindeutig und Du kannst z.B. per DTD forcieren, dass das Inhaltsmodell von linkliste sowas sein soll wie (begriff, link+) - wenn du PCDATA innerhalb von linkliste erlaubst, wäre auch folgendes ein gültiges Dokument nach der DTD, auch wenn es relativ sinnlos wäre:
<linkliste>
<link uri="abc">ABC</link>
Begriff
<link uri="def">DEF</link>
...
</linkliste>
Mein obiges XSLT würde natürlich auch hier "Begriff" korrekt isolieren (vmtl. müsstest Du aber auch noch normalize-space() darauf anwenden, um überflüssige Leerzeichen loszuwerden), aber sehr sinnvoll erscheint's mir trotzdem nicht.
Viele Grüße,
Christian
Hallo Christian,
Als kurzes Merkblatt für sowas:
node() matcht jeden Knoten
text() matcht jeden Textknoten (auch <![CDATA[ ]]>)
Das habe ich gebraucht und nirgends gefunden... Dankeschön!
Ich frage mich jedoch, ob Dein XML-Datenmodell wirklich ideal ist, ich würde ja eher so etwas machen wollen:
<linkliste>
<begriff>Begriff</begriff>
<link uri="abc">ABC</link>
...
</linkliste>
Ist logischer. Das ist richtig. Ich will aber extra sparsam mit den Tags sein, was mir dann so blöde Probleme bereitet... :)
Also danke nochmal...
mfg
T.
--
\---
"they got the guns - we got the number" - James Douglas Morrison
@@HaThoV:
in ungefähr so ein HTML-Konstrukt
<span>Begriff
<span class="LinkListe">
<a href="abc">ABC</a>
<a href="def">DEF</a>
<a href="ghi">GHI</a>
</span>
</span>
umwandeln.
Frei nach wahsaga: "Ich möchte furchtbar gern eine Liste sein, bitte bitte lass mich doch ...!!!1"
Live long and prosper,
Gunnar
Moin Gunnar,
Frei nach wahsaga: "Ich möchte furchtbar gern eine Liste sein, bitte bitte lass mich doch ...!!!1"
Nö. Die Liste war wie gesagt nicht das Problem. Das war der Fließtextbezeichner, der gerufen hat: "Ich will aber ohne die anderen sichtbar sein!"
Live long and prosper,
Gunnar
So do you. I do my best.
mfg
T.
@@HaThoV:
Nö. Die Liste war wie gesagt nicht das Problem.
Natürlich nicht das XSLT-Problem. Das Problem daran ist, dass du schlechtes HTML erzeugen willst.
Live long and prosper,
Gunnar
Moin Gemeinde,
@@HaThoV:
Nö. Die Liste war wie gesagt nicht das Problem.
Natürlich nicht das XSLT-Problem. Das Problem daran ist, dass du schlechtes HTML erzeugen willst.
Bist Du da sicher? Ich habe mir nur erlaubt, zur Verdeutlichung meines Problems auf ein UL/LI-Konstrukt zu verzichten, weil's darum eben nicht geht.
Aber wenn Du's gerne dogmatisch "politically correct", dafür aber etwas umständlicher hast - bitteschön:
<div>Begriff
<ul>
<li><a href="abc">ABC</a></li>
<li><a href="def">DEF</a></li>
<li><a href="ghi">GHI</a></li>
</ul>
</div>
Zufrieden?
mfg
T.
@@HaThoV:
<div>Begriff
<ul>
<li><a href="abc">ABC</a></li>
<li><a href="def">DEF</a></li>
<li><a href="ghi">GHI</a></li>
</ul>
</div>Zufrieden?
Fast.
Es gibt mehrere Begriffe mit jeweils ihrer eigenen Linkliste? Dann wäre es auch eine Liste von Begriffen:
<dl>
<dt>Begriff 1</dt>
<dd>
<ul>
<li><a href="abc">ABC</a></li>
<li><a href="def">DEF</a></li>
<li><a href="ghi">GHI</a></li>
</ul>
</dd>
<dt>Begriff 2</dt>
<dd>
<ul>
<li><a href="jkl">JKL</a></li>
<li><a href="mno">MNO</a></li>
<li><a href="pqrs">PQRS</a></li>
</ul>
</dd>
</dl>
So richtig gut ist das auch nicht, aber das liegt an dem Schwachpunkt in der HTML-Spezifikation. [[http://forum.de.selfhtml.org/archiv/2007/10/t160872/#m1046502]]
Live long and prosper,
Gunnar
Moin nochma Gunnar,
Es gibt mehrere Begriffe mit jeweils ihrer eigenen Linkliste? Dann wäre es auch eine Liste von Begriffen:
Danebengetippt. Es geht um verstreute Begriffe im Fließtext, die einen eindimensionalen Linkvektor beherbergen können anstatt nur eines simplen Mono-Verweises.
Wir können an anderer Stelle ja gerne über die optimale Ausgestaltung meines fünfdimensionalen CSS-Menüs diskutieren, aber hier ging's wirklich nur um eine simple XSLT-Frage... :)
Den anderen danke nochmal für die prompte Beantwortung.
mfg
T.
Leider sind solche Konstrukte nicht gar zu selten anzutreffen. So setzen etwa große Übersetzungstool bzw. Gesetzestextsoftware solch ärgerlich konstrukte in die Welt. Hatte mich auch schon Nerven gekostet.
@@HaThoV:
Nö. Die Liste war wie gesagt nicht das Problem.
Natürlich nicht das XSLT-Problem. Das Problem daran ist, dass du schlechtes HTML erzeugen willst.
Live long and prosper,
Gunnar