blob: ffbe0ca670c10c00942a70eadf5e5c7545491ffe (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:key name="next-headings" match="h2"
use="generate-id(preceding-sibling::h1[1])" />
<xsl:key name="immediate-nodes"
match="node()[not(self::h1 | self::h2)]"
use="generate-id(preceding-sibling::*[self::h1 or self::h2][1])" />
<xsl:template match="h1 | h2">
<hintsection>
<hinttitle><xsl:apply-templates /></hinttitle>
<xsl:apply-templates
select="key('immediate-nodes', generate-id(.))" />
<xsl:apply-templates select="key('next-headings', generate-id(.))" />
</hintsection>
</xsl:template>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="body">
<xsl:copy>
<xsl:apply-templates select="(h1|h2)[1]" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
|