Click here to return to our home page

Chicago & Suburbs

Ascend Training & Consulting

847-914-9610

Desktop Design

847-677-6666

Wisconsin

Digital Design Tools

608-345-5403

 

Chicago & Suburbs

Ascend Training & Consulting

847-914-9610

Desktop Design

847-677-6666

Wisconsin

Digital Design Tools

608-345-5403

 

Our training is available to your training center.

Click here to learn how you can add XML training to your offerings, get your name on this list today!

 
Fundamentals of XML Click here to read the review!
Learn some XML basics Learn how designers use XML Learn how to use XML and InDesign Learn how to use XML and QuarkXPress Learn the differences between DTD and Schemas Learn XML terminology

<?DTD vs Schema?>

Since XML is a relatively new, or immature, language it is still evolving. For example, there is a divergence in the way people are approaching the topic of XML structure.

DTDs and Schemas both perform the same basic functions:

First, they both declare a laundry list of elements and attributes.

Second, both describe how those elements are grouped, nested or used within the XML. In other words, they declare the rules by which you are allowing someone to create an XML file within your workflow, and

Third, both DTDs and schemas provide methods for restricting, or forcing, the type or format of an element. For example, within the DTD or Schema you can force a date field to be written as 01/05/06 or 1/5/2006.

But, what’s the difference between the two? Which one should you use for your project?

The answer: it depends. DTDs are better for text-intensive applications, while schemas have several advantages for data-intensive workflows. Schemas are written in XML and thusly follow the same rules, while DTDs are written in a completely different language. On the other hand, DTDs are directly supported by InDesign and QuarkXPress. To help distinguish the differences better take a look at the samples displayed below.

Sample DTD

<?xml version="1.0" encoding="UTF-8"?>
    <!ELEMENT employees (Efirstname, Elastname, Etitle, Ephone, Eemail)>
         <!ELEMENT Efirstname (#PCDATA)>
         <!ELEMENT Elastname (#PCDATA)>
         <!ELEMENT Etitle (#PCDATA)>
         <!ELEMENT Ephone (#PCDATA)>
         <!ELEMENT Eemail (#PCDATA)>

Note: See how the DTD declares an element called “employees” and how that element is constructed of the elements: “Efirstname”, “Elastname”, “Etitle”, “Ephone”, “Eemail” in that specific order. The notation #PCDATA indicates what kind of information the element can contain.

To learn more about DTDs check out the following sites:

DTD Tutorial

DocBook Specifications and FAQ

Sample Schema

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:od="urn:schemas-microsoft-com:officedata">
<xsd:element name="dataroot">
     <xsd:complexType>
          <xsd:sequence>
               <xsd:element ref="employees" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
          <xsd:attribute name="generated" type="xsd:dateTime"/>
      </xsd:complexType>
</xsd:element>
<xsd:element name="employees">
      <xsd:annotation>
           <xsd:appinfo>
               <od:index index-name="PrimaryKey" index-key="Employeeid " primary="yes"
                unique="yes" clustered="no"/>
          <od:index index-name="Employeeid" index-key="Employeeid " primary="no" unique="no"
           clustered="no"/>
     </xsd:appinfo>
</xsd:annotation>
     <xsd:complexType>
          <xsd:sequence>
               <xsd:element name="Elastname" minOccurs="0" od:jetType="text"
                od:sqlSType="nvarchar">
                    <xsd:simpleType>
                         <xsd:restriction base="xsd:string">
                              <xsd:maxLength value="50"/>
                         </xsd:restriction>
                    </xsd:simpleType>
               </xsd:element>
               <xsd:element name="Etitle" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
                    <xsd:simpleType>
                         <xsd:restriction base="xsd:string">
                              <xsd:maxLength value="50"/>
                         </xsd:restriction>
                    </xsd:simpleType>
               </xsd:element>
               <xsd:element name="Ephone" minOccurs="0" od:jetType="text"
                od:sqlSType="nvarchar">
                    <xsd:simpleType>
                         <xsd:restriction base="xsd:string">
                              <xsd:maxLength value="50"/>
                         </xsd:restriction>
                    </xsd:simpleType>
               </xsd:element>
               <xsd:element name="Eemail" minOccurs="0" od:jetType="text"
               od:sqlSType="nvarchar">
                    <xsd:simpleType>
                         <xsd:restriction base="xsd:string">
                              <xsd:maxLength value="50"/>
                         </xsd:restriction>
                    </xsd:simpleType>
               </xsd:element>
               <xsd:element name="Ephoto" minOccurs="0" od:jetType="text"
                od:sqlSType="nvarchar">
                    <xsd:simpleType>
                         <xsd:restriction base="xsd:string">
                              <xsd:maxLength value="50"/>
                         </xsd:restriction>
                    </xsd:simpleType>
               </xsd:element>
          </xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

Note: See how the schema declares the element called “employees” and describes how many times it can appear. The other statements declare the elements: “Efirstname”, “Elastname”, “Etitle”, “Ephone”, “Eemail” and then specify each element’s format, and can additionally or restrict the type of data that can stored in the field. Unlike the DTD, schemas are written in standard XML.

To learn more about schemas check out these sites:

W3C

W3 Schema Tutorial

 

     
 

Cool XML Resources

 
 

W3Schools

 
 

XML for Designers

 
 

XML Tutorial

 
 

O’Reilly XML Resources

 
 

XML and InDesign

 
 

XML FAQ

 
 

XML and Java

 
 

IBM XML Resources

 
 

 

 
 

XML Editors

 
 

Altova’s XMLSpy

 
 

SyncRO Soft’s <oXygen/>

 
     
 

We wrote the book!

XML book for Designers

Buy the book

 

 

 

 

“Cooking with XML” is a trademark of Desktop Design, all rights reserved.

Copyright © 2013, Desktop Design, Skokie, IL 847-677-6666