XML megjelenitese XSL segitsegevel HTML formatumban

XML megjelenitese XSL segitsegevel HTML formatumban
2005-02-07T16:42:12+01:00
2005-02-09T08:56:31+01:00
2022-10-23T15:50:43+02:00
Leviboy
Sziasztok!

Van egy dinamikusan felepitett XML file -m amit egy XSL segitsegevel HTML formatumban jelenitek meg!
Megy szepen csak lenne ezzel kapcsolatban 2 kerdesem!!!
1,Hogy lehet linket betenni??? Tehat van egy szoveg mezom az XML be (dinamikusan felepitve) amibe szerepelhet mondjuk a www.yahoo.com Megjelenik a szoveg de nem link kent. Hogy lehet megcsinalni, hogy linkkent jelenjen meg???
A <A HREF = "http://www.yahoo.com"> www.yahoo.com </A> nem megy...

A masik kerdesem pedig, hogy lehet XSL ben, hogy amikor iratok ki egymas utan ciklusba az adatokat tudjam egy if -el fezelni oket. Arrol lenne szo, hogy az adatokat 2 oszlopba iratnam ki. Mondjuk ha a ciklus paratlan szamnal tart akkor az adatokat a bal oldali oszlopba irom ki, ha paros szamnal tart akkor a jobb oldali oszlopba kerul..
Ha nem magyaraztam erthetoen kerlek kerdezzetek!!!
KOszi elore is mindenki hozzaszolasat!!!
Mutasd a teljes hozzászólást!
Irtam egy peldat amiben mindket kerdesedre van valasz.

xml

<linkek> <link>www.yahoo1.com</link> <link>www.yahoo2.com</link> <link>www.yahoo3.com</link> <link>www.yahoo4.com</link> <link>www.yahoo5.com</link> <link>www.yahoo6.com</link> <link>www.yahoo7.com</link> <link>www.yahoo8.com</link> </linkek>

xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/linkek"> <table border="1"> <xsl:for-each select="link[position() mod 2 = 1]"> <tr> <xsl:for-each select="(.|following-sibling::node())[position() &lt;= 2]"> <td> <a> <xsl:attribute name = "href" > <xsl:value-of select="." /> </xsl:attribute> <xsl:value-of select="." /> </a> </td> </xsl:for-each> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>

Mutasd a teljes hozzászólást!

  • Mutasd a teljes hozzászólást!
  • Irtam egy peldat amiben mindket kerdesedre van valasz.

    xml

    <linkek> <link>www.yahoo1.com</link> <link>www.yahoo2.com</link> <link>www.yahoo3.com</link> <link>www.yahoo4.com</link> <link>www.yahoo5.com</link> <link>www.yahoo6.com</link> <link>www.yahoo7.com</link> <link>www.yahoo8.com</link> </linkek>

    xsl

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/linkek"> <table border="1"> <xsl:for-each select="link[position() mod 2 = 1]"> <tr> <xsl:for-each select="(.|following-sibling::node())[position() &lt;= 2]"> <td> <a> <xsl:attribute name = "href" > <xsl:value-of select="." /> </xsl:attribute> <xsl:value-of select="." /> </a> </td> </xsl:for-each> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>

    Mutasd a teljes hozzászólást!
  • Megtalaltam az igazi megoldasokat:
    A link betetele XML - XSL be a kovetkezo:
    Az XML be jo a <A HREF = "http://www.yahoo.com"> www.yahoo.com </A> csak eppen a < karaktereket &lt; -re kell cserelni a < karaktereket meg &gt; -re. Ez kell az XML be az XSL be pedig a <xsl:value-of select="FELADAT"/> -ba bele kell tenni ezt: disable-output-escaping="yes"
    Tehat igy kell kinezzen:
    <xsl:value-of disable-output-escaping="yes" select="FELADAT"/>
    Ennyi a link.
    A masik kerdesre az eredmeny:
    Az XML epitesekor beteszunk egy plussz mezot, hogy bal meg jobb amit epites kozben konnyen meg tudok allapitani, majd az XSL ben kell hasznalni a kovetkezo kodot ott ahol a feltetel kell legyen:
    <xsl:if test="OLDAL='jobb'">
    <tr/>
    </xsl:if>
    Igy lehet XSL ben feltetelt definialni...
    Azert koszonom mindenki hozzaszolasat es tovabbi jo munkat mindenkinek...
    Mutasd a teljes hozzászólást!
  • Azért ugye tudod, hogy minkét "megoldásod" a stíluslapok használatának egyik lényegét hagyja figyelmen kívül, azaz a tartalom (az eredeti XML-ed) elválasztását a megjelenéstől (amit az XSL előállít), hiszen már a tartalomba bedrótozol kifejezetten csak a megjelenéshez tartozó dolgokat. Zum megoldási javaslata ellenben mentes a hasonló barkácsolástól.
    Mutasd a teljes hozzászólást!
  • Egyreszt szerintem a megoldasaid nem jok
    (ez elsore tenegri is leirta miert rossz, a masodik pedig nem szabalyos html-t eredmenyez).
    Szerintem az sem teljesen ok az hogy masok megoldasat meg se nezed, hanem lepontozod sajat magad.
    Mutasd a teljes hozzászólást!
  • Hat nem tudom...
    En kiprobaltam Zum megoldasat es nem ment.. Vagyis elo link volt az igaz de nem a www.yahoo.com ra mutatot hanem az f://mittudom/en/mar/www.yahoo.com ra, tehat valami lokalis helyre... Amit persze nem talalt...
    Egyebkent azert mert betettem egy + mezot az XML be, nem olyan elmenyrombolo meg... Szerintem...
    De azert koszonom a velemenyed!
    Mutasd a teljes hozzászólást!
  • A vilagert se szeretnelek megharagitani kedves Zum, csak szeretnem megjegyezni, hogy fel se meruljon benned, hogy amint megkaptam a hozzaszolasodat nem probaltam volna ki!!!
    Azzal kezdtem de nem ment...
    Mutasd a teljes hozzászólást!
  • Pedig mukodik.
    Hogyan probaltad ki?
    Mutasd a teljes hozzászólást!
  • Nos, miutan raakadtam arra a megoldasra amit en felvazoltam, aztan rajottem, hogy mi volt a pici hiba a te megoldasodban: Nem www.yahoo.com kell legyen, hanem http://www.yahoo.com
    Tehat be kell tenni a http:// elibe.
    Na de ezt is kiprobaltam es ez sem az igazi. Mert jo jo, hogy mukodik a linkem, de nekem az XML ben egy megjegyzes mezom van amibe lehet 2 oldal szoveg... Es abba a 2 oldal szovegbe vagy van link, vagy nincs, lehet hogy egy link van lehet hogy 10. Nekem az egesz szoveg szovegkent kell megjelenjen csak a parkarakteres link kell link kent megjelenjen...
    Nalad ami <link></link> kozott volt az mind link kent jelent meg...
    Remelem erted mi volt a problemam...
    Ritkan jarok ide es nem azert, hogy magamnak gyujtsek pontokat....
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd