AW: [xsl] problem while processing external document

Subject: AW: [xsl] problem while processing external document
From: "Klocker Christoph" <Christoph.Klocker@xxxxxxxxxxxxx>
Date: Thu, 3 Mar 2005 16:17:51 +0100
Thanks, I will give it a try.
/christoph

-----Urspr|ngliche Nachricht-----
Von: Michael Kay [mailto:mike@xxxxxxxxxxxx]
Gesendet: Donnerstag, 3. Mdrz 2005 16:12
An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Betreff: RE: [xsl] problem while processing external document

In XSLT 1.0, or in XSLT 2.0 when the stylesheet specifies version="1.0", the
expression

substring-after(verweis/artikel/fundstelle,'/')

converts the node-set verweis/artikel/fundstelle to a string by taking the
string-value of the first node in the node-set, and ignoring the others.

If you change the stylesheet to say version="2.0", then an XSLT 2.0
processor will report this as an error. You can then change the expression
to what I expect you meant:

[some $x in verweis/artikel/fundstelle satisfies
   substring-after($x, '/') = current()/../../nummer]

or more concisely, but not supported until Saxon 8.3:

[verweis/artikel/fundstelle/substring-after(., '/') =
current()/../../nummer]


Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Klocker Christoph [mailto:Christoph.Klocker@xxxxxxxxxxxxx]
> Sent: 03 March 2005 13:02
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] problem while processing external document
>
> Hi
>
> I have a problem where I can't find an answer for it.
> I have an xml file with several of these "artikel" elements
>
> <artikel>
> 	<nummer>122</nummer>
> 	<heft>6</heft>
> 	<seite>152</seite>
> 	<erkenntnis>
> 		<stelle>VwGH</stelle>
> 		<datum>29.10.2003</datum>
> 		<gz gz-jahr="2003" stelle="VwGH">2003/13/0033</gz>
> 	</erkenntnis>
> 	<iv-eintrag>
> 	<gesetztesstelle>EStG 1988 ' 16 Abs 1 Z 9, ' 26 Z
> 4</gesetztesstelle>
> 	<beschreibung>Keine Differenzreisekosten f|r
> Verpflegungsmehraufwand eines an die Tankstellen in einem
> politischen Bezirk Mineralvl liefernden Lkw-Lenkers</beschreibung>
> 	<stichwort></stichwort>
> 	</iv-eintrag>
> </artikel>
>
>
> I process this file with this stylesheet
>
>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> 	<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
> 	<xsl:template match="node()| @*">
> 		<xsl:copy>
> 			<xsl:apply-templates select="@* | node()"/>
> 		</xsl:copy>
> 	</xsl:template>
> 	<xsl:template match="stichwort">
>
> <xsl:for-each
> select="document('Steuerindex2004-7.xml')//eintrag[.//verweis/
> artikel/zeitschrift[text()='VStZB']]
> [substring-after(verweis/artikel/fundstelle,'/')=current()/../
> ../nummer]">
>
> <xsl:for-each select="stichwort[@verwendung='VStZB_Steuerindex']">
> 	<xsl:copy>
> 		<xsl:if test="hauptstichwort">
> 			<xsl:element name="haupt">
> 			<xsl:value-of
> select="normalize-space(hauptstichwort)"/>
> 			</xsl:element>
> 		</xsl:if>
> 		<xsl:if test="substichwort">
> 		<xsl:element name="sub">
> 			<xsl:value-of
> select="normalize-space(substichwort)"/>
> 		</xsl:element>
> 		</xsl:if>
> 		<xsl:if test="subsubstichwort">
> 			<xsl:element name="subsub">
> 		<xsl:value-of
> select="normalize-space(subsubstichwort)"/>
> 		</xsl:element>
> 		</xsl:if>
> 	</xsl:copy>
> </xsl:for-each>
> </xsl:for-each>
> 	</xsl:template>
> </xsl:stylesheet>
>
>
> For every empty <stichwort> I look up in the
> Steuerindex2004-7.xml to get all of the <hauptstichwort>,
> <substichwort> <subsubstichwort>.
>
>
> The Problem I have, It works fine, if I have no second
> <verweis> element, like the first <eintrag>. The second
> however doesn't work. If I remove the "<verweis>
> <artikel><zeitschrift>ARD</zeitschrift><artikel><verweis>"
> element or put it on second place it works fine!!
>
> I am using saxonb8.2.
>
> /christoph
>
> The file 'Steuerindex2004-7.xml looks like this:
>
> <eintrag absatz="1" paragraph="20" z_litera="d" ziffer="2">
> 	<satz>Nichtabzugsfdhigkeit des Arbeitszimmer eines
> Rechtsanwaltes im
>         Wohnungsverband als Zweitkanzlei und f|r die Vorbereitung von
>         Vortragstdtigkeit</satz>
> 	<verweis>
> 		<entscheidung>
> 			<stelle>VwGH</stelle>
> 			<datum>2003-07-03</datum>
> 			<geschaeftszahl>99/15/0177</geschaeftszahl>
> 		</entscheidung>
> 	</verweis>
> 	<verweis>
> 		<artikel>
> 			<zeitschrift>VStZB</zeitschrift>
> 			<fundstelle>2004/291</fundstelle>
> 		</artikel>
> 	</verweis>
> 	<stichwort verwendung="VStZB_Steuerindex">
> 		<hauptstichwort>Arbeitszimmer</hauptstichwort>
> 		<substichwort>Rechtsanwalt</substichwort>
> 		<subsubstichwort>als Zweitkanzlei und Vorbereitung f|r
>           Vortragstdtigkeit</subsubstichwort>
> 	</stichwort>
> </eintrag>
> <eintrag absatz="2" paragraph="2">
> 	<satz>Innerbetrieblicher Verlustausgleich mit nicht beg|nstigtem
>         Verdu_erungsgewinn, auch wenn dieser zeitlich nach
> einem mit dem
>         ermd_igten Steuersatz nach ' 37 Abs 1 idF vor dem
> SteuerreformG 1993
>         zu besteuernden \bergangsgewinn aus dem Wechsel der
>         Gewinnermittlungsart entstanden ist</satz>
> 	<verweis>
> 		<entscheidung>
> 			<stelle>VwGH</stelle>
> 			<datum>2004-02-24</datum>
> 			<geschaeftszahl>99/14/0250</geschaeftszahl>
> 		</entscheidung>
> 	</verweis>
> 	<verweis>
> 		<artikel>
> 			<zeitschrift>ARD</zeitschrift>
> 			<fundstelle>5505/12/2004</fundstelle>
> 		</artikel>
> 	</verweis>
> 	<verweis>
> 		<artikel>
> 			<zeitschrift>VStZB</zeitschrift>
> 			<fundstelle>2004/354</fundstelle>
> 		</artikel>
> 	</verweis>
> 	<stichwort verwendung="VStZB_Steuerindex">
> 		<hauptstichwort>Verlustausgleich</hauptstichwort>
> 		<substichwort>innerbetrieblicher</substichwort>
> 		<subsubstichwort>au_erordentliche
> Eink|nfte</subsubstichwort>
> 	</stichwort>
>
> </eintrag>

Current Thread