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: 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: 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>
|