Subject: Re: [xsl] XPath MOD 10 calculation From: Abel Braaksma <abel.online@xxxxxxxxx> Date: Fri, 25 May 2007 16:17:33 +0200 |
On 5/25/07, David Carlisle <davidc@xxxxxxxxx> wrote:
> <xsl:variable name="calc" select="(10 - ((sum($odd) * 3) + > sum($even)) mod 10) mod 10" as="xs:integer"/> > <xsl:if test="$calc ne $check-digit">UPC not legal</xsl:if>
foo mod 10 mod 10 is the same as foo mod 10, and 10 mod 10 is 0 so the above is
<xsl:if test="($check-digit + ((sum($odd) * 3) + sum($even))) mod 10 =0">
Nice!
That give a boolean to check the UPC is correct - is it ok to re-write it as:
10 - ((sum($odd) * 3) + sum($even)) mod 10
to give you the check-digit? If so it makes the outermost "mod 10" of $calc redundant? (if it is then step #4 on the wikipedia article isnt needed)
Example: Suppose your 11-digit number is 12345678950 When you apply the algorithm sums it gives you 100 Step 3 is now: 10 - 100 mod 10 = 10 - 0 = 10 Step 4 (now necessary) gives: 10 mod 10 = 0 ergo: check digit is 0. The UPC-A string becomes 123456789500
Cheers, -- Abel Braaksma
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XPath MOD 10 calculation, Andrew Welch | Thread | Re: [xsl] XPath MOD 10 calculation, Andrew Welch |
Re: [xsl] Page numbering, Eike Jordan | Date | Re: [xsl] Page numbering, Eliot Kimber |
Month |