What is XML?

XML stands for EXtensible Markup Language
XML is a markup language much like HTML (though they have difference too) XML was designed to describe data
XML tags are not predefined. You must define your own tags
XML uses a Document Type Definition (DTD) or an XML Schema to describe the data

From the following simple XML code, you will have a brief idea of the structure of XML.

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!--Simple XML Code -->

note

toCindy</to

fromMike</from

headingReminder</heading

bodyDon't forget to call me this weekend!</body

</note

The very first line defines the XML version and the character encoding used in the document. In this case, the document conforms to 1.0 specification of XML and uses the ISo-8859-1(Latin-1/West European) character set. The second line is comment an the third line <note> describe the root elements of the document. The following four lines describe four child elements of the root. And the last line defines the end of the root (</note>).

From this example, we will talk about the next topic:

Well formed XML (XML syntax rules)

1. Every element must have a CLOSING TAG.

Example: toCindy</to is right while toCindy is not right.

2. XML tags are CASE SENSITIVE.

Example: body> is different from <Body

bodyDon't forget to call me this weekend!</Body> is INCORRECT

3. No overlapping tags

Example: biThis text is bold and italic/b/iis not right while

biThis text is bold and italic</i/bis right.

4. All XML documents must have a rootelement. (All XML documents must contain a single tag pair to define a root element.)

Example: In the previous simple code example, noteand </notedefines the root element.

5. Attribute values must always be quoted(but either single or double quotes can be used)

Example: Make a little change to the above code:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!--Simple XML Code -->

note date=12/01/03

toCindy</to

fromMike</from

headingReminder</heading

bodyDon't forget to call me this weekend!</body

</note

The date attribute of the note element is not quoted and is not correct. The correct syntax should be

note date=”12/01/03”

6. White Space is reserved in XML

Unlike HTML, white space can not be stripped off in XML.

Example:

Hi How are you doing?

This sentence will display in XML with all the spaces in between “Hi” and “How” while in HTML, it will display just like: Hi How are you doing?

7. XML elements must follow these naming rules:

  • Names can contain letters, numbers, and other characters
  • Names must not start with a number or punctuation character (<2name> is incorrect)
  • Names must not start with the letters xml (or XML or Xml , <xmlfile> is invalid)
  • Names cannot contain spaces (<last name is invalid)

Display XML

As you can see from the above example, XML document is much like some describing text file with self-defined tags. In fact, if you try to see the .xml file using your IE or Netscape browser, it will just show you the plain text with all the tags and comments in your code. XML itself can not be viewed as some web page.

In fact, there are different solutions to display XML, and I will give you three major ones in the following: CSS, XSL and JavaScript

CSS is Cascading Style Sheets, it is a separate file named in .css

To display XML file using CSS, just add another line of code in XML to include the css file.

<?xml-stylesheet type="text/css" href="cd_catalog.css"?> and the cd_catalog.css file looks like this:

CATALOG

{

background-color: #ffffff;

width: 100%;

}

CD

{

display: block;

margin-bottom: 30pt;

margin-left: 0;

}

TITLE

{

color: #FF0000;

font-size: 20pt;

}

ARTIST

{

color: #0000FF;

font-size: 20pt;

}

COUNTRY,PRICE,YEAR,COMPANY

{

Display: block;

color: #000000;

margin-left: 20pt;

}

In this way, the modified xml file will display like this:

You can compare to the original xml file display without css file.

The second solution to display XML file is using XSL.

XSL stands for Extensible Stylesheet Language.

Following is an XSL file:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!--Edited with XML Spy v4.2 -->

xsl:stylesheet version="1.0"xmlns:xsl="">

xsl:template match="/">

html

body

h2My CD Collection</h2

table border="1">

tr bgcolor="#9acd32">

th align="left">Title</th

th align="left">Artist</th

</tr

<!--<xsl:for-each select="catalog/cd[artist='Bob Dylan']">-->(select records with artist equal to ‘Bob Dylan’)

xsl:for-each select="catalog/cd">

<!--<xsl:if test="price&gt;10">-->(select price greater than 10)

tr

td

xsl:value-ofselect="title" />

</td

td

xsl:value-ofselect="artist" />

</td

</tr

<!--</xsl:if>-->

</xsl:for-each

</table

</body

</html

</xsl:template

</xsl:stylesheet

In the above XSL code, the line

xsl:stylesheet version="1.0"xmlns:xsl="">

declares the document to be an XSL style sheet. Notice, either <xsl:stylesheet> or <xsl:transform is correct declaration.

The line xsl:template match="/"> describe a template element with certain attribute. The <xsl:template> element contains rules to apply when a specified node is matched. The match attribute is used to associate the template with an XML element. The match attribute can also be used to define a template for a whole branch of the XML document (i.e. match="/" defines the whole document).

Save the above code as cd_catalog.xsl and include this xsl file in the original XML file as:

<?xml-stylesheet type="text/xsl" href="cd_catalog.xsl"?>

The display of the modified XML file with xsl looks like:

If you add the “if” displaying condition in your XSL file (the commented lines in the above), the output of the XML will change to

which select all the records with cd price greater than 10 dollars.

The third solution for displaying XML is using JavaScirpt. This will be shown in next XML application after we introducing the XML Server.

XML Server

  • You can store XML file on your server, in exactly the same way as save a HTML file.
  • You can generate XML file with ASP

<%

response.ContentType="text/xml"

response.Write("<?xml version='1.0' encoding='ISO-8859-1'?>")

response.Write("<note>")

response.Write("<from>Jani</from>")

response.Write("<to>Tove</to>")

response.Write("<message>Remember me this weekend</message>")

response.Write("</note>")

%>

Use your browser to see the .asp file above; you will get the same result as a plain xml file.

  • You can get XML from a database without any pre_installed XML software. For example:

<%

response.ContentType = "text/xml"

set conn=Server.CreateObject("ADODB.Connection")

conn.provider="Microsoft.Jet.OLEDB.4.0;"

conn.open server.mappath("/ado/database.mdb")

sql="select fname,lname from tblGuestBook"

set rs=Conn.Execute(sql)

rs.MoveFirst()

response.write("<?xml version='1.0' encoding='ISO-8859-1'?>")

response.write("<guestbook>")

while (not rs.EOF)

response.write("<guest>")

response.write("<fname>" & rs("fname") & "</fname>")

response.write("<lname>" & rs("lname") & "</lname>")

response.write("</guest>")

rs.MoveNext()

wend

rs.close()

conn.close()

response.write("</guestbook>")

%>

Next, Let us have a look at a XML application using JavaScript and to display.

One XML Application

The following html code will include the cd_catalog.xml we mentioned before. Meanwhile, it will use the JavaScript for a fancy selected display.

<html>

<head>

<script type="text/javascript">

function testclick(field)

{

var row=field.rowIndex

xmldso_list.recordset.absoluteposition=row

td_title.innerHTML=xmldso_list.recordset("TITLE")

td_artist.innerHTML=xmldso_list.recordset("ARTIST")

td_year.innerHTML=xmldso_list.recordset("YEAR")

td_country.innerHTML=xmldso_list.recordset("COUNTRY")

td_company.innerHTML=xmldso_list.recordset("COMPANY")

td_price.innerHTML=xmldso_list.recordset("PRICE")

}

</script>

</head>

<body>

<xml id="xmldso_list" src="cd_catalog.xml"</xml><!—-Load the document into a DataIsland. This is how you get to your xml file inside a HTML file. With the example code above, the XML file "cd_catalog.xml" will be loaded into an "invisible" DataIsland called "xmldso_list".

-->

<table border="1" bgcolor="yellow"><!—Display the first row of the table-->

<tr align="left"<th>Title: </th<td id="td_title"</td</tr>

<tr align="left"<th>Artist: </th<td id="td_artist"</td</tr>

<tr align="left"<th>Year: </th<td id="td_year"</td</tr>

<tr align="left"<th>Country:</th<td id="td_country"</td</tr>

<tr align="left"<th>Company:</th<td id="td_company"</td</tr>

<tr align="left"<th>Price: </th<td id="td_price"</td</tr>

</table>

<p<b>Click on one of the CDs in the list:</b</p>

<table datasrc="#xmldso_list" border="1"<!--To make your XML data visible on your HTML page, you must "bind" your XMLDataIsland to an HTML element.To bind your XML data to an HTML table, add a data source attribute to the table

-->

<thead>

<tr align="left">

<th>Title</th>

<th>Artist</th>

<th>Country</th>

<th>Company</th>

<th>Price</th>

<th>Year</th>

</tr>

</thead>

<tr align="left" onclick="testclick(this)"><!—Call JavaScript to select the record to be displayed-->

<td<div datafld="TITLE" /</td>

<td<div datafld="ARTIST" /</td>

<td<div datafld="COUNTRY" /</td>

<td<div datafld="COMPANY" /</td>

<td align="right"<div datafld="PRICE" /</td>

<td<div datafld="YEAR" /</td>

</tr>

</table>

</body>

</html>

Conclusion:

XML is a universal data exchange format. It is self-defined and extensible.

XML can do client-side processing and manipulation of data

XML can be used in a variety of areas: Electronic Commerce, Creating other markup languages (WML, WAP…), Advanced Search Engine, Web-based Control Systems, etc.

XML has been widely used and will be the most important universal markup language in the near future.

Reference:

  1. Applied XML: a toolkit for programmers/Alex Ceponkus, Faraz Hoodbhoy. 1999
  2. (find all the examples shown in this lecture and try it yourself)
  3. Professional XML and ASP

XML Questions:

Multiple Choices:

1. What does XML stand for?

a. eXtensible Markup Language

b. Example Markup Language

c. X-Markup Language

d. eXtra Modern Link

2. What is the correct syntax of the declaration which defines the XML version?

a. <?xml version=”1.0”?>

b. <?xml version=”1.0”/>

c. <xml version=”1.0”/>

3. Which statement is true?

a. All XML elements must be lower case

b. All XML documents must have a DTD

c. All XML elements must have a closing tag

d. All the statements are true

4. Which is not a correct name for XML element?

a.<Note>

b. All 3 names are incorrect

c.<1dollar>

d.<h1>

5. What is a correct way of referring to a stylesheet called “mystyle.xsl”?

a. <stylesheet type =”text/xsl” href = “mystyle.xsl”/>

b. <link type=”text/xsl” href=”mystyle.xsl”>

c. <?xml-stylesheet type=”text/xsl” href=”mystyle.xsl”?>

True False:

1. XML’s goal is to replace HTML

2. Is this a correct XML document?

<?xml version="1.0"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

3. Is this a correct XML document?

<?xml version="1.0"?>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>

4. XML preserve white spaces

5. XML attribute values must always be enclosed in quotes

Fill in Blanks:

1. XSL stands for:______

2. List three of the solutions to display XML file on a browser:______,

______, ______

3. List the potential areas that XML might be applied (at least two)______,

______, ______,

4. List three differences between XML and HTML.

______,

______,

______.

5. XML stands for: ______.

Answers:

Multiple choices: 1.a 2. a. 3. c. 4. c. 5.c.

True False: 1. F 2.T 3.F 4.T 5.T

Fill in Blanks:

1.eXtensible Stylesheet Language

2.CSS, JavaScript, XSL

3.Electronic Commerce, Creating other markup Languages, Advanced Search Engines, Web-Based control systems

4.XML must have a closing tag while HTML don’t

XML’s tag can not be overlapping while HTML don’t

XML use “self-defined” tags while HTML use “pre-defined” tags

XML tags are case sensitive while HTML are not.

5. EXtensible Markup Language