Comments
Comments
provide a way to insert into an XML document text that isn't really part of the
document, but rather is intended for people who are reading the XML source itself.
Anyone
who has used a programming language will be familiar with the idea of comments:
you want to be able to annotate your code (or your XML), so that those coming
after you will be able to figure out what you were doing. (And remember: the
one who comes after you may be you! Code you wrote six months ago might be as
foreign to you as code someone else wrote.)
Of
course, comments may not be as relevant to XML as they are to programming
languages; after all, this is just data, and it's self-describing to boot. But
you never know when they're going to come in handy, and there are cases where
comments can be very useful, even in data.
Comments
start with the string <!-- and end with the string -->, as shown here:
<name nickname='Shiny John'>
<first>John</first>
<!--John lost his middle
name in a fire-->
<middle></middle>
<last>Doe</last>
</name>
There are
a couple of points that we need to note about comments. First, you can't have a
comment inside a tag, so the following is illegal:
<middle></middle
<!--John lost his middle name in a fire--> >
Second,
you can't use the string -- inside a comment,
so the following is also illegal:
<!--John lost his middle
name -- in a fire-->
The XML
specification states that an XML parser doesn't need to pass these comments on
to the application, meaning that you should never count on being able to use
the information inside a comment from your application.
HTML
programmers have often used the trick of inserting scripting code in comments,
to protect users with older browsers that didn't support the <script> tag. That kind of trick can't be
done in XML, since comments won't necessarily be available to the application.
Therefore, if you have text that you need to get at later, put it in an element or an attribute!
Try It Out – Some
Comments On Al's CD
Since
we've only included a couple of the songs from this fine album in our document,
perhaps we should inform others that this is the case. That way some kind soul
may finish the job for us!
1.
Open up your cd2.xml file, make
the following changes, and save the modified XML file as cd3.xml:
<CD serial='B6B41B'
disc-length='36:55'>
<artist>"Weird
Al" Yankovic</artist>
<title>Dare to be
Stupid</title>
<genre>parody</genre>
<date-released>1990</date-released>
<!--date-released is the
date released to CD, not to record-->
<song>
<title>Like A
Surgeon</title>
<length>
<minutes>3</minutes>
<seconds>33</seconds>
</length>
<parody>
<title>Like A
Virgin</title>
<artist>Madonna</artist>
</parody>
</song>
<song>
<title>Dare to be
Stupid</title>
<length>
<minutes>3</minutes>
<seconds>25</seconds>
</length>
<parody></parody>
</song>
<!--there are more songs
on this CD, but I didn't have time to include
them-->
</CD>
2. View this in IE5:
How It
Works
With the
new comments, anyone who reads the source for our XML document will be able to
see that there are actually more than two songs on "Dare To Be
Stupid". Furthermore, they can see some information regarding the <date-released> element, which may help them in writing applications that work with
this information.
In this
example, the XML parser included with IE5 does
pass comments up to the application, so IE5 has displayed our comments. But remember that a lot of the
time, for all intents and purposes this information is only available to people
reading the source file. The information in comments may or may not be passed up to our application, depending on which
parser we're using. We can't count on it, unless we specifically choose a
parser that does pass them through. This means that the application has no way
to know whether or not the list of songs included here is comprehensive.
Try
It Out – Making Sure Comments Get Seen
If we
really need this information, we should add in some real markup to indicate it.
3.
Modify cd3.xml like this,
and save it as cd4.xml:
<CD><!--our attributes used to be here-->
<songs>11</songs>
<!--the rest of our
XML...-->
<artist>"Weird Al" Yankovic</artist>
<title>Dare to be Stupid</title>
<genre>parody</genre>
<date-released>1990</date-released>
<song>
<title>Like A Surgeon</title>
<length>
<minutes>3</minutes>
<seconds>33</seconds>
</length>
<parody>
<title>Like A Virgin</title>
<artist>Madonna</artist>
</parody>
</song>
<song>
<title>Dare to be Stupid</title>
<length>
<minutes>3</minutes>
<seconds>25</seconds>
</length>
<parody></parody>
</song>
</CD>
4. This XML is formatted like this in IE5:
This way,
the application could be coded such that if it only finds two <song> elements, but it finds a <songs> element which contains the text "11", it can deduce that there are 9 songs missing.