Next in thread → Next in month →

RE: [xml-dev] RE: Portable Constraints

From
Costello, Roger L. <>
To
"" <>
Date
2011-04-03T22:23:09Z
ID
<>
Thread
RE: [xml-dev] RE: Portable Constraints
Thanks Stephen, cost/currency looks like an good example of a component that should be portable. 

Instead of PrimaryPrice and SecondaryPrice, how about a cost element that contains values in various currencies:

<cost>
   <USD>40.00</USD>
   <EUR>28.10</EUR>
</cost>

The cost element then has assert elements to check that the values are consistent:

Assert: if (USD and EUR) then 
            number(EUR) eq (floor(USD * (0.702644 * 100)) div 100) 
        else true()

Assert: if (USD and GBP) then
            number(GBP) eq (floor(USD * (0.620670 * 100)) div 100)
        else true() 

(Perhaps someone can think of a better way to express the XPath expressions?)

Here is an XML Schema that declares the cost element and its assertions:

<xs:element name="cost">
    <xs:complexType>
        <xs:choice maxOccurs="unbounded">
            <xs:element name="USD" type="xs:decimal" />
            <xs:element name="EUR" type="xs:decimal" />
            <xs:element name="GBP" type="xs:decimal" />
        </xs:choice>
        <xs:assert test="if (USD and EUR) then 
                             number(EUR) eq (floor(USD * (0.702644 * 100)) div 100)
                         else true()" />
        <xs:assert test="if (USD and GBP) then
                             number(GBP) eq (floor(USD * (0.620670 * 100)) div 100)
                         else true()" />
    </xs:complexType>
</xs:element>

What do others think? Do you think this cost element is a good candidate for being a portable component?

/Roger
Next in thread → Next in month →