[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

XPath Problem - selecting the previos node

Subject: XPath Problem - selecting the previos node
From: "Huditsch Roman" <Roman.Huditsch@xxxxxxxxxxxxx>
Date: Mon, 25 Oct 2004 11:00:20 +0200
xpath previous sibling
Hi,

Although I looked into the archive I couldn't find an appropriate response to
my question, which is quite simple...

I need to store the value of the first previous sibling, which doesn't start
with "-" in a variable.

Heres my XML:

<?xml version="1.0" encoding="UTF-8"?>
<norm xmlns="http://www.lexisnexis.at/schema/norm" id="abgb">
	<stichworte>
		<stichwort_alt>Abgerissenes Land 412(1)</stichwort_alt>
		<stichwort_alt>Abhandlung der Erbschaft 797</stichwort_alt>
		<stichwort_alt>Anerkennung der Vaterschaft 154</stichwort_alt>
		<stichwort_alt>-, Rechtswirksamerkldrung 164</stichwort_alt>
		<stichwort_alt>-, Widerspruch 163d, 163e</stichwort_alt>
...


I need to replace leading "-" with the first word of the previous sibling not
beginging with "-".
So my desired output should look like

	...
	<stichwort_alt>Anerkennung der Vaterschaft 154</stichwort_alt>
	<stichwort_alt> Anerkennung, Rechtswirksamerkldrung 164</stichwort_alt>
	<stichwort_alt> Anerkennung, Widerspruch 163d, 163e</stichwort_alt>


I tried to achieve this with the following stylesheet:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ln="http://www.lexisnexis.at/schema/norm" exclude-result-prefixes="ln">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
	<xsl:template match="node() | @*">
		<xsl:copy>
			<xsl:apply-templates select="@* | node()"/>
		</xsl:copy>
	</xsl:template>
	<xsl:template match="ln:stichworte">
		<xsl:element name="stichworte"
namespace="http://www.lexisnexis.at/schema/norm">
			<xsl:apply-templates select="ln:stichwort_alt"/>
		</xsl:element>
	</xsl:template>
	<xsl:template match="ln:stichwort_alt">

	<!-- I THINK HERE IS THE PROBLEM -->
		<xsl:variable name="sib"
select="preceding-sibling::ln:stichwort_alt[not(starts-with(., '-'))]"/>
		<xsl:element name="stichwort"
namespace="http://www.lexisnexis.at/schema/norm">
			<xsl:choose>
				<!-- Replacing leading "-," -->
				<xsl:when test="starts-with(., '-,')">
					<xsl:choose>
						<xsl:when test="contains(substring-before($sib, ' '), ',')">
							<xsl:value-of select="substring-before($sib, ',')"/>
							<xsl:text>,</xsl:text>
							<xsl:value-of select="substring-after(., '-,')"/>
						</xsl:when>
						<xsl:otherwise>
							<xsl:value-of select="substring-before($sib, ' ')"/>
							<xsl:text>,</xsl:text>
							<xsl:value-of select="substring-after(., '-,')"/>
						</xsl:otherwise>
					</xsl:choose>
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="normalize-space(text())"/>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:element>
	</xsl:template>
</xsl:stylesheet>


I am always getting the first node in return. I tried different things with
position(), but it didn't work either...

Can you help me?
Thanks in advane.

Wbr,
Roman


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.