xsl-list
[Top] [All Lists]

[xsl] XPath MOD 10 calculation

2007-05-24 04:06:33
Hi list

I have made a MOD 10 calculation with XPath to check if a UPC barcode
number is legal. I am just wondering if the code could be made more
elegant with some of the new stuff in XPath 2.0.

Since I am going to use the test in Schematron, I can use variables
but not templates or other xsl elements than shown below.

The context value is some UPC code like 639382000393.

<xsl:variable name="x" select="((xs:integer(substring(., 1, 1)) +
xs:integer(substring(., 3, 1)) + xs:integer(substring(., 5, 1)) +
xs:integer(substring(., 7, 1)) + xs:integer(substring(., 9, 1)) +
xs:integer(substring(., 11, 1))) * 3 + (xs:integer(substring(., 2, 1))
+ xs:integer(substring(., 4, 1)) + xs:integer(substring(., 6, 1)) +
xs:integer(substring(., 8, 1)) + xs:integer(substring(., 10, 1)))) mod
10"/>

<xsl:if test="(if ($x ne 0) then (10 - $x) else $x) ne
xs:integer(substring(., 12, 1))">
<!-- Not legal, do something -->
</xsl:if>

Cheers,

Jesper Tverskov
http://www.xmlplease.com/xslt

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