Re: [xsl] analyze-string help?

Subject: Re: [xsl] analyze-string help?
From: Michael Müller-Hillebrand <mmh@xxxxxxxxxxxxx>
Date: Sun, 10 Jun 2012 14:58:30 +0200
Dan,

Assuming that both the tech name as well as the info name might use the
space-dash-space string, I would first split the string and then act on
depending on the number of tokens:

<xsl:variable name="tokens" select="tokenize($title, ' - ')"/>
<xsl:choose>
  <xsl:when test="count($tokens) gt 2">
    <xsl:message select="'something unexpected: too many tokens'"/>
  </
  <xsl:when test="count($tokens) eq 2">
    <techname><xsl:value-of select="$tokens[1]"/></techname>
    <infoname><xsl:value-of select="$tokens[2]"/></infoname>
  </
  <xsl:otherwise>
    <!-- maybe handle the default action -->
  </
</

- Michael

Am 10.06.2012 um 07:40 schrieb Dan Vint:

> I have the following value in the $title variable without the quotes
> "foo-119 Mode Module Batteries - Installation"
>
> I have a series of strings like this where I want to separate the content
after the last "space dash space" from everything the proceeds that point. So
I came up with the following:
>
> <xsl:analyze-string select="$title" regex="([A-Za-z0-9 -,./]*) - ([
A-Za-z0-9/]*)">
>      <xsl:matching-substring>
>            <techname><xsl:value-of select="regex-group(1)"/></techname>
>            <infoname><xsl:value-of select="regex-group(2)"/></infoname>
>     </xsl:matching-substring>
>     <xsl:non-matching-substring>
>            <xsl:comment>NO MATCH for techname and infoname "<xsl:value-of
select="$title"/>"</xsl:comment>
>     </xsl:non-matching-substring>
> </xsl:analyze-string>
>
> I'm getting this output:
>
>        <!--NO MATCH for techname and infoname "foo-119 Mode Module Batteries
- Installation"-->
> <techname>119 Mode Module Batteries</techname>
> <infoname>Installation</infoname>
>
> I was expecting all dashes to be captured except for the last one or at
least the first "space dash space", it looks like the pattern gets the "foo-"
and flags it as mismatched and then captures the other two strings. Can you
help me understand what is going on.
>
> thanks
> ..dan

Current Thread