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

RE: nodes() before and after a string delimiter

Subject: RE: nodes() before and after a string delimiter
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 28 Oct 2009 21:57:12 -0000
RE:  nodes() before and after a string delimiter
First find the text node containing the dash:

<xsl:variable name="textNode" select="text()[contains(.,' - ')][1] "/>

Create a <term> element containing all nodes preceding this text node, plus
the part of the text node before the dash:

<term>
   <xsl:copy-of select="$textNode/preceding-sibling::node()"/>
   <xsl:value-of select="substring-before($textNode, ' - ')"/>
</term>

Create a <definition> element containing everything that follows the dash:

<definition>
   <xsl:value-of select="substring-after($textNode, ' - ')"/> 
   <xsl:copy-of select="$textNode/following-sibling::node()"/>
</definition>

Regards,

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

> -----Original Message-----
> From: Mario Madunic [mailto:Mario_Madunic@xxxxxxxxxxxx] 
> Sent: 28 October 2009 19:25
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  nodes() before and after a string delimiter
> 
> I have the following element (I'm using Saxon9 and XSLT2)
> 
> <p>Crazing - Hairline cracking of the resin, giving it an 
> opaque, <q>frosty</q> appearance.</p>
> 
> I need to break it into two halves like the following based 
> on the - (space en dash space) and only the first  - (space 
> en dash space).
> 
> <p>
>    <term>Crazing</term>
>    <definition>Hairline cracking of the resin, giving it an 
> opaque, <q>frosty</q> appearance.</definition> </p>
> 
> I'm used to breaking strings on delimiters and not worrying 
> about any inline elements, but his time the inline elements matter. 
> Is this a for-each-group solution? Break it into two 
> for-each-groups and in the first test for a 
> following-sibling[. = '-'] and the second test for the 
> following-sibling[. = '-']. 
> 
> No need to apply templates at this point a copy-of will suffice.
> 
> Any insight would be appreciated.
> 
> Thanks
> 
> Marijan (Mario) Madunic
> Publishing Specialist
> New Flyer Industries
> 
> --------------------------------------------------------------------
> Please consider the environment before printing this e-mail.
> 
> CONFIDENTIALITY STATEMENT: This communication (and  any and 
> all information or material transmitted with this 
> communication) is confidential, may be privileged and is 
> intended only for the use of the intended recipient. If you 
> are not the intended recipient, any review, retransmission, 
> circulation, distribution, reproduction, conversion to hard 
> copy, copying or other use of this communication, information 
> or material is strictly prohibited and may be illegal. If you 
> received this communication in error or if it is forwarded to 
> you without the express authorization of New Flyer, please 
> notify us immediately by telephone or by return email and 
> permanently delete the communication, information and 
> material from any computer, disk drive, diskette or other 
> storage device or media. Thank you.

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.