Re: [xsl] XPath to check that a middle initial is either empty or is a letter followed by a period

Subject: Re: [xsl] XPath to check that a middle initial is either empty or is a letter followed by a period
From: "David Carlisle d.p.carlisle@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 2 Jun 2016 12:45:23 -0000
On 2 June 2016 at 13:33, Costello, Roger L. costello@xxxxxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

> Hi Folks,
>
> I need an XPath expression that returns true if the <MI> element is empty
> or, if it's not empty, it contains an uppercase letter of the English
> alphabet followed by a period. For example, this <MI> element is good:
>
>         <MI></MI>
>
> As is this:
>
>         <MI>H.</MI>
>
> This XPath seems to work fine:
>
>         if (MI eq '') then true()
>         else if (exists(MI)) then matches(MI, '^[A-Z]\.$')
>         else true()
>
> Is there a better (shorter, simpler, more robust) XPath expression?
>
> /Roger
>


you don't need the if tests, (you almost never need an if test returning
true()
just


MI='' or matches(string(MI), '^[A-Z]\.$')

or if you prefer

matches(string(MI), '^([A-Z]\.)?$')

David

Current Thread