xsl-list
[Top] [All Lists]

RE: [xsl] differences between xsl:analyze-string and XPath2.0 matches()?

2009-09-29 13:32:49
The regex attribute of xsl:analyze-string is an AVT. If the actual regex is
in a variable, you want

regex="{$feature.regex}"

Regards,

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

-----Original Message-----
From: Georges Schmitz [mailto:georges(_dot_)schmitz(_at_)heitec(_dot_)de] 
Sent: 29 September 2009 17:59
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] differences between xsl:analyze-string and 
XPath2.0 matches()?

I just can't get it working. I test an expression with 
matches() before switching over to xsl:analyze-string and 
both don't seem to match the same regex. The expression that 
is tested is provided via the function parameter $exp and 
contains "Feature(CM_USE_PROVINCE)=TRUE".

Are they supposed to behave differently? Because I run into 
the non matching part with debug output as following:

the non matching string is |Feature(CM_USE_PROVINCE)=TRUE|
            and doesn't match 
[Feature\((CM_USE_PROVINCE)\)=(TRUE|FALSE)]


Thanks for any help,
Georges

PS
maybe I should say that I'm using
Saxon 9.1.0.2J from Saxonica
Java version 1.6.0_15

=======================================

<xsl:function name="proff:evaluate-globalsetup" as="xs:boolean">
  <xsl:param name="exp" as="xs:string"/>

  <!-- CM_USE_PROVINCE will be replaced by another real regex 
component -->
  <xsl:variable
name="feature.regex">Feature\((CM_USE_PROVINCE)\)=(TRUE|FALSE)
</xsl:variable>
  ...
  <xsl:variable name="customer.configs" 
select="gs:get-customer-configs($customer.setup, 
$global.config.sets)"/>
  <xsl:choose>
    <xsl:when test="matches($exp, $feature.regex)">
      <xsl:analyze-string select="$exp" regex="$feature.regex">
        <xsl:matching-substring>
          <xsl:if test="$debug gt 0">
            <xsl:message>  checking for <xsl:value-of 
select="$exp"/> found:
            feature  name: <xsl:value-of select="regex-group(1)"/>
            feature value: <xsl:value-of select="regex-group(2)"/>
            </xsl:message>
          </xsl:if>
          <xsl:copy-of select="if ($customer.configs//config-item[
                                          @name='Feature' and
                                          @gen:usecase-enum = 
regex-group(1)
                                    ]/param = regex-group(2))
                                then true()
                                else false()"/>
        </xsl:matching-substring>
        <xsl:non-matching-substring>
            <xsl:message>the non matching string is 
|<xsl:value-of select="."/>|
            and doesn't match [<xsl:value-of 
select="$feature.regex"/>]
            </xsl:message>
        </xsl:non-matching-substring>
      </xsl:analyze-string>
    </xsl:when>
    <xsl:when test="matches($exp, $lang.setting.regex)"> ...
    </xsl:when>
    <xsl:otherwise>
      <xsl:message terminate="yes"> $$$ ERROR $$$
      you are trying to have
      "<xsl:value-of select="$exp"/>"
      as a global setup condition, but this doesn't match
      "<xsl:value-of select="$feature.regex"/>"
      </xsl:message>
    </xsl:otherwise>
  </xsl:choose>
</xsl:function>
**************************************************************
********************************
IMPORTANT NOTICE / WICHTIGER HINWEIS
This communication contains information which is confidential 
and may also be privileged. It is for the exclusive use of 
the intended recipient(s). If you are not the intended 
recipient(s) please note that any distribution, copying or 
use of this communication or the information in it is 
strictly prohibited. If you have received this communication 
in error please notify us immediately by email or by 
telephone and then delete this email and any copies of it.
Diese E-Mail koennte vertrauliche und/oder rechtlich 
geschuetzte Informationen enthalten. Wenn Sie nicht der 
richtige Adressat sind oder diese E-Mail irrtuemlich erhalten 
haben, informieren Sie bitte sofort den Absender und 
vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die 
unbefugte Weitergabe dieser Mail sind nicht gestattet.

HEITEC AG, Werner-von-Siemens-Str. 61, 91052 Erlangen, HRB 
7754, RG Fuerth, Vorstandsvorsitzender: 
Richard Heindl, Vorstand: Harald Preiml, Finanzvorstand: 
Rene-Oliver Rosner, Aufsichtsratsvorsitzender: Dr. 
Lorenz M. Raith, WWW: http://www.heitec.de


--~------------------------------------------------------------------
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>
--~--



--~------------------------------------------------------------------
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>