Generating Restrictions in XML Schema Dynamically Using VB.NET 2005: Preliminaries - Restrictions (or constraints) in XML Schema: explanation
(Page 3 of 5 )
This section explains the code fragment listed in the previous section. Let us examine it part by part. I am excluding some of the parts which are already explained in previous articles.
Since the “Employee” element itself is of the complex type, we can add any number of child elements to it. Adding a “Name” element (child) to the “Employee” element looks like this:
Dim eName As New XmlSchemaElement()
sqEmployee.Items.Add(eName)
eName.Name = "Name"
eName.SchemaTypeName = New XmlQualifiedName("string",
"http://www.w3.org/2001/XMLSchema")
And similarly I added another element, “Age,” as well. After adding all the elements (or child elements) to the “Employee” element, we need to add the required attribute (which is “ID”). The following code fragment shows how to add an attribute to a complex type of element:
Dim eID As New XmlSchemaAttribute()
ctEmployee.Attributes.Add(eID)
eID.Name = "ID"
eID.Use = XmlSchemaUse.Required
eID.SchemaTypeName = New XmlQualifiedName("int",
"http://www.w3.org/2001/XMLSchema")
And finally we need to focus on the restriction we applied to the XML schema. The following is the main code fragment which implements the restriction.
Dim simpleType As New XmlSchemaSimpleType()
eAge.SchemaType = simpleType
Dim restriction As New XmlSchemaSimpleTypeRestriction()
simpleType.Content = restriction
restriction.BaseTypeName = New XmlQualifiedName
("integer", "http://www.w3.org/2001/XMLSchema")
Dim maxInclusive As New XmlSchemaMaxInclusiveFacet()
restriction.Facets.Add(maxInclusive)
maxInclusive.Value = "100"
To apply the restriction, first of all we need to create a “simple type.” The content of the simple type needs to be assigned with an object based on the “XmlSchemaSimpleTypeRestriction” class. Within the above code fragment, I created an object “restriction” based on the same class and assigned it to the “content” property of the simple type.
Any “restriction” is generally based on a certain base type and in this case, the base type would be an “integer” type. Once the base type is fixed, we can now attach the appropriate facet for the restriction. I used the “maxInclusive” facet which restricts based on the maximum value (inclusive of the value itself). The maximum value to accept into the “Age” element is defined as “100.” An acceptable XML document conforming to the above XML Schema would be as follows:
<?xml version="1.0" encoding="UTF-8"?>
<Organization xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:noNamespaceSchemaLocation="C:\Documents and
Settings\Administrator\Desktop\ForDec\ForDec\XSLT\XMLExamples\02
\Sample.xsd">
<Employee ID="1001">
<Name>Jag</Name>
<Age>27</Age>
</Employee>
<Employee ID="1002">
<Name>Winner</Name>
<Age>20</Age>
</Employee>
</Organization>
Next: Extending the previous restriction with minExclusive >>
More Visual Basic.NET Articles
More By Jagadish Chaterjee