- From: Pete Cordell <petexmldev@codalogic.com>
- Date: Wed, 15 Dec 2010 09:19:03 -0000
- To: "Andy Davidson" <andy_davidson@apple.com>, <xmlschema-dev@w3.org>
Hi Andy,
Would something like the following work?
<group name="POSTransactionLineItemDiscountByAmount"
id="POSTransactionLineItemDiscountByAmount">
<sequence>
<element name="discountAmount" type="decimal" minOccurs="0"/>
<element name="discountAmountReasonCode" type="string" minOccurs="0"/>
</sequence>
</group>
<group name="POSTransactionLineItemDiscountByPercent">
<sequence>
<element name="discountPercentage" type="decimal" minOccurs="0"/>
<element name="discountPercentageReasonCode" type="string"
minOccurs="0"/>
</sequence>
</group>
<complexType name="POSTransactionLineItemDiscount">
<sequence>
<choice>
<sequence>
<group ref="pos:POSTransactionLineItemDiscountByAmount" />
<group ref="pos:POSTransactionLineItemDiscountByPercent"
minOccurs="0" />
</sequence>
<group ref="pos:POSTransactionLineItemDiscountByPercent" />
</choice>
</sequence>
</complexType>
i.e. ((a & b?) | b)
Also, do you mean your group members such as discountAmount to have
minOccurs="0"? I think this defeats your wanting to have your & condition
as POSTransactionLineItemDiscountByAmount &
POSTransactionLineItemDiscountByPercent may be present but
POSTransactionLineItemDiscountByPercent could be empty.
HTH,
Pete Cordell
Codalogic Ltd
Interface XML to C++ the easy way using C++ XML
data binding to convert XSD schemas to C++ classes.
Visit http://codalogic.com/lmx/ or http://www.xml2cpp.com
for more info
----- Original Message -----
From: "Andy Davidson" <andy_davidson@apple.com>
To: <xmlschema-dev@w3.org>
Sent: Wednesday, December 15, 2010 3:43 AM
Subject: trouble with content models
Hi
its been a while since I worked with XML Schema. I am not sure I am posting
to the correct group. I want to define a content model (a | b | (a &b))
Any idea how I can do this?
I have tried various version of the following I keep getting the following
validation error from Eclipse on my POSTransactionLineItemDiscount type
cos-nonambig: discountAmount and discountAmount (or elements from their
substitution group) violate "Unique Particle Attribution". During validation
against this schema, ambiguity would be created for those two particles.
<group name="POSTransactionLineItemDiscountByAmount"
id="POSTransactionLineItemDiscountByAmount">
<sequence>
<element name="discountAmount" type="decimal" minOccurs="0"/>
<element name="discountAmountReasonCode" type="string" minOccurs="0"/>
</sequence>
</group>
<group name="POSTransactionLineItemDiscountByPercent">
<sequence>
<element name="discountPercentage" type="decimal" minOccurs="0"/>
<element name="discountPercentageReasonCode" type="string"
minOccurs="0"/>
</sequence>
</group>
<group name="POSTransactionLineItemDiscountByAmountAndPercent">
<sequence>
<element name="discountAmount" type="decimal" minOccurs="0"/>
<element name="discountAmountReasonCode" type="string"
minOccurs="0"/>
<element name="discountPercentage" type="decimal" minOccurs="0"/>
<element name="discountPercentageReasonCode" type="string"
minOccurs="0"/>
</sequence>
</group>
<complexType name="POSTransactionLineItemDiscount">
<sequence>
<choice>
<group ref="pos:POSTransactionLineItemDiscountByAmountAndPercent" />
<group ref="pos:POSTransactionLineItemDiscountByAmount" />
<group ref="pos:POSTransactionLineItemDiscountByPercent" />
</choice>
</sequence>
</complexType>
I guess I could define a complex base type, and have three extensions to
cover the 3 possible content valid content models. How ever this would
require me to rework some legacy java applications
thanks
Andy
Received on Wednesday, 15 December 2010 09:19:41 UTC