That I am working on?:
I am generating an XML schema that controls the inclusion of a logical expression in a program.
There are logical operator (https://en.wikipedia.org/wiki/Logical_connective):
- Unary (now only work with not) (force MaxOccurss=1 of LOGIC_VALUES)
- Binary (and,or) (force MaxOccurss=Unbounded of LOGIC_VALUES)
You can see the visual schema of code:
Current code, which does not have the requested functionality
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
<xs:element name="LOGIC_EXPRESSION">
<xs:complexType>
<xs:all>
<xs:element name="LOGIC_OPERATOR" type="TYPE_LOGIC_OPERATOR"/>
<xs:element ref="LOGIC_VALUES"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="LOGIC_VALUES">
<xs:complexType>
<xs:choice>
<xs:element name="LOGIC_VALUE" minOccurs="1" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:simpleType name="TYPE_LOGIC_OPERATOR">
<xs:restriction base="xs:string">
<xs:enumeration value="and"/>
<xs:enumeration value="or"/>
<xs:enumeration value="not"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
What do I need?
I need know:
- If possible in the restriction of logic operator you can force the maxOccur of Logic_Values (dynamic change of maxoccurs to other element)
- If it is possible to do, what should I use?
Example of what I want
You are writting the next XML code:
<?xml version="1.0" encoding="UTF-8"?>
<LOGIC_EXPRESSION xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:/media/sf_Downloads/xml/Beta.xsd">
<LOGIC_OPERATOR>not</LOGIC_OPERATOR>
<LOGIC_VALUES>
<LOGIC_VALUE>Variable1</LOGIC_VALUE>
<LOGIC_VALUE>Variable2</LOGIC_VALUE>
</LOGIC_VALUES>
</LOGIC_EXPRESSION>
The XML schema should detect that it is a unary operator and you should receive an error.
Thaks a million