Xsd Elements Only in XML
? XSD Elements Only in XML
If you're focusing on elements only (and not attributes) in an XML document and want to define that using XSD, you would use complex types with only elements — no attributes included.
This is often referred to as using a "pure element content model" in XSD.
? Example 1: Elements Only – XML and XSD
XML:
<person> <name>John Doe</name> <age>30</age></person>XSD:
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="age" type="xs:integer"/> </xs:sequence> </xs:complexType></xs:element>?? This person element contains only child elements, no attributes.
? Element Content Models (Elements Only)
| Tag | Purpose |
|---|---|
xs:sequence | Children appear in a specific order |
xs:choice | Only one of the child elements can appear |
xs:all | All children must appear, but in any order |
? Example 2: xs:choice – One Element Only
XML:
<contact> <email>user@example.com</email></contact>XSD:
<xs:element name="contact"> <xs:complexType> <xs:choice> <xs:element name="email" type="xs:string"/> <xs:element name="phone" type="xs:string"/> </xs:choice> </xs:complexType></xs:element>Only one child element (email or phone) can be used — still elements only, no attributes.
? Example 3: Nested Elements Only
<order> <item> <name>Notebook</name> <quantity>2</quantity> </item></order>XSD:
<xs:element name="order"> <xs:complexType> <xs:sequence> <xs:element name="item"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="quantity" type="xs:integer"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType></xs:element>? What to Avoid (Attributes)
To keep it elements only, do not use:
<xs:attribute name="id" type="xs:string"/> <!-- ? Not allowed in elements-only design -->? Summary: "Elements Only" Design in XSD
Use only
<xs:element>tags — no<xs:attribute>Define structure with:
<xs:sequence>(ordered children)<xs:choice>(one of several)<xs:all>(unordered, required once)
Nest child elements as needed
Keep all values inside elements, not attributes
Would you like a downloadable .xsd + .xml example or want to learn how to validate these files in tools like VS Code or online validators?