XSD with "required" attribute option related query

Ask general questions here.
rajneesh
Posts: 2
Joined: Fri Feb 21, 2020 12:54 pm

XSD with "required" attribute option related query

Post by rajneesh » Fri Feb 21, 2020 12:56 pm

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.

Thanks,
Rajneesh

User avatar
odklizec
Ranorex Guru
Ranorex Guru
Posts: 7470
Joined: Mon Aug 13, 2012 9:54 am
Location: Zilina, Slovakia

Re: XSD with "required" attribute option related query

Post by odklizec » Mon Feb 24, 2020 10:25 am

Hi,

I'm afraid, there is no other way than to write a XML reader and obtain the list of attributes and their values from code. I would suggest to start with these posts:
https://stackoverflow.com/questions/933 ... mldocument
https://www.codeproject.com/Questions/6 ... eplusvalue
Pavel Kudrys
Ranorex explorer at Descartes Systems

Please add these details to your questions:
  • Ranorex Snapshot. Learn how to create one >here<
  • Ranorex xPath of problematic element(s)
  • Ranorex version
  • OS version
  • HW configuration

rajneesh
Posts: 2
Joined: Fri Feb 21, 2020 12:54 pm

Re: XSD with "required" attribute option related query

Post by rajneesh » Mon Feb 24, 2020 4:55 pm

Thank you, 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>



Below is respective XSD for reference:



<?xml version="1.0" encoding="UTF-8"?>

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="functionalView" >

<xs:complexType>

<xs:sequence>

<xs:element name="columns">

<xs:complexType>

<xs:sequence>

<xs:element name="column" maxOccurs="unbounded" minOccurs="1">

<xs:complexType>

<xs:simpleContent>

<xs:extension base="xs:string">

<xs:attribute type="xs:string" name="name" use="required"/>

<xs:attribute type="xs:string" name="columnAlias" use="required"/>

<xs:attribute type="xs:string" name="description" use="required"/>

</xs:extension>

</xs:simpleContent>

</xs:complexType>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name="fromviews" maxOccurs="1" minOccurs="1">

<xs:complexType>

<xs:sequence>

<xs:element name="fromview" maxOccurs="unbounded" minOccurs="2">

<xs:complexType>

<xs:simpleContent>

<xs:extension base="xs:string">

<xs:attribute type="xs:string" name="name" use="required"/>

<xs:attribute type="xs:string" name="alias" use="required"/>

</xs:extension>

</xs:simpleContent>

</xs:complexType>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name="joins" maxOccurs="1" minOccurs="1">

<xs:complexType>

<xs:choice maxOccurs="unbounded" minOccurs="1">

<xs:element name="join" maxOccurs="unbounded" minOccurs="0">

<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="condition" use="required"/>

<xs:attribute type="xs:string" name="alias2" use="required"/>

<xs:attribute type="xs:string" name="col2" use="required"/>

</xs:extension>

</xs:simpleContent>

</xs:complexType>

</xs:element>

<xs:element name="leftouterjoin" maxOccurs="unbounded" minOccurs="0">

<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="condition" use="required"/>

<xs:attribute type="xs:string" name="alias2" use="required"/>

<xs:attribute type="xs:string" name="col2" use="required"/>

</xs:extension>

</xs:simpleContent>

</xs:complexType>

</xs:element>

</xs:choice>

</xs:complexType>

</xs:element>

<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>

</xs:sequence>

<xs:attribute type="xs:string" name="name"/>

<xs:attribute type="xs:string" name="description"/>

</xs:complexType>

</xs:element>

</xs:schema>





Thanks,

Rajneesh