XML tabel laten maken

Pagina: 1
Acties:

  • stean
  • Registratie: November 2000
  • Laatst online: 18-08 22:30
ik wil van een xml file het op de server laten parsen en met behulp van een server-sided stylesheet uitpoepen
maar in mijn xml staan meerdere keren de tag <link1> die wil ik in een tabel zetten met de kop "ëxternal links"
maar mijn xsl is niet goed. de vraag: wat doe ik hier fout?
code:
1
2
3
4
5
<table>
<tr>
     <xsl:apply-templates select="//article/links1"/>
</tr>
</table>


code:
1
2
3
4
5
6
7
8
9
10
<xsl:template match="//article/links1">
    <xsl:if test="links1[1]">
        <td>externe links<br/>
    <a href="{@name}"><xsl:value-of select="./@url"/></a><br/></td>
            <td> </td>
   </xsl:if>
    <xsl:for-each select="links1[position() &gt;1]">
           <a href="{@name}"><xsl:value-of select="@url"/></a><br/>
    </xsl:for-each>
</xsl:template>

mijn resultaat is nu dat die helemaal niks meer laat zien:
wat wel alles laat zien maar het kopje externe links ook meerdere keren is:
code:
1
2
3
4
5
<xsl:template match="links1">
    <td> <span class="smll">externe links</span><br/>
    <a target="_blank" href="{@name}"><xsl:value-of select="@url"/></a><br/></td>
    <td> </td>
 </xsl:template>

Verwijderd

laat eens wat xml zien, anders kunnen we namelijk niets van die xslt maken ;)

  • stean
  • Registratie: November 2000
  • Laatst online: 18-08 22:30
je vroeg erom :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version='1.0' standalone="yes"?>
<basis>
     <article version="1" keywords="floriade 2002">

       <articletitle>Floriade 2002</articletitle>
       <author>*tdc#</author>
       <creationdate>3/21/2002 3:58:06 PM</creationdate>

    <bodycontent status="3" id="98">
        <P>hhhhhhhh zzz zzzzzzz    zzzzzzzzx x x x </P>
    </bodycontent>

<image extension="jpg" size="28000" used="3">
    http:\\192.168.1.3\01 dev\images\uploadedimages\algemeenfloriade.jpg
</image>  

<links1 name="http://www.floriade.com" url="floriade 2002">floriade 2002</links1>

<links1 name="http://www.tweakers.net" url="http://www.tweakers.net">http://www.tweakers.net</links1>  

<links2 name="content.cfm?id=1" url="naar algmeen">interne link</links2>  

</article>
</basis>

edit nu: ga zo naar huis maar morgen kijk ik uiteraard weer of er een hint/oplossing is.

Verwijderd

ehrm, ik denk dat je die xml wel eventjes mooi moet formatteren, want anders kan niemand zien wat waarvan een child is :)

  • Devil
  • Registratie: Oktober 2001
  • Niet online

Devil

King of morons

Op donderdag 21 maart 2002 16:35 schreef stean het volgende:
ik wil van een xml file het op de server laten parsen en met behulp van een server-sided stylesheet uitpoepen
maar in mijn xml staan meerdere keren de tag <link1> die wil ik in een tabel zetten met de kop "ëxternal links"
maar mijn xsl is niet goed. de vraag: wat doe ik hier fout?
Ik zou een apparte template maken voor de eerste link ipv. met xsl:if te werken. Dus zo iets:
code:
1
2
3
<xsl:template match="//article/links1[1]">
  <xsl:bla/>
</xsl:template>

oowja, zet dit template VOOR de //article/links1 template, watn sommige parsers zoeken niet door tot het einde en pakken het eerste het beste template. Maar eigenlijk zou de volgorde niets uit moeten maken.

After all, we are nothing more or less than what we choose to reveal.


  • stean
  • Registratie: November 2000
  • Laatst online: 18-08 22:30
ik heb nu dit:
<xsl:template match="//article/links1[1]">
<td width="140" valign="top"><b>externe links</b><br/>
<a href="{@name}"><xsl:value-of select="./@url"/></a>
<br/>
<xsl:apply-templates select="article/links1"/>
</td>
</xsl:template>

<xsl:template match="article/links1[position() >1]">
<a href="{@name}"><xsl:value-of select="@url"/></a><br/>
</xsl:template>

probleem is dat die alleen de eerste rule uitvoert en niet de tweede.
Verder moet ik het kopje "externe links" plaatsen maar binnen deze <TD> moeten ook de andere links komen.

weet iemand wat ik fout doe???

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:39
Op vrijdag 22 maart 2002 09:22 schreef stean het volgende:
verder moet ik het kopje "externe links" plaatsen maar binnen deze <TD> moeten ook de andere links komen.
Wat is daarmee het probleem :?

  • stean
  • Registratie: November 2000
  • Laatst online: 18-08 22:30
Op vrijdag 22 maart 2002 09:24 schreef ddc het volgende:
[..]
Wat is daarmee het probleem :?
dat ik het zo wil hebben:
<td>externe links<br>
link1<br>
link2<br>
link3<br>
</td>

mar als je je het geen probleem vindt waarom niet een handje helpen?

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:39
Op vrijdag 22 maart 2002 09:30 schreef stean het volgende:
mar als je je het geen probleem vindt waarom niet een handje helpen?
ff rustig graag, als ik je probleem snap zou ik je heus wel helpen.
maar laat eens in HTML CODE(!) zien hoe je het eruit wilt hebben.....

  • stean
  • Registratie: November 2000
  • Laatst online: 18-08 22:30
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<html>
<body>
  <table>
   <tr>
     <td>Externelinks
    link1<br>
    link2<br>
    link3<br>
     </td>
   </tr>
  </table>
</body>
</html>

<xsl:template match="article/links1">
    <xsl:if test="//article/links1[1]">
        <td width="140" valign="top"> <span class="smll">externe links</span><br/>
            <span class="smll_blck"><a href="{@name}"><xsl:value-of select="@url"/></a><br/></span></td>
            <td width="12"> </td>
   </xsl:if>
</xsl:template>

bij deze stylesheet laat hij drie keer de kop externe link zien. hoop dat het nu al wat duidelijker is???
foute code:
code:
1
2
3
4
5
6
7
8
9
10
11
<td width="140" valign="top">
<span class="smll">externe links</span><br>
<span class="smll_blck"><a href="http://www.floriade.com">floriade 2002</a><br></span></td>

<td width="12"> </td>
<td width="140" valign="top"><span class="smll">externe links</span><br>
<span class="smll_blck"><a href="http://www.tweakers.net">http://www.tweakers.net</a><br></span></td>

<td width="12"> </td>
<td width="140" valign="top"><span class="smll">externe links</span><br>
<span class="smll_blck"><a href="telegraaf.nl">www.telegraaf.nl</a><br></span></td>

  • stean
  • Registratie: November 2000
  • Laatst online: 18-08 22:30
mijn xml code nogmaals:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  <?xml version="1.0" standalone="yes" ?> 
- <basis>
- <article version="1" keywords="floriade 2002">
  <articletitle>Floriade 2002</articletitle> 
  <author>*tdc#</author> 
  <creationdate>3/22/2002 9:16:54 AM</creationdate> 
- <bodycontent status="3" id="98">
  <P>hhhhhhhh zzz zzzzzzz zzzzzzzzx x x x</P> 
  <P>welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal</P> 
  <P>welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal welkom allemaal</P> 
  <P /> 
  </bodycontent>
  <image extension="jpg" size="28000" used="3">http:\\192.168.1.3\01 dev\images\uploadedimages\algemeenfloriade.jpg</image> 
  <links1 name="http://www.floriade.com" url="floriade 2002">floriade 2002</links1> 
  <links1 name="http://www.tweakers.net" url="http://www.tweakers.net">http://www.tweakers.net</links1> 
  <links1 name="telegraaf.nl" url="www.telegraaf.nl">www.telegraaf.nl</links1> 
  <links2 name="content.cfm?id=1" url="naar algmeen">naar algmeen</links2> 
  </article>
  </basis>

  • stean
  • Registratie: November 2000
  • Laatst online: 18-08 22:30
kan je me helpen ddc?

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:39
Op vrijdag 22 maart 2002 11:32 schreef stean het volgende:
kan je me helpen ddc?
eej rustig ja, ik zit ook niet de hele dag te internetten op mn werk :(

en het probleem lijkt me duidelijk, misschien eens goed kijken |:(
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>
<body>
  <table>
   <tr>
     <td>Externelinks
    link1<br>
    link2<br>
    link3<br>
     </td>
   </tr>
  </table>
</body>
</html>
<xsl:template match="article/links1">
    <xsl:if test="//article/links1[1]">
        <td width="140" valign="top"> <span class="smll">externe links</span><br/>
            <span class="smll_blck"><a href="{@name}"><xsl:value-of select="@url"/></a><br/></span></td>
            <td width="12"> </td>
   </xsl:if>
</xsl:template>

moet zijn:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>
<body>
  <table>
   <tr>
     <td>Externelinks
    link1<br>
    link2<br>
    link3<br>
     </td>
   </tr>
  </table>
</body>
</html>
<xsl:template match="article/links1">
    <xsl:if test="//article/links1[1]">
        <td width="140" valign="top">
            <span class="smll_blck"><a href="{@name}"><xsl:value-of select="@url"/></a><br/></span></td>
            <td width="12"> </td>
   </xsl:if>
</xsl:template>

  • stean
  • Registratie: November 2000
  • Laatst online: 18-08 22:30
ik bedoel het niet kwaad of zo. ben alleen woest dat ik niet waarom het niet doet.

maar ik had het nu zo gedaan:
code:
1
2
3
4
5
6
7
8
9
10
11
 <xsl:template match="article/links1[1]">
        <td width="140" valign="top"><span class="smll"><b>externe links</b></span><br/>
                <xsl:if test="//article/links1[1]">
                     <span class="smll_blck"><a href="{@name}"><xsl:value-of select="@url"/></a></span><br/>
               </xsl:if>
                <xsl:for-each select="//article/links1[position() &gt;1]">
                        <span class="smll_blck"><a href="{@name}"><xsl:value-of select="@url"/></a></span><br/>
                </xsl:for-each>
        </td>
        <td width="12"> </td>
 </xsl:template>

  • stean
  • Registratie: November 2000
  • Laatst online: 18-08 22:30
btw jouw code print alleen de eerste en niet de rest(en een header).

maar ik waardeer het dat je je best doet hoor!!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:39
Ik hoop niet dat mbravenboer jouw for-each constructie ziet ;) :o

  • stean
  • Registratie: November 2000
  • Laatst online: 18-08 22:30
wat is er zo slecht aan een for-each constructie???

maar goed ik sta open voor tips/commentaar. dus...

  • Devil
  • Registratie: Oktober 2001
  • Niet online

Devil

King of morons

Op vrijdag 22 maart 2002 09:22 schreef stean het volgende:
ik heb nu dit:
<xsl:template match="//article/links1[1]">
<td width="140" valign="top"><b>externe links</b><br/>
<a href="{@name}"><xsl:value-of select="./@url"/></a>
<br/>
<xsl:apply-templates select="article/links1"/>
</td>
</xsl:template>

<xsl:template match="article/links1[position() >1]">
<a href="{@name}"><xsl:value-of select="@url"/></a><br/>
</xsl:template>

probleem is dat die alleen de eerste rule uitvoert en niet de tweede.
Verder moet ik het kopje "externe links" plaatsen maar binnen deze <TD> moeten ook de andere links komen.

weet iemand wat ik fout doe???
Te eerste is die [position() >1] overbodig. JE parser zoekt namelijk het template dat het beste aan de ebschrijving van de node voldoet. Voor de eerste links1 za ldit de /links[1] template zijn. En voor alle anderen kun je een template maken met als match alleen match="article/links1"

Verder is <xsl:apply-templates select="article/links1"/>
ook niet goed. Zodra je template afgelopen is pakt d eprocessor de volgende node in de tree, in jouw geval is dat dus gewoon de volgende links1.

Voor je td probleem: ik weet niet van wie die xml komt, maar als het een eigen creatie is, kun je beter alle links opnemen binnen een <links> tag.
Dus:
code:
1
2
3
4
5
6
7
8
...
<article>
  <links>
   <links1>bla bla</links1>
   <links1>bla bla bla</links1>
  </links>
</article>
...

After all, we are nothing more or less than what we choose to reveal.

Pagina: 1