[Home] [By Thread] [By Date] [Recent Entries]

  • From: "Costello, Roger L." <costello@m...>
  • To: "xml-dev@l..." <xml-dev@l...>
  • Date: Sun, 3 Apr 2011 18:23:09 -0400

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



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member