- From: Rajneesh Shukla <rajneeshshukla@gmail.com>
- Date: Mon, 24 Feb 2020 20:30:31 +0530
- To: Mukul Gandhi <gandhi.mukul@gmail.com>
- Cc: "xmlschema-dev@w3.org" <xmlschema-dev@w3.org>
- Message-ID: <CAFAat38qhHcGoTuJXzNW7Z_D0GXjtr=2Oz1cvPa_QD6-kJTk5Q@mail.gmail.com>
Hi Mukul, One more help please: Is it possible to impose required constraint at value level? for example in below xml, I wnt to make sure value for alias1, coli1 and operator is always populated in condition element within where element. functionalView name="CLAIMS_FV" description="Learning Purpose"> <columns> <column name="CLAI.CODE" columnAlias="CODE" description="The code of the claim" /> <column name="CLLI.CODE" columnAlias="LINE_CODE" description="The code of the claim line" /> <column name="PROC.CODE" columnAlias="PROC_CODE" description="The code of the claim line procedure" /> </columns> <fromviews> <fromview name="CLAIMS_V" alias="CLAI" /> <fromview name="LINES_V" alias="CLLI" /> <fromview name="PROC_V" alias="PROC" /> <fromview name="PROV_V" alias="PROV" /> <fromview name="FORMS_V" alias="CLFO"/> <fromview name="FORMTYPES_V" alias="CFTY"/> </fromviews> <joins> <join alias1="CLLI" col1="CLAI_ID" condition="=" alias2="CLAI" col2="ID"/> <join alias1="CLFO" col1="ID" condition="=" alias2="CFTY" col2="CLFO_ID"/> <join alias1="CFTY" col1="ID" condition="=" alias2="PROC" col2="CFTY_ID"/> <leftouterjoin alias1="PROV" col1="ID" condition="=" alias2="CLAI" col2="PROVIDER_ID"/> </joins> <where> <condition alias1="CFTY" col1="CODE" operator="=" string="" number="" date= "" /> </where> </functionalView> Thanks, Rajneesh On Mon, 24 Feb 2020 at 13:39, Rajneesh Shukla <rajneeshshukla@gmail.com> wrote: > 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 15:00:57 UTC