- From: Rajneesh Shukla <rajneeshshukla@gmail.com>
- Date: Mon, 24 Feb 2020 13:39:38 +0530
- To: Mukul Gandhi <gandhi.mukul@gmail.com>
- Cc: "xmlschema-dev@w3.org" <xmlschema-dev@w3.org>
- Message-ID: <CAFAat3-3+d6qJYPusL4qqEKMtE2mF3eTNdgdLLHr0pmSC_8cWw@mail.gmail.com>
Hi Mukul, Thanks for your reply. I am working inside the database, it won't be possible. Oracle XML DB only supports XML Schema 1.0. Thanks, Rajneesh On Sat, 22 Feb 2020 at 11:27, Mukul Gandhi <gandhi.mukul@gmail.com> wrote: > Hi Rajneesh, > Within the XSD document you've attached, following is a XSD issue to > start with (using Xerces-J 2.12.1 as XSD validator), > > [Error] query1.xsd:3:67: s4s-att-not-allowed: Attribute 'maxOccurs' cannot > appear in element 'element'. > [Error] query1.xsd:3:67: s4s-att-not-allowed: Attribute 'minOccurs' cannot > appear in element 'element'. > > i.e, the following is not allowed by XSD language, > > <xs:schema attributeFormDefault="unqualified" > elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema > "> > > <xs:element name="functionalView" maxOccurs="1" minOccurs="1"> > ... > > </xs:schema> > > Removing, maxOccurs="1" minOccurs="1" from above shown xs:element > declaration from your attached XSD document, makes your XSD document > correct (with both 1.0 and 1.1 versions of XSD language). > > Now coming to your question. > I think that, the issue you've mentioned can be solved using an XSD 1.1 > <assert> instruction. I guess that, you can rewrite your XSD fragment to > following (I've only added an <assert>), to achieve what you've mentioned, > > <xs:element name="where" maxOccurs="1" minOccurs="0"> > <xs:complexType> > <xs:sequence> > <xs:element name="condition" maxOccurs="unbounded" > minOccurs="1"> > <xs:complexType> > <xs:simpleContent> > <xs:extension base="xs:string"> > <xs:attribute type="xs:string" > name="alias1" use="required"/> > <xs:attribute type="xs:string" > name="col1" use="required"/> > <xs:attribute type="xs:string" > name="operator" use="required"/> > <xs:attribute type="xs:string" > name="string" use="optional"/> > <xs:attribute type="xs:string" > name="number" use="optional"/> > <xs:attribute type="xs:string" > name="date" use="optional"/> > <xs:assert > test="exists(@string | @number | @date)"/> > </xs:extension> > </xs:simpleContent> > </xs:complexType> > </xs:element> > </xs:sequence> > </xs:complexType> > </xs:element> > > I've not tested, the logic of <assert> I've mentioned above. > > Could be useful information to share that, you may use the full XPath 2.0 > language, to write value of 'test' attribute of an <assert>. Also, 1 upto > any number of <assert> elements can be written as siblings in the XSD > document (all of the sibling <assert> elements, have to evaluate to true > for having the XML instance document valid). > > On Fri, Feb 21, 2020 at 11:16 PM Rajneesh Shukla <rajneeshshukla@gmail.com> > wrote: > >> Hello All, >> >> I am new to XSD and XML and need to explore if there is option to make >> sure that any one attribute in a set of attributes within same element is >> required. >> >> Example: >> >> <xs:element name="where" maxOccurs="1" minOccurs="0"> >> <xs:complexType> >> <xs:sequence> >> <xs:element name="condition" maxOccurs="unbounded" >> minOccurs="1"> >> <xs:complexType> >> <xs:simpleContent> >> <xs:extension base="xs:string"> >> <xs:attribute type="xs:string" name="alias1" >> use="required"/> >> <xs:attribute type="xs:string" name="col1" >> use="required"/> >> <xs:attribute type="xs:string" name="operator" >> use="required"/> >> <xs:attribute type="xs:string" name="string" >> use="optional"/> >> <xs:attribute type="xs:string" name="number" >> use="optional"/> >> <xs:attribute type="xs:string" name="date" >> use="optional"/> >> </xs:extension> >> </xs:simpleContent> >> </xs:complexType> >> </xs:element> >> </xs:sequence> >> </xs:complexType> >> </xs:element> >> >> Here I want to ensure that minimum one attribute in a set of 3 >> attributes (mentioned as optional in above) are required. All can not be >> optional , however any one (can be more than one also) is required. >> >> Thanking you in anticipation !!! >> >> Attachment: >> Complete XSD file. >> > > > > -- > Regards, > Mukul Gandhi >
Received on Monday, 24 February 2020 08:10:01 UTC