[XSLT] Hoe een reference implementeren?

Pagina: 1
Acties:

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
Ben m'n site aan XSLT-en maar het vlot niet goed.

XML
code:
1
2
3
4
5
6
7
8
9
<project>
   <links> 
      <link id="chapter">www.chapter.org</link>   
   </links>

   <item>
       yahayahhayya <link id="chapter">Some Link</link> yayayya
   </item>
</project>


XSL
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<xsl:template match="/">
   <xsl:for-each select="/project/item">
       Item:
       <xsl:apply-templates />
       <xsl:copy-of select="." />
   <xsl:for-each>
</xsl:template>

<xsl:template match="link">
 <xsl:element name="a">
   <xsl:attribute name="href">
       <xsl:value-of select="/links/link[@{@id}]" /> //not a valid xpath
         </xsl:attribute>
     <xsl:copy-of select="."/>
   </xsl:element>
</xsl:template>


Zit met 2 probleempjes:

1) ik zou dus die content van die item eerst door die match link laten ombuigen, maar ik denk dat ik daar al fout zit. (ie die link moet vervangen worden door een <a href="www.chapter.org"/>dsadads</a>)

2) ik krijg dat laatste niet gedaan want ik snap niet hoe ik dus de id van de match
(@id) in een andere xpath plonk zodat ie werkt. Hij geeft bij mij een error maar dan zie ik dus echt niet in hoe het moet.

XSL is echt niet mijn boontje :) (nog niet)

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
heb het gevonden maar het was niet eenvoudig:

code:
1
2
3
4
5
6
7
8
<xsl:template match="link">
    <a>
      <xsl:attribute name="href">
         <xsl:value-of select="//links/link[@id = current()/@id]" /> 
      </xsl:attribute>
     <xsl:apply-templates/>
   </a>
</xsl:template>