Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Is it possible to impose required constraint at value level?

Status
Not open for further replies.

rajneesh4u

Systems Engineer
Feb 21, 2020
5
IN
Hello All,

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="
<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
 
Rajneesh, you may impose restrictions on the value of elements or attributes.

For instance, to force the attribute to be non-empty, define a type of non-empty string and make the attribute of that type instead of xs:string.

The type definition:
Code:
<!-- must have at least one character -->
  <xs:simpleType name="nonEmptyString">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
    </xs:restriction>
  </xs:simpleType>

And the attribute definitions:
Code:
<!-- when present, attributes must not be empty -->
              <xs:element name="condition" maxOccurs="unbounded" minOccurs="1">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:string">
                      <xs:attribute type="nonEmptyString" name="alias1" use="required"/>
                      <xs:attribute type="nonEmptyString" name="col1" use="required"/>
                      <xs:attribute type="nonEmptyString" name="operator" use="required"/>
                      <xs:attribute type="nonEmptyString" name="string" use="optional"/>
                      <xs:attribute type="nonEmptyString" name="number" use="optional"/>
                      <xs:attribute type="nonEmptyString" name="date" use="optional"/>
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top