xsl-list
[Top] [All Lists]

Re: [xsl] regex question about reorganizing a string in XSLT

2009-08-31 07:56:13
Mark Wilson wrote:

What I really want to do is reorganize strings that contain, for example
"(Mrs),", " (Dr)," and " (senior),". (There is a space in front of each that
also needs to be removed during the reorganization.) Such that:

<Person>Jones (senior), John</Person>
becomes
<Person>Jones, John (senior)</Person>

But only when the <Person> element contains the substring "),"; all other
<Person>elements should not be touched For instance,

<Person>Smith, Ralph J.</Person>

Would remain unchanged.

Does the following do what you want?

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  version="2.0">

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="Person">
    <xsl:copy>
<xsl:value-of select="replace(., '(\w+)(\s+\(\w+\))?(,\s+\w+)', '$1$3$2')"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>


--

        Martin Honnen
        http://msmvps.com/blogs/martin_honnen/

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>