Generating XML Schema Dynamically Using VB.NET 2005: Working With Attributes - Generate XML Schema attributes dynamically using .NET framework: 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. Let us take a look at the definitions of the main elements like “Organization”, “Employee” and so on.
Dim eOrganization As New XmlSchemaElement
schema.Items.Add(eOrganization)
eOrganization.Name = "Organization"
Dim ctOrganization As New XmlSchemaComplexType
eOrganization.SchemaType = ctOrganization
Dim sqOrganization As New XmlSchemaSequence
ctOrganization.Particle = sqOrganization
The above creates a new element (root) “Organization,” defines it as a complex type, and internally contains the elements in the form of a sequence. The “Employee” element would look similar to the above element as follows:
Dim eEmployee As New XmlSchemaElement()
sqOrganization.Items.Add(eEmployee)
eEmployee.Name = "Employee"
eEmployee.MaxOccursString = "unbounded"
Dim ctEmployee As New XmlSchemaComplexType()
eEmployee.SchemaType = ctEmployee
Dim sqEmployee As New XmlSchemaSequence
ctEmployee.Particle = sqEmployee
The only extras in the above code fragment are the following:
- Add the “Employee” element as an element inside the “Organization” element (second statement)
- The “Employee” element could be repeated any number of times within the “Organization” element (fourth statement).
Besides the above two points, all the rest is the same. As 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 can be done as follows:
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 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")
According to the above code fragment, we create a new XML schema attribute (“eID”) and add it to the list of attributes related to the complex type of “Employee” element (second statement in the above code). I wanted to make sure that “ID” is a compulsory attribute to every “Employee” element (which is enforced in the fourth statement).
A reasonable 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: Generate more XML Schema attributes dynamically using .NET framework: a sample schema and XML >>
More Visual Basic.NET Articles
More By Jagadish Chaterjee