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

RE: hard xsl problem

Subject: RE: hard xsl problem
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Mon, 26 Jul 2004 11:10:28 +0100
xsl copy of whitespace replaced
Handling implicit structure is always easier in XSLT 2.0, though this one is
still a little tricky.

I would do a first pass in which all the "(" characters (and preceding
whitespace) are replaced by <lpar/> and all the ")" (and following
whitespace) are replaced by <rpar/>. This is easily done in 2.0 using
xsl:analyze-string.

<xsl:template match="text()">
  <xsl:analyze-string select="." regex="(\s*\()|(\)\s*)">
    <xsl:matching-substring>
      <xsl:choose>
        <xsl:when test="contains(.,'(')><lpar/></xsl:when>
        <xsl:otherwise><rpar/></xsl:otherwise>
      </
    </
  </
</
      

Then in a second pass, use:

<xsl:for-each-group group-starting-with="lpar|rpar">
  <xsl:if test="self::rpar">
    <xsl:copy-of select="current-group() except ."/>
  </
</

Not tested.

Michael Kay

> -----Original Message-----
> From: Richard Bondi [mailto:rbondi@xxxxxxxxx] 
> Sent: 26 July 2004 00:10
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  hard xsl problem
> 
> I would be grateful for a solution to the following xsl problem.
> 
> Example input:
> ==============
> <Paragraph> On October 30, clad in scarlet and ermine, Charles made
> his entry into the papal palace (see <i>especially<i> <cite>30</cite>,
> as well as <cite>20</cite>). He presented the Pope with a blue velvet
> cape embroidered in pearls (<cite>234</cite>; <cite>12345</cite>) in a
> design of angels (as well as a fleur-de-lys and stars). With no
> footing except in French support, Clement's papacy would have vanished
> in smoke.</Paragraph>
> 
> Example output:
> ==============
> <Paragraph> On October 30, clad in scarlet and ermine, Charles made
> his entry into the papal palace. He presented the Pope with a blue
> velvet cope embroidered in pearls in a design of angels (as well as a
> fleur-de-lys and stars). With no footing except in French support,
> Clement's papacy would have vanished in smoke.</Paragraph>
> 
> Problem in words:
> ==============
> The <cite> tags are always enclosed in parenthesis. As the result of a
> transform (when a parameter passed into the xsl sheet is 'true') (a)
> these parens, (b) their xml content, and (c) the space preceding the
> open paren must be suppressed. Alternatively, (a)-(c) can be enclosed
> in a tag. Parens that do not contain <cite> tags are to be left as is.
> All of this is always inside a <Paragraph> tag.
> 
> How to do this is the problem.
> 
> I don't see how to do this even with a plugin, because it is unclear
> to me how a plugin can be used to generate tags. It would of course be
> more elegant to do this without a plugin.
> 
> MTIA,
> /r:b:

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.