An attribute is declared as a simple type.
What is an Attribute?
Remember that a simple element can't have attributes.
So, if an element has attributes, it is a complex type.
But the attribute is defined as a simple type.
How to Define an Attribute?
The syntax for defining an attribute is as follows:
<xs:attribute name="my-name" type="my-type"/>
- my-name is the name of the attribute
- my-type is the data type of the attribute.
XML Schema has a lot of built-in data types. The most common type are:
<xs:attribute name="lang" type="xs:string"/>
Default and Fixed Values for Simple Elements
Attributes can have a default value or a fixed value specified.
A default value is automatically assigned to the attribute when no other value is specified. For example
<xs:attribute name="lang" type="xs:string" default="EN"/>
A fixed value is also automatically assigned to the attribute, and you can't specify another value. For example
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
Optional and Required Attributes
All attributes are optional by default.
To specify that an attribute is required, just use the
<xs:attribute name="lang" type="xs:string" use="required"/>
Restrictions on Content
When an XML element or attribute has a defined data type, it places restrictions on the content of the element or attribute.
For example, if an XML element is of type
xs:date and contains a string like
Hello World, the element will not be validated.
With XML Schemas, you can also add your own restrictions to your XML elements and attributes. These restrictions are called facets. You can read more about facets here.