Hi,
Hi,
I got this XML and want to fill an element "kundenkategorie" with the
capitalized word of par[(_at_)class='Komm_H3'] for each Norm1.
If there is no capitalized word, it should take the one of the preceding
<Norm1>.
If there is a new one it should, take this one. Couldn't figure it out how to
do it.
<root>
<Norm1>
<part>
<kategorie>Heft 1/2003</kategorie>
<par class="Ref" xml:lang="de">
<hidden>StInfo 2003/1</hidden>
</par>
<par class="Komm_H2"
xml:lang="de">Verfassungswidrigkeit der Unfallrentenbesteuerung</par>
<par class="Komm_H3"
xml:lang="de">EINKOMMENSTEUER<linebreak/>
<inline class="*Paragraph">§ 3 Abs 1 Z 4 lit
c</inline>
<inline class="*hidden"> EStG</inline>, <inline
class="*Paragraph">§ 25 Abs 1 Z 1 lit c EStG</inline>
</par>
</part>
</Norm1>
<Norm1>
<part>
<kategorie>Heft 1/2003</kategorie>
<par class="Ref" xml:lang="de">
<hidden>StInfo2003/2</hidden>
</par>
<par class="Komm_H2" xml:lang="de">Verordnung über die
Kriterien zur Festlegung förderbarer Forschungs- und Entwicklungsaufwendungen
(-ausgaben)</par>
<par class="Komm_H3" xml:lang="de">
<inline class="*Paragraph">§ 4 Abs 4 Z
4a</inline>
<inline class="*hidden"> EStG</inline>, <inline
class="*Paragraph">§ 108c Abs 2 Z 1 EStG</inline>
</par>
<par class="Komm_normal" xml:lang="de">
<inline class="*fett">BGBl II 2002/506,
ausgegeben am 20. 12. 2002</inline>
</par>
</part>
</Norm1>
<Norm1>
<part>
<kategorie>Heft 1/2003</kategorie>
<par class="Ref" xml:lang="de">
<hidden>StInfo 2003/3</hidden>
</par>
<par class="Komm_H2"
xml:lang="de">Forschungsförderungsbeiträge nicht Teil der Bemessungsgrundlage
des Forschungsfreibetrages</par>
<par class="Komm_H3" xml:lang="de">
<inline class="*Paragraph">§ 4 Abs 4 Z
4</inline>
<inline class="*hidden"> EStG</inline>, <inline
class="*Paragraph">§ 20 Abs 2 EStG</inline>
</par>
</part>
</Norm1>
<Norm1>
<part>
<kategorie>Heft 1/2003</kategorie>
<par class="Ref" xml:lang="de">
<hidden>StInfo 2003/4</hidden>
</par>
<par class="Komm_H2"
xml:lang="de">Steuerberatungskosten eines Landwirtes bei Gewinnermittlung nach
Durchschnittssätzen</par>
<par class="Komm_H3" xml:lang="de">
<inline class="*Paragraph">§ 17</inline>
<inline class="*hidden"> EStG</inline>, <inline
class="*Paragraph">§ 18 Abs 1 Z 6 EStG</inline>
</par>
</part>
</Norm1>
<Norm1>
<part>
<kategorie>Heft 1/2003</kategorie>
<par class="Ref" xml:lang="de">
<hidden>StInfo 2003/5</hidden>
</par>
<par class="Komm_H2"
xml:lang="de">Verfassungswidrigkeit der Leibrentenbewertung</par>
<par class="Komm_H3" xml:lang="de">
<inline class="*Paragraph">§ 29 Z 1
EStG</inline>, <inline class="*Paragraph">§ 16 Abs 2 BewG</inline>
</par>
</part>
</Norm1>
<Norm1>
<part>
<kategorie>Heft 1/2003</kategorie>
<par class="Ref" xml:lang="de">
<hidden>StInfo 2003/6</hidden>
</par>
<par class="Komm_H2" xml:lang="de">Änderungen der
Umsatzsteuerrichtlinien - Rechnungslegung aufgrund des 2.
Abgabenänderungsgesetzes 2002</par>
<par class="Komm_H3" xml:lang="de">UMSATZSTEUER</par>
<par class="Komm_normal" xml:lang="de">
<inline class="*fett">BMF 18. 12. 2002</inline>
</par>
</part>
</Norm1>
<Norm1>
<part>
<kategorie>Heft 1/2003</kategorie>
<par class="Ref" xml:lang="de">
<hidden>StInfo 2003/5</hidden>
</par>
<par class="Komm_H2"
xml:lang="de">Verfassungswidrigkeit der Leibrentenbewertung</par>
<par class="Komm_H3" xml:lang="de">
<inline class="*Paragraph">§ 29 Z 1
EStG</inline>, <inline class="*Paragraph">§ 16 Abs 2 BewG</inline>
</par>
</part>
</Norm1>
<Norm1>
<part>
<kategorie>Heft 1/2003</kategorie>
<par class="Ref" xml:lang="de">
<hidden>StInfo 2003/7</hidden>
</par>
<par class="Komm_H2" xml:lang="de">Verordnung
betreffend die Vermeidung von Doppelbesteuerung</par>
<par class="Komm_H3" xml:lang="de">BAO,
DOPPELBESTEUERUNG</par>
</part>
</Norm1>
</root>
My
Template:
<xsl:template match="Norm1[not(position()=1)]/part">
<part>
<kundenkategorie>
<xsl:choose>
<xsl:when
test="count(parent::node()/preceding-sibling::Norm1) < 2 or
string-length(par[(_at_)class='Komm_H2']/following-sibling::par[1][(_at_)class='Komm_H3']/node()[1][self::text()])
8">
<xsl:value-of
select="par[(_at_)class='Komm_H3']/text()[1]"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
select="preceding::par[(_at_)class='Komm_H3'][string-length(normalize-space(text()[1]))
8][1]/text()[1]"/>
</xsl:otherwise>
</xsl:choose>
</kundenkategorie>
<xsl:copy-of select="*"/>
</part>