Altova Mailing List Archives

Re: [xml-dev] XRules: Mind your own business rules

From: Rick Marshall <rjm@-------.--->
To: David Lyon <david.lyon@------------.--->
Date: 3/11/2005 12:22:00 AM
unibase did this over 20 years ago and can walk the data table 
structures resolving rules over multiple tables etc.

basically if you replace the rdbms table structures and associations 
with a dom you have what we already have (patents anyone?)

it works but:

1. in a general sense we discovered there is no unique solution to some 
problems and the nature of the relationship between nodes is critical to 
a correct calculation (a full descending dom approach would probably 
avoid this problem, but it is not really general and when you factor in 
xquery you will run into very major problems)
2. to work well you need to build in a calculus, and then programmers 
tend to fail as the system takes over (ref perma thread on recursion etc)
3. depth of calculation becomes a real issue
4. and at any rate the original question was really about publishing the 
business rules, not using them.  to work, the rules will need to exist 
in the context of a schema. personally i think an extension of xsd is 
probably the correct way to do this.


David Lyon wrote:

>Hi Waleed,
>Excellent idea... I really *really* like it.....
>On Thu, 10 Mar 2005 5:16 am, Waleed Abdulla wrote:
>><xr:ruleset context="/PurchaseOrder/Item">
>>  <xr:calculate target="ItemTotal" value="UnitPrice * Quantity" />
>>  <xr:bind target=".">
>>    <xr:property name="OverLimit" dvalue="boolean(. &gt; ../MaxPerItem)" />
>>  </xr:bind>
>>And, this is a sample purchase order:
>>  <MaxPerItem>300</MaxPerItem>
>>  <Item>
>>    <Quantity>2</Quantity>
>>    <UnitPrice>30</UnitPrice>
>>    <ItemTotal>60</ItemTotal>
>>  </Item>
>Maybe I could use it in my markup?
>I would embed the calculations directly in the xml.. Here I've
>added an explanation mark to denote a formula, and keeping
>the # to denote that the field return type will be a number or 
>a ? in the case of a boolean. This would give me something 
>a little more compact that would look like this:
> <PurchaseOrder>
>   MaxPerItem#=300
>   <Item>
>     Quantity#=2
>     UnitPrice#=30
>     ItemTotal#!="UnitPrice# * Quantity#" 
>     OverLimit?!="Quantity# > ../MaxPerItem"
>   </Item>
> </PurchaseOrder>
>There are a number of applications in real life business
>documents for this:
> - US sales tax calculations
> - Intercountry tax/GST/VAT issues
> - (the afformentioned) shipping costs
> - the ability to incorporate events.. 
>Actually this whole idea is not dissimilar to linking
>and calculations within spreadsheets. Providing the
>scope stays within the document... I think that it is
>quite a good idea.
>It's definitely something worth pursuing further !
>Best Regards

fn:Rick  Marshall
tel;cell:+61 411 287 530


These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.