XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Conferences Close Tree View
+ Stylus Studio Feature Requests (1192)
- Stylus Studio Technical Forum (14621)
-> + Stylus Studio Tool Bars (2)
-> + X14 Enterprise - Web Services ... (3)
-> + Saxon edition in X14 Enterpris... (2)
-> + How to create PDF documents wi... (2)
-> + WSCall doesn't work from xquer... (4)
-> + Issues with converter (8)
-> + xsd null strings - option to i... (2)
-> + wrapping table rows and mismat... (3)
-> + Report Designer: Is it possibl... (4)
-> + Message Baplie 1.5 with 1.911 ... (2)
-> + saved merged view in diff engi... (2)
-> + Cannot see needed element to m... (2)
-> - Matching problem in function (3)
-> ->Matching problem in funct...
-> ->Matching problem in funct...
-> - Funny warning message (1)
-> - Missing rows and text when con... (1)
-> + Another JSON problem (2)
-> + JSON problem (8)
-> + WebDav Custom properties (2)
-> + jvm not registering in the too... (2)
-> + How to turn off error about mi... (6)
-- Previous [361-380] [381-400] [401-420] Next
+ Website Feedback (249)
+ XSLT Help and Discussion (7625)
+ XQuery Help and Discussion (2017)
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Postnext
Roel van der HoevenSubject: Matching problem in function
Author: Roel van der Hoeven
Date: 19 Oct 2011 05:31 AM
Hi,

I'm trying to write a simple function which strips a string from certain characters and then check if it has the correct format.
Code:

declare function local:checkContainerNumber($containerNumber as xs:string)
{
let $cleanContainerNumber := replace(replace(replace(replace(replace(replace(replace($containerNumber," ",""),"-",""),"/",""),"_",""),"\\",""),"\.",""),"\|","")
return
if(matches($cleanContainerNumber, "[A-Z]{4}[0-9]{7}"))
then
$cleanContainerNumber
else
error(xs:QName("Error"),concat(" Container number has wrong format, allowed format is 4 letters followed by 7 digits, IE: ABCD1234567, current: ",$containerNumber))
}
;

When I pass the string ABCD123456-7 to the function it strips the dash (-) and then returns the clean containernumber ABCD1234567. But whenever I feed an incorrect string (like ABCDE1234567777777) it returns that value in stead of throwing the error I defined.

Am I missing something here?

Postnext
Ivan PedruzziSubject: Matching problem in function
Author: Ivan Pedruzzi
Date: 19 Oct 2011 09:33 AM
Hi Roel,

The regular expression in XPath 2.0 requires the meta character ^ to indicate that you want to match the start of the string and $ to match the end of the string.
http://www.w3.org/TR/xpath-functions/#regex-syntax

If you need to replace a set of characters you could use translate
, it may be easier to read.

Hope this helps
Ivan Pedruzzi
Stylus Studio Team



declare function local:checkContainerNumber($containerNumber as xs:string)
{
let $cleanContainerNumber := translate($containerNumber, " -/_\.|", "")
return
if(matches($cleanContainerNumber, "^[A-Z]{4}[0-9]{7}$")) then
$cleanContainerNumber
else
error(xs:QName("Error"),concat(" Container number has wrong format, allowed format is 4 letters followed by 7 digits, IE: ABCD1234567, current: ",$containerNumber))
};

Posttop
Roel van der HoevenSubject: Matching problem in function
Author: Roel van der Hoeven
Date: 19 Oct 2011 09:36 AM
As always you've answered quickly and helped me alot ^^

As for the translate, I was just looking into an easier way to do multiple replaces, thx :)

   
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.