Ik heb het volgende stukje xml
Ik wil hieruit elke zin met een highlight element erin weergeven met daar boven de Heading waaronder deze zin valt. Dus van alle ancestor headings wil ik alleen de laatste...
Dus in dit geval moet de output zoiets zijn:
Hiervoor heb ik de volgende xsl geschreven
Maar hierbij krijg ik dus
Hij pakt dus elke voorgaande heading. Op zich wel logisch maar dat wil ik dus niet.
Nu heb ik al van alles geprobeerd waaron ook
Maar ik blijf hetzelfde resultaat houden.
Verder had ik al wat gezocht en kwam oa [rml][ XSLT] parent-path opvragen[/rml] tegen, maar daarmee kwam ik ook niet verder.
Weet niet of me xsl denkwijze zowiezo goed is met het toepassen van templates enzo.....
Als je veel java progt is xsl'en wel raar. Alles moet voor me gevoel net andersom? Maar goed, wie kan me verder helpen?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="transform.xsl"?>
<document>
<Heading UnID="1"> 1. titel</Heading>
<aaa>test</aaa>
<bbb>
<Heading UnID="1.1"> 1.1 titel</Heading>
<ccc>test</ccc>
<ddd>test</ddd>
<eee>tekst <highlight>BLAAT</highlight> de rest</eee>
</bbb>
<bbb>
<Heading UnID="1.2"> 1.2 titel</Heading>
<ccc>test</ccc>
<ddd>test</ddd>
<eee>tekst <highlight>BLAAT</highlight> de rest</eee>
</bbb>
</document> |
Ik wil hieruit elke zin met een highlight element erin weergeven met daar boven de Heading waaronder deze zin valt. Dus van alle ancestor headings wil ik alleen de laatste...
Dus in dit geval moet de output zoiets zijn:
code:
1
2
3
4
| 1.1 titel tekst BLAAT de rest 1.2 titel tekst BLAAT de rest |
Hiervoor heb ik de volgende xsl geschreven
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" encoding="UTF-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8"/>
<xsl:template match="/*">
<xsl:apply-templates select="//highlight"/>
</xsl:template>
<xsl:template match="Heading">
<xsl:param name="detekst1"></xsl:param>
<xsl:param name="detekst2"></xsl:param>
<xsl:param name="detekst3"></xsl:param>
<xsl:value-of select="text()"/><br/>
<xsl:value-of select="$detekst1"/><b><xsl:value-of select="$detekst2"/></b><xsl:value-of select="$detekst3"/><br/>
</xsl:template>
<xsl:template match="highlight">
<xsl:apply-templates select="ancestor::*/Heading">
<xsl:with-param name="detekst1"><xsl:value-of select="preceding-sibling::text()"/></xsl:with-param>
<xsl:with-param name="detekst2"><xsl:value-of select="text()"/></xsl:with-param>
<xsl:with-param name="detekst3"><xsl:value-of select="following-sibling::text()"/></xsl:with-param>
</xsl:apply-templates>
</xsl:template>
</xsl:transform> |
Maar hierbij krijg ik dus
code:
1
2
3
4
5
6
7
8
| 1. titel tekst BLAAT de rest 1.1 titel tekst BLAAT de rest 1. titel tekst BLAAT de rest 1.2 titel tekst BLAAT de rest |
Hij pakt dus elke voorgaande heading. Op zich wel logisch maar dat wil ik dus niet.
Nu heb ik al van alles geprobeerd waaron ook
code:
1
| <xsl:apply-templates select="ancestor::*/Heading[position()=last()]"> |
Maar ik blijf hetzelfde resultaat houden.
Verder had ik al wat gezocht en kwam oa [rml][ XSLT] parent-path opvragen[/rml] tegen, maar daarmee kwam ik ook niet verder.
Weet niet of me xsl denkwijze zowiezo goed is met het toepassen van templates enzo.....
Als je veel java progt is xsl'en wel raar. Alles moet voor me gevoel net andersom? Maar goed, wie kan me verder helpen?