<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Buzz nurter</title>
	<atom:link href="http://thebuzznutter.com/feed" rel="self" type="application/rss+xml" />
	<link>http://thebuzznutter.com</link>
	<description></description>
	<lastBuildDate>Tue, 16 Mar 2010 07:45:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ebXML Ropes in SOAP</title>
		<link>http://thebuzznutter.com/2010/03/ebxml-ropes-in-soap.html</link>
		<comments>http://thebuzznutter.com/2010/03/ebxml-ropes-in-soap.html#comments</comments>
		<pubDate>Mon, 15 Mar 2010 10:21:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[webmasters Resources]]></category>
		<category><![CDATA[Electronic Business]]></category>
		<category><![CDATA[lightweight]]></category>
		<category><![CDATA[specifications based]]></category>
		<category><![CDATA[technical specification]]></category>

		<guid isPermaLink="false">http://thebuzznutter.com/?p=559</guid>
		<description><![CDATA[The Electronic Business XML (ebXML) project released three
more technical specifications for review on 28 March, including a new draft
document on messaging services. This part of ebXML &#8212; formerly known as
transport, routing, and packaging &#8212; had made more early progress than the other
technical features, but it also came under more pressure to include the work of
other [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">The Electronic Business XML (ebXML) project released three<br />
more technical specifications for review on 28 March, including a new draft<br />
document on messaging services. This part of ebXML &#8212; formerly known as<br />
transport, routing, and packaging &#8212; had made more early progress than the other<br />
technical features, but it also came under more pressure to include the work of<br />
other initiatives, specifically the Simple Object Access Protocol (SOAP).<br />
Enhancements to the original SOAP specification made it easier for ebXML to join<br />
forces. But it also marked something of a change in operation for ebXML, now<br />
more willing to make accommodations with other related initiatives in order<br />
achieve its goal of a single worldwide e-business standard.<br />
SOAP in a Nutshell</p>
<p><span id="more-559"></span><br />
SOAP provides a simple and lightweight method for exchanging structured data. It<br />
defines the message package, offers encoding guidelines for data used in<br />
applications connected by these messages, and provides rules for representing<br />
remote procedure calls (RPCs), a type of online interaction in a distributed<br />
environment. The authors (from Microsoft Corp., IBM and its Lotus Development<br />
subsidiary, DevelopMentor, and Userland Software) submitted version 1.1 of SOAP<br />
to the W3C as a Note in May 2000.</p>
<p>SOAP&#8217;s importance extends beyond its definition of an XML-based message<br />
protocol. Several other e-business specifications based on XML &#8212; most notably<br />
BizTalk and Universal Description, Discovery and Integration (UDDI) &#8212; use SOAP<br />
for its messaging functions. </p>
<p>SOAP messages are XML documents defined in a mandatory SOAP envelope. Within the<br />
envelope are a SOAP header and body. SOAP messages must have a body, but the<br />
header is not required in all instances. The XML namespace, http://schemas.xmlsoap.org/soap/envelope/<br />
is used for the envelope. Namespaces allow access of multiple document type<br />
definitions (DTDs) or schemas in an XML document by providing a unique prefix<br />
that prevents duplication of element or attribute names.</p>
<p>The SOAP envelope serves as the first element in the document and thus<br />
identifies it as a SOAP message. The SOAP body contains the information<br />
transmitted to the receiver. Each message must have a body, so there cannot be<br />
an empty SOAP message. If the message has a SOAP header, it appears as the first<br />
child element in the envelope, and before the body.</p>
<p>The SOAP header allows the sender to add management or control information in<br />
the message, important for routing, security, or proper handling by the<br />
recipient. This element has very few rules of its own, but relies on XML<br />
namespaces identified by the sender for its semantics. <br />
Reversing an Earlier Decision</p>
<p>Including SOAP in the messaging specifications reversed an earlier decision by<br />
the ebXML messaging project team to develop its own message structure. The team<br />
had originally proposed an enveloping format combining Multipurpose Internet<br />
Mail Extensions (MIME) for the overall message envelope as well as header and<br />
body containers. In the original plan, the header container written in MIME<br />
would have XML data providing identification and description of the message.</p>
<p>At the August 2000 ebXML meeting in San Jose, California, Rik Drummond of The<br />
Drummond Group and chair of the ebXML Transport-Routing-Packaging (messaging)<br />
project team, announced the results of its review of SOAP. The review predicted<br />
that with the high production volumes often encountered in e-business, SOAP&#8217;s<br />
all-XML messaging could overwhelm most XML validators. On the other hand, the<br />
combination of MIME and XML headers proposed for ebXML messaging would likely<br />
provide more robust support. (See ebXML: Assembling the Rubik&#8217;s Cube, XML.Com,<br />
16 August 2000). </p>
<p>SOAP in its original form also did not support non-XML attachments. Some<br />
e-business messages, however, will carry non-XML binary files, such as digitized<br />
engineering drawings or patient X-rays. The messaging project team recommended<br />
the MIME multipart/related media type for the overall ebXML envelope in part for<br />
its ability to attach these binary files.</p>
<p>At the Data Interchange Standards Association (DISA) e-business conference on 8<br />
March, Drummond explained some of the reasons for this change in outlook about<br />
SOAP, and he gave a high-level view of how the pieces would fit together. He<br />
noted that new enhancements to SOAP, including the addition of MIME support,<br />
helped meet ebXML requirements, specifically the SOAP With Attachments<br />
specification. This document, submitted to the W3C as a Note in December 2000,<br />
defines a SOAP package that combines the SOAP 1.1 message with a MIME envelope<br />
to include direct attachments or references.</p>
<p>This combination of SOAP messaging in XML and MIME allowed the ebXML messaging<br />
team to specify an outside MIME envelope and subsidiary MIME parts for header<br />
and body containers. At the DISA conference, Drummond illustrated how it would<br />
work.</p>
<p align="justify">
The ebXML header container consists of a SOAP message with a SOAP header and<br />
SOAP body. The SOAP header includes the traditional functions found in business<br />
message headers, such as identification of the parties to the transaction<br />
(sender, receiver, copies). </p>
<p align="justify">
The SOAP body &#8212; still within the overall message header container &#8212; carries<br />
data cataloging the message contents, which is called a manifest in ebXML<br />
parlance. <br />
The ebXML body container carries the payload that can be in XML or any other<br />
digitized format.<br />
Intellectual property issues</p>
<p>EbXML faced more than just technical issues with SOAP. A key property of ebXML<br />
often cited by its supporters is its openness, both in its development process<br />
and its promise to make its documents freely available. For example, the ebXML<br />
requirements specification issued in May 2000 includes the following under its<br />
general business requirements:</p>
<p align="justify">
<b>An open development process with no barriers to entry<br />
Open, readily accessible, perpetually free technical specifications and<br />
standards</b></p>
<p>SOAP, on the other hand, is a product of a small group of vendors.<br />
Representatives of four companies developed SOAP, and while other companies have<br />
endorsed it, SOAP was not the product of an open consensus-based process<br />
required for accredited standards. </p>
<p>Licensing restrictions imposed by the original developers also opened issues<br />
that appear to conflict with these requirements. On 8 March, Microsoft and IBM<br />
issued statements clarifying the intellectual property issues on SOAP 1.1 and<br />
SOAP With Attachments that ebXML relayed in a press announcement. Microsoft said<br />
it will grant a license to the intellectual property rights for these<br />
specifications but only for the purpose of compliance with the specifications.<br />
The company also issued a disclaimer that users accepted the specifications<br />
as-is and would not be subject to actions resulting from consequences of their<br />
use. IBM issued a shorter statement granting a non-exclusive license to its<br />
intellectual property in SOAP upon written request. <br />
End game strategy for ebXML emerges</p>
<p>The technical architecture specifications approved by the ebXML plenary at its<br />
mid-February meeting in Vancouver, Canada, provide a technical map for the other<br />
ebXML project teams in developing the details of the technology. The document<br />
also provides a look ahead into the end game for the initiative. </p>
<p>Part of that strategy includes the critical ebXML registry specifications.<br />
Companies will have most of their early encounters with ebXML through the<br />
registries, as companies download business processes, list their capabilities to<br />
conduct e-business, and search for potential trading partners. At the same time<br />
as the release of the messaging specifications, ebXML also released for review<br />
two draft specifications for registries: one for the registry services and the<br />
other for the registry information model. The registry services document spells<br />
out the functions and operations of ebXML registries, while the information<br />
model details how registries organize and index the data they represent.</p>
<p>Also on 28 March ebXML released for review the draft trading partner profile and<br />
agreement specifications. The ebXML specifications carve out specific<br />
technically-oriented functions for trading partner information stored in<br />
registries (profiles) and the rules of the road for conducting e-business<br />
(agreements). As a result, ebXML uses the terms collaboration-protocol profiles<br />
and collaboration-protocol agreements to distinguish them from the more<br />
comprehensive trading partner profiles and agreements that contain much more<br />
than technical details.</p>
<p>EbXML expects to finish its technical specifications in May 2000 at its last<br />
meeting in Vienna, Austria. At that time, the participants plan to take up the<br />
business process and core components specifications, the last two pieces of the<br />
technology still in development.</p>
<p>Reactions to the announcement of ebXML integrating SOAP into its specifications<br />
drew general applause from industry watchers, with headlines on the major IT<br />
news sites and even a story on the Reuters news wire. The episode did serve as a<br />
reminder that competing e-business standards need to consolidate if they hope to<br />
succeed, even if it means a certain loss of innocence in making those<br />
accommodations.</p>
]]></content:encoded>
			<wfw:commentRss>http://thebuzznutter.com/2010/03/ebxml-ropes-in-soap.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Brief History of SOAP</title>
		<link>http://thebuzznutter.com/2010/03/a-brief-history-of-soap.html</link>
		<comments>http://thebuzznutter.com/2010/03/a-brief-history-of-soap.html#comments</comments>
		<pubDate>Mon, 15 Mar 2010 10:17:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[webmasters Resources]]></category>
		<category><![CDATA[Microsoft side]]></category>
		<category><![CDATA[phase of SOAP's]]></category>
		<category><![CDATA[schema language]]></category>
		<category><![CDATA[ship SOAP]]></category>

		<guid isPermaLink="false">http://thebuzznutter.com/?p=557</guid>
		<description><![CDATA[It&#8217;s been a little more than three years since I first
started working in XML in general and SOAP in particular. For the past year or
so, my own SOAP work has been pretty minimal, mainly because without a stable
XML Schema specification, the thought of building tons of SOAP support plumbing
seems pretty futile. Now that the XML [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">It&#8217;s been a little more than three years since I first<br />
started working in XML in general and SOAP in particular. For the past year or<br />
so, my own SOAP work has been pretty minimal, mainly because without a stable<br />
XML Schema specification, the thought of building tons of SOAP support plumbing<br />
seems pretty futile. Now that the XML Schema WG has more or less completed its<br />
work, it&#8217;s time to get back to work (for me at least).</p>
<p>My first &quot;official&quot; act in this next phase of SOAP&#8217;s development is to take a<br />
few minutes to retrace the steps that got us here. Hence this article.</p>
<p><span id="more-557"></span></p>
<p align="justify">
<b>In the Beginning: SOAP 98</b><br />
When SOAP started in early 1998, there was no schema language or type system for<br />
XML (in fact, XML 1.0 had just become a full Recommendation that quarter). If<br />
you look at earlier versions of the SOAP spec (including XML-RPC, which was<br />
subsetted from the 1998 SOAP spec), most of the focus was on defining a type<br />
system. The original type system of SOAP (and XML-RPC) had a handful of<br />
primitive types, composites that are accessed by name (a.k.a. structs) and<br />
composites accessed by position (a.k.a. arrays). Once we had these<br />
representational types in place, we modeled behavioral types by defining<br />
operations/methods in terms of pairs of structs and, at least on the<br />
DevelopMentor and Microsoft sides, aggregated these operations into interfaces.<br />
Hence the RPC flavor that people associate with SOAP.</p>
<p align="justify">
Was SOAP the first attempt to add a behavioral type system to XML? Not at all. I<br />
recall scanning the landscape at the time. The existing proposals either assumed<br />
a COM type system underneath (unacceptable, since even back in 1998 we knew COM<br />
wasn&#8217;t the ultimate type system) or were very EDI-like, which would alienate<br />
parts of the development community. For that reason, we looked at the existing<br />
serialization formats (ASN.1 BER, NDR, XDR, CDR, JRMP) and RPC protocols (GIOP/IIOP,<br />
DCE/DCOM, RMI, ONC) and tried to hit the sweet spot that would satisfy the 80%<br />
case elegantly but could be bent to adapt to the remaining 20% case.</p>
<p><b>So why didn&#8217;t we ship SOAP back in 1998? That one&#8217;s easy: Microsoft politics.</b></p>
<p>The original contributors to SOAP within MS worked on the COM/MTS team. At the<br />
same time, the XML group within MS was working on XML-Data, which became one of<br />
the many seeds for the XML Schema language we know today. As is often the case<br />
in large companies, the two groups within MS didn&#8217;t see eye to eye, so public<br />
support for SOAP got shelved within MS for some period of time. (As a side note,<br />
I was one of those people who didn&#8217;t get XML-Data when I first encountered it,<br />
and I have publicly apologized to Andrew Layman at least twice for being so<br />
dense.)</p>
<p>Unwilling to let the slow process of getting MS to act on SOAP beyond a press<br />
release, Dave Winer went out on his own and shipped the XML-RPC specification<br />
based on subsetting the original SOAP type system. I spent the rest of the year<br />
working on Java metadata grunge, including among other things a projection of<br />
Java class files onto XML.</p>
<p align="justify">
<b>SOAP Phase 2: 1999-2000</b></p>
<p>By the time a SOAP specification finally shipped using the name &quot;SOAP&quot; (4Q1999),<br />
the W3C XML Schema language was by no means done, but it certainly had<br />
progressed to a point where it became obvious to most of the SOAP authors that<br />
we needed to leverage and integrate the work of the Schema Working Group as much<br />
as possible. Their primitive types were a superset of what we needed for SOAP.<br />
Their composite type system was mostly a superset of what we needed for SOAP. It<br />
would have been folly to ignore their work.</p>
<p>Ideally SOAP would have taken the representational type system of XML Schemas<br />
verbatim and simply added the notion of behavioral types and operations/methods.<br />
Unfortunately, XML Schemas lacked (and still lacks) support for synthetic types<br />
such as typed references and arrays. While you can define things that look like<br />
typed references and arrays in the schema language, these constructs are not<br />
really native to XML Schemas. Worse, you would need to predefine these reference<br />
and array types, which makes it really difficult to isomorphically move back and<br />
forth between say a Java class and an XML Schema complex type. For that reason,<br />
SOAP needed to augment the type system with the soap:reference and soap:Array<br />
types. It is interesting to note that the Schemas Working Group tried to tackle<br />
the typed reference issue; but, unfortunately, it couldn&#8217;t converge on a<br />
solution that would support typed references as they appear in most programmatic<br />
type systems.</p>
<p>Most of what the 4Q1999 SOAP specifications did was simply illustrate how to<br />
model typed references and arrays in the W3C XML Schema type system. Period. We<br />
also had a model for adding optional and mandatory protocol headers (like<br />
CORBA&#8217;s service contexts and DCOM&#8217;s ORPCTHIS/THAT), but that was it. Frankly,<br />
had the schema specification been a full REC in 4Q1999, the SOAP specification<br />
would have at most 3-4 pages. However, the XML Schema specification was changing<br />
radically with each successive Working Draft, so those of us working on SOAP had<br />
to deliberately insulate ourselves from the churn that was W3C XML Schema during<br />
1999 and 2000 in order to make any progress whatsoever.</p>
<p>To me, the biggest technical issue that faced SOAP in 1999 and 2000 was the lack<br />
of metadata. DevelopMentor tried to introduce a simple metadata format ( CDL)<br />
that was isomorphic with the XML Schema type system, yet didn&#8217;t tie us to the<br />
rather fluid schema language. Dave Winer totally balked at the idea of metadata<br />
, indicating that human-readable descriptions were all that was needed.<br />
Certainly folks like Eric Raymond seem to agree with him. The reason we<br />
abandoned CDL, however, was a discussion with Gopal Kakivaya of Microsoft, who<br />
convinced us that what we needed could be achieved by annotating XML Schemas<br />
with additional SOAP-specific hints that were allowed (and in fact anticipated)<br />
by the Schema specification. At this point, DevelopMentor joined the Schemas WG<br />
and most of our effort internally moved towards XML Schema support. We use XML<br />
Schema a lot around DM, having shipped an XSD compiler for C++ that we use<br />
internally.</p>
<p>The biggest non-technical issue that faced SOAP in 1999 and 2000 was the hideous<br />
nature of vendor wars. The FUD that flew around the trade press and vendor web<br />
sites was downright embarrassing. I recently ran across a Sun Reality Check that<br />
made me ill. In particular, the following quote blew me away:</p>
<p>SOAP has changed a lot. It started to become interesting to us when IBM made<br />
additions to the mediocre specification that Microsoft initially championed<br />
(you&#8217;re right, we thought that specification was a bad idea).</p>
<p>If SOAP/1.0 (the last pre-IBM version) was a bad idea, then so was SOAP/1.1 (the<br />
first post-IBM version, which was submitted to the W3C). There were no major<br />
improvements to SOAP from 1.0 to 1.1. The specification was reorganized to make<br />
the modular design of SOAP more apparent. However, the few minor technical<br />
changes we made were arguably a step backward (in fact, I believe to date there<br />
are no SOAP implementations that do anything meaningful with the one new<br />
feature, SOAPActor).<br />
The Post-SOAP Era: 2001 and beyond</p>
<p>So where are we now? Tough question. Here are some observations about the<br />
current state of play.</p>
<p><b>The XML Schema specification is stable and now a Proposed Recommendation.</b><br />
To me, this is the most important advance for people who care about XML<br />
protocols and messaging in general and SOAP in particular. The fact that no<br />
major changes can be made before advancing to a full W3C recommendation means<br />
that the industry at large knows what they are dealing with when it comes to<br />
applying types to XML. I have stated before, and I still stand by my belief,<br />
that without XML Schemas, XML is a balkanized standard and its utility for<br />
software, component, or service integration is fairly minor. The Schema<br />
specification does most of the heavy lifting for SOAP, and it kills me that we<br />
can&#8217;t do a SOAP/1.2 to address the new schema language. Which brings me to my<br />
next observation.</p>
<p><b>The W3C now has a XML Protocol Working Group.<br />
</b><br />
SOAP is now where it belongs. Until we got W3C buy-in, vendors were skittish<br />
given the nature of the industry. Now that SOAP has been subsumed into the XML<br />
Protocol work, the big vendors have (for the most part) stopped arguing about<br />
SOAP and we have a fairly open process for beating the protocol into shape. In<br />
my opinion, one of the smartest things the WG did was to immediately define<br />
their relationship to the XML Schema type system.</p>
<p><b>We are somewhat closer to having a standardized metadata format for SOAP.</b><br />
While far from perfect, WSDL is as close as we&#8217;ve ever come to having a workable<br />
metadata standard that more than three people can agree on for longer than a<br />
week at a time. Is WSDL perfect? Not by a long shot. Is it workable? For the<br />
most part, yes. Does SOAP/XML Messaging make sense without something like WSDL?<br />
No way. My own criticisms of WSDL relate to WSDL&#8217;s current form having a<br />
somewhat schizophrenic relationship to XML Schema. (In fact, there are several<br />
ways in which WSDL and XML Schema are completely incompatible.) Despite my<br />
criticisms, portions of WSDL are more than workable, albeit overly verbose and<br />
indirect, for every SOAP scenario or application I have dealt with in the past 3<br />
years. Hopefully the XML Protocol Activity will focus on finishing the WSDL<br />
specification and give the world at a reasonable way of describing, validating,<br />
and automating XML-based services.</p>
<p><b>For the most part, people have stopped arguing about SOAP</b></p>
<p>SOAP is what most people would consider a moderate success. The ideas of SOAP<br />
have been embraced by pretty much everyone at this point. The vendors are<br />
starting to support SOAP to one degree or another. There are even (unconfirmed)<br />
reports of interoperable implementations, but frankly, without interoperable<br />
metadata, I am not convinced wire-level interoperability is all that important.<br />
It looks like almost everyone will support WSDL until the W3C comes down with<br />
something better, so perhaps by the end of 3Q2001 we&#8217;ll start to see really<br />
meaningful interoperability.<br />
Epilogue</p>
<p>SOAP&#8217;s original intent was fairly modest: to codify how to send transient XML<br />
documents to trigger operations or responses on remote hosts. Because of our<br />
timing, we were forced to tackle issues that the Schemas WG has since solved,<br />
which caused the &quot;S&quot; in SOAP to be somewhat lost.</p>
<p>At this point in time, I firmly believe that only two things are needed for mid-<br />
to long-term convergence:<br />
The XML Schemas WG should address the issue of typed references and arrays.<br />
Adding support for these two synthetic types would obviate the need for SOAP<br />
section 5. These constructs are broadly useful outside the scope of messaging<br />
and RPC applications, so it makes sense that the Schemas WG should address this.<br />
Define the handful of additional constructs needed to tie the representational<br />
types from XML Schemas into operations and WSDL-style portTypes.</p>
<p>WSDL comes close enough to providing the necessary behavioral constructs to XML<br />
Schemas, and I am cautiously optimistic that something close to WSDL could<br />
subsume SOAP entirely. I strongly encourage you to study the WSDL specification<br />
and submit comments, improvements, and errata so we can get convergence and<br />
interoperability in our lifetime.<br />
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://thebuzznutter.com/2010/03/a-brief-history-of-soap.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Separating data and presentation with XML and XSL</title>
		<link>http://thebuzznutter.com/2010/03/separating-data-and-presentation-with-xml-and-xsl.html</link>
		<comments>http://thebuzznutter.com/2010/03/separating-data-and-presentation-with-xml-and-xsl.html#comments</comments>
		<pubDate>Mon, 15 Mar 2010 09:24:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[webmasters Resources]]></category>
		<category><![CDATA[air-line industry]]></category>
		<category><![CDATA[brief introduction]]></category>
		<category><![CDATA[many developer]]></category>
		<category><![CDATA[software package]]></category>
		<category><![CDATA[Web Site]]></category>

		<guid isPermaLink="false">http://thebuzznutter.com/?p=551</guid>
		<description><![CDATA[Introduction
There&#8217;s an awful lot of information floating around out there about XML and how
it&#8217;s reshaping the way we communicate, both to people (end users) and between
applications or processes. Introductions abound, giving simple examples of how
to separate data from presentation without presenting real world examples where
this makes sense. There are also many in-depth articles on practical [...]]]></description>
			<content:encoded><![CDATA[<p align="justify"><b>Introduction</b><br />
There&#8217;s an awful lot of information floating around out there about XML and how<br />
it&#8217;s reshaping the way we communicate, both to people (end users) and between<br />
applications or processes. Introductions abound, giving simple examples of how<br />
to separate data from presentation without presenting real world examples where<br />
this makes sense. There are also many in-depth articles on practical uses of<br />
XML, but these are often extremely complicated and rarely have anything to do<br />
with the real world concerns of many developers (how many of you are developing<br />
applications for the air-line industry?). </p>
<p><span id="more-551"></span><br />
Part one of this article will attempt to give you a brief introduction to XML<br />
and some simple examples that are of no use to practically anyone. Part two will<br />
show you how to use Document Type Definitions (DTDs) to describe the elements in<br />
an XML file and enforce rules. Part three will detail a real-world example that<br />
will show you how to use XML to add RSS content to your web site. Don&#8217;t worry if<br />
this doesn&#8217;t make sense just yet! <img src='http://thebuzznutter.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  <br />
&nbsp;</p>
<p align="justify"><b>What is XML?</b><br />
Directly from What is XML? by Norman Walsh: &quot;XML is a markup language for<br />
documents containing structured information.&quot; What does this mean? XML is a<br />
markup language, just like HTML. The difference is XML is a markup language to<br />
describe markup languages. You could actually implement HTML in XML (this is<br />
actually being done). XML allows you to create markup for a structured document<br />
that is standardized and can be used by anyone else who understands XML. </p>
<p>XML is a lot more finicky about syntax than HTML. Remember, HTML is displayed by<br />
a finite number of software packages (usually web browsers) that more often than<br />
not have workarounds for poorly written HTML. On top of that, HTML us usually<br />
just displayed in a browser. This is not the case with XML, which may be<br />
displayed in a browser, placed in a database, embedded in a spreadsheet etc.<br />
Since XML can be used by any XML-enabled application, it must be properly<br />
formed. Most XML parsers will just plain quit if they come upon ill-formed XML.</p>
<p>While we&#8217;re going to focus on data and presentation in this article, please keep<br />
in mind this is not the only use to which XML can be put! There&#8217;s a myriad of<br />
possibilities. This is one technology that actually might live up to its hype!<br />
XML is platform independant and standardized, which means it isn&#8217;t tied to any<br />
one operating system or platform, and its uses aren&#8217;t constrained by any<br />
particular tools. The XML you use today in one application can and should be<br />
used by applications not yet created! </p>
<p align="justify">
<b>Data and presentation</b><br />
Let&#8217;s stop for a second and take a look at this table: Name Email address Phone<br />
number<br />
Niall niall@kst.com 555-1076<br />
Sarah no.sarah@kst.com 555-0024<br />
Jose no.jose@kst.com 555-5673</p>
<p><b>It&#8217;s a very simple table, with very simple data in it. Here&#8217;s the HTML code<br />
for this table: </b><br />
1 : &lt;table border=&quot;1&quot;&gt;<br />
2 : &lt;tr&gt;<br />
3 : &lt;td bgcolor=&quot;#cccccc&quot;&gt;Name&lt;/td&gt;<br />
4 : &lt;td bgcolor=&quot;#cccccc&quot;&gt;Email address&lt;/td&gt;<br />
5 : &lt;td bgcolor=&quot;#cccccc&quot;&gt;Phone number&lt;/td&gt;<br />
6 : &lt;/tr&gt;<br />
7 : &lt;tr&gt;<br />
8 : &lt;td&gt;Niall&lt;/td&gt;<br />
9 : &lt;td&gt;niall@kst.com&lt;/td&gt;<br />
10: &lt;td&gt;555-1076&lt;/td&gt;<br />
11: &lt;/tr&gt;<br />
12: &lt;tr&gt;<br />
13: &lt;td&gt;Sarah&lt;/td&gt;<br />
14: &lt;td&gt;no.sarah@kst.com&lt;/td&gt;<br />
15: &lt;td&gt;555-0024&lt;/td&gt;<br />
16: &lt;/tr&gt;<br />
17: &lt;tr&gt;<br />
18: &lt;td&gt;Jose&lt;/td&gt;<br />
19: &lt;td&gt;no.jose@kst.com&lt;/td&gt;<br />
20: &lt;td&gt;555-5673&lt;/td&gt;<br />
21: &lt;/tr&gt;<br />
22: &lt;/table&gt;<br />
Nothing complicated about that, right? So what&#8217;s the problem? The problem is<br />
that data (the actual names, email addresses, and phone numbers) is mixed right<br />
in with the presentation (the HTML code that creates and displays the table). If<br />
you want to change the way it looks, you might inadvertently change the data. If<br />
you want to have more than one view of it, you have to create a separate HTML<br />
file with the new view that duplicates the data you already have in the first<br />
file. Now you have to worry about editing two files whenever the data changes!<br />
And when you&#8217;re updating that data, what happens if you mess up the HTML code?</p>
<p>The answer to these problems is simple. Divorce the data from the presentation.<br />
A stab at this was taken when cascading style sheets were first put into use,<br />
but despite the fact that they are an excellent solution they never really<br />
caught on. CSS support in browsers isn&#8217;t all that great, and implemented<br />
differently across platforms and browser software. If we want to guarantee<br />
things work and look the way we want them to we need XML. </p>
<p align="justify">
<b>The data</b><br />
<b>Let&#8217;s take a look at what the data might look like in an XML file (contact.xml):<br />
</b></p>
<p>1 : &lt;?xml version=&quot;1.0&quot;?&gt;<br />
2 : &lt;contactList&gt;<br />
3 : &lt;contact&gt;<br />
4 : &lt;name&gt;Niall&lt;/name&gt;<br />
5 : &lt;emailAddress&gt;niall@kst.com&lt;/emailAddress&gt;<br />
6 : &lt;phoneNumber&gt;555-1076&lt;/phoneNumber&gt;<br />
7 : &lt;/contact&gt;<br />
8 : &lt;contact&gt;<br />
9 : &lt;name&gt;Sarah&lt;/name&gt;<br />
10: &lt;emailAddress&gt;no_sarah@kst.com&lt;/emailAddress&gt;<br />
11: &lt;phoneNumber&gt;555-0024&lt;/phoneNumber&gt;<br />
12: &lt;/contact&gt;<br />
13: &lt;contact&gt;<br />
14: &lt;name&gt;Jose&lt;/name&gt;<br />
15: &lt;emailAddress&gt;no_jose@kst.com&lt;/emailAddress&gt;<br />
16: &lt;phoneNumber&gt;555-5673&lt;/phoneNumber&gt;<br />
17: &lt;/contact&gt;<br />
18: &lt;/contactList&gt;</p>
<p>With just a glance, it&#8217;s easy to see what&#8217;s going on here. We have a contactList<br />
that contains several contact elements. The contact elements in turn contain<br />
name, emailAddress and phoneNumber elements. The first line tells us this is an<br />
XML document that meets the standards of XML 1.0. </p>
<p>Without delving too heavily into syntax and formation, take special notice of<br />
the fact that none of these elements overlap. If we open an element, we close it<br />
immediately after the data it contains. While it might be possible to say &quot;&lt;font<br />
size=&quot;+1&quot;&gt;&lt;b&gt;Hello world!&lt;/font&gt;&lt;/b&gt;&quot; in an HTML document, it certainly would<br />
not work with XML. The correct form would be &quot;&lt;font size=&quot;+1&quot;&gt;&lt;b&gt;Hello<br />
world!&lt;/b&gt;&lt;/font&gt;&quot;, closing each element as we opened it. </p>
<p>If you think about it, this makes a great deal of sense. The whole advantage to<br />
using XML is to define structure for your documents. If you closed the contact<br />
element before you listed the accompanying phoneNumber element, how could you<br />
know for sure what contact the phone number belonged to? </p>
<p>I won&#8217;t go heavily into syntax in this article. For an excellent overview and<br />
introduction to XML, see the afore-mentioned What is XML? document by Norman<br />
Walsh at xml.com. </p>
<p align="justify">
<b>The presentation</b><br />
It&#8217;s great that we now have our data in a separate file, but how do we view it<br />
in a way that makes sense to humans? Take a look at the XML file. People don&#8217;t<br />
like to read marked-up source code; they like their information laid out in a<br />
manner that makes sense to them, not a computer. This is where the eXtensible<br />
Stylesheet Language (XSL) comes in. </p>
<p>In the same way that cascading style sheets provide style information for an<br />
HTML document, XSL documents provide style information for XML data. And guess<br />
what &#8211; they&#8217;re written in XML too. Here&#8217;s the XSL file we&#8217;ll use for our demo</p>
<p align="justify">
There&#8217;s an awful lot of information floating around out there about XML and how<br />
it&#8217;s reshaping the way we communicate, both to people (end users) and between<br />
applications or processes. Introductions abound, giving simple examples of how<br />
to separate data from presentation without presenting real world examples where<br />
this makes sense. There are also many in-depth articles on practical uses of<br />
XML, but these are often extremely complicated and rarely have anything to do<br />
with the real world concerns of many developers (how many of you are developing<br />
applications for the air-line industry?). </p>
<p>Part one of this article will attempt to give you a brief introduction to XML<br />
and some simple examples that are of no use to practically anyone. Part two will<br />
show you how to use Document Type Definitions (DTDs) to describe the elements in<br />
an XML file and enforce rules. Part three will detail a real-world example that<br />
will show you how to use XML to add RSS content to your web site. Don&#8217;t worry if<br />
this doesn&#8217;t make sense just yet! <img src='http://thebuzznutter.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </p>
<p align="justify"><b><br />
What is XML?</b><br />
Directly from What is XML? by Norman Walsh: &quot;XML is a markup language for<br />
documents containing structured information.&quot; What does this mean? XML is a<br />
markup language, just like HTML. The difference is XML is a markup language to<br />
describe markup languages. You could actually implement HTML in XML (this is<br />
actually being done). XML allows you to create markup for a structured document<br />
that is standardized and can be used by anyone else who understands XML. </p>
<p>XML is a lot more finicky about syntax than HTML. Remember, HTML is displayed by<br />
a finite number of software packages (usually web browsers) that more often than<br />
not have workarounds for poorly written HTML. On top of that, HTML us usually<br />
just displayed in a browser. This is not the case with XML, which may be<br />
displayed in a browser, placed in a database, embedded in a spreadsheet etc.<br />
Since XML can be used by any XML-enabled application, it must be properly<br />
formed. Most XML parsers will just plain quit if they come upon ill-formed XML.</p>
<p>While we&#8217;re going to focus on data and presentation in this article, please keep<br />
in mind this is not the only use to which XML can be put! There&#8217;s a myriad of<br />
possibilities. This is one technology that actually might live up to its hype!<br />
XML is platform independant and standardized, which means it isn&#8217;t tied to any<br />
one operating system or platform, and its uses aren&#8217;t constrained by any<br />
particular tools. The XML you use today in one application can and should be<br />
used by applications not yet created! </p>
<p align="justify">
<b>Data and presentation</b><br />
<b>Let&#8217;s stop for a second and take a look at this table: </b>Name Email address<br />
Phone number<br />
Niall niall@kst.com 555-1076<br />
Sarah no.sarah@kst.com 555-0024<br />
Jose no.jose@kst.com 555-5673</p>
<p><b>It&#8217;s a very simple table, with very simple data in it. Here&#8217;s the HTML code<br />
for this table: </b><br />
1 : &lt;table border=&quot;1&quot;&gt;<br />
2 : &lt;tr&gt;<br />
3 : &lt;td bgcolor=&quot;#cccccc&quot;&gt;Name&lt;/td&gt;<br />
4 : &lt;td bgcolor=&quot;#cccccc&quot;&gt;Email address&lt;/td&gt;<br />
5 : &lt;td bgcolor=&quot;#cccccc&quot;&gt;Phone number&lt;/td&gt;<br />
6 : &lt;/tr&gt;<br />
7 : &lt;tr&gt;<br />
8 : &lt;td&gt;Niall&lt;/td&gt;<br />
9 : &lt;td&gt;niall@kst.com&lt;/td&gt;<br />
10: &lt;td&gt;555-1076&lt;/td&gt;<br />
11: &lt;/tr&gt;<br />
12: &lt;tr&gt;<br />
13: &lt;td&gt;Sarah&lt;/td&gt;<br />
14: &lt;td&gt;no.sarah@kst.com&lt;/td&gt;<br />
15: &lt;td&gt;555-0024&lt;/td&gt;<br />
16: &lt;/tr&gt;<br />
17: &lt;tr&gt;<br />
18: &lt;td&gt;Jose&lt;/td&gt;<br />
19: &lt;td&gt;no.jose@kst.com&lt;/td&gt;<br />
20: &lt;td&gt;555-5673&lt;/td&gt;<br />
21: &lt;/tr&gt;<br />
22: &lt;/table&gt;<br />
<b>Nothing complicated about that, right?</b> So what&#8217;s the problem? The problem<br />
is that data (the actual names, email addresses, and phone numbers) is mixed<br />
right in with the presentation (the HTML code that creates and displays the<br />
table). If you want to change the way it looks, you might inadvertently change<br />
the data. If you want to have more than one view of it, you have to create a<br />
separate HTML file with the new view that duplicates the data you already have<br />
in the first file. Now you have to worry about editing two files whenever the<br />
data changes! And when you&#8217;re updating that data, what happens if you mess up<br />
the HTML code? </p>
<p>The answer to these problems is simple. Divorce the data from the presentation.<br />
A stab at this was taken when cascading style sheets were first put into use,<br />
but despite the fact that they are an excellent solution they never really<br />
caught on. CSS support in browsers isn&#8217;t all that great, and implemented<br />
differently across platforms and browser software. If we want to guarantee<br />
things work and look the way we want them to we need XML. </p>
<p align="justify">
<b>The data</b><br />
<b>Let&#8217;s take a look at what the data might look like in an XML file (contact.xml):<br />
</b><br />
1 : &lt;?xml version=&quot;1.0&quot;?&gt;<br />
2 : &lt;contactList&gt;<br />
3 : &lt;contact&gt;<br />
4 : &lt;name&gt;Niall&lt;/name&gt;<br />
5 : &lt;emailAddress&gt;niall@kst.com&lt;/emailAddress&gt;<br />
6 : &lt;phoneNumber&gt;555-1076&lt;/phoneNumber&gt;<br />
7 : &lt;/contact&gt;<br />
8 : &lt;contact&gt;<br />
9 : &lt;name&gt;Sarah&lt;/name&gt;<br />
10: &lt;emailAddress&gt;no_sarah@kst.com&lt;/emailAddress&gt;<br />
11: &lt;phoneNumber&gt;555-0024&lt;/phoneNumber&gt;<br />
12: &lt;/contact&gt;<br />
13: &lt;contact&gt;<br />
14: &lt;name&gt;Jose&lt;/name&gt;<br />
15: &lt;emailAddress&gt;no_jose@kst.com&lt;/emailAddress&gt;<br />
16: &lt;phoneNumber&gt;555-5673&lt;/phoneNumber&gt;<br />
17: &lt;/contact&gt;<br />
18: &lt;/contactList&gt;</p>
<p>With just a glance, it&#8217;s easy to see what&#8217;s going on here. We have a contactList<br />
that contains several contact elements. The contact elements in turn contain<br />
name, emailAddress and phoneNumber elements. The first line tells us this is an<br />
XML document that meets the standards of XML 1.0. </p>
<p>Without delving too heavily into syntax and formation, take special notice of<br />
the fact that none of these elements overlap. If we open an element, we close it<br />
immediately after the data it contains. While it might be possible to say &quot;&lt;font<br />
size=&quot;+1&quot;&gt;&lt;b&gt;Hello world!&lt;/font&gt;&lt;/b&gt;&quot; in an HTML document, it certainly would<br />
not work with XML. The correct form would be &quot;&lt;font size=&quot;+1&quot;&gt;&lt;b&gt;Hello<br />
world!&lt;/b&gt;&lt;/font&gt;&quot;, closing each element as we opened it. </p>
<p>If you think about it, this makes a great deal of sense. The whole advantage to<br />
using XML is to define structure for your documents. If you closed the contact<br />
element before you listed the accompanying phoneNumber element, how could you<br />
know for sure what contact the phone number belonged to? </p>
<p>I won&#8217;t go heavily into syntax in this article. For an excellent overview and<br />
introduction to XML, see the afore-mentioned What is XML? document by Norman<br />
Walsh at xml.com. <br />
The presentation<br />
It&#8217;s great that we now have our data in a separate file, but how do we view it<br />
in a way that makes sense to humans? Take a look at the XML file. People don&#8217;t<br />
like to read marked-up source code; they like their information laid out in a<br />
manner that makes sense to them, not a computer. This is where the eXtensible<br />
Stylesheet Language (XSL) comes in. </p>
<p>In the same way that cascading style sheets provide style information for an<br />
HTML document, XSL documents provide style information for XML data. And guess<br />
what &#8211; they&#8217;re written in XML too. Here&#8217;s the XSL file we&#8217;ll use for our demo</p>
<p><b>(contacts.xsl): </b><br />
1: &lt;?xml version=&quot;1.0&quot;?&gt;<br />
2: &lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/TR/WD-xsl&quot;&gt;<br />
3: &lt;xsl:template match=&quot;/&quot;&gt;<br />
4: &lt;html&gt;<br />
5: &lt;head&gt;<br />
6: &lt;title&gt;Contact list&lt;/title&gt;<br />
7: &lt;/head&gt;<br />
8: &lt;body&gt;<br />
9 &lt;table border=&quot;1&quot;&gt;<br />
10: &lt;tr&gt;<br />
11: &lt;td bgcolor=&quot;#cccccc&quot;&gt;Name&lt;/td&gt;<br />
12: &lt;td bgcolor=&quot;#cccccc&quot;&gt;Email address&lt;/td&gt;<br />
13: &lt;td bgcolor=&quot;#cccccc&quot;&gt;Phone number&lt;/td&gt;<br />
14: &lt;/tr&gt;<br />
15: &lt;xsl:for-each select=&quot;contactList/contact&quot;&gt;<br />
16: &lt;tr&gt;&lt;td&gt;<br />
17: &lt;xsl:value-of select=&quot;name&quot; /&gt; <br />
18: &lt;/td&gt;&lt;td&gt;<br />
19: &lt;xsl:value-of select=&quot;emailAddress&quot; /&gt; <br />
20: &lt;/td&gt;&lt;td&gt;<br />
21: &lt;xsl:value-of select=&quot;phoneNumber&quot; /&gt; <br />
22 &lt;/td&gt;&lt;/tr&gt; <br />
23: &lt;/xsl:for-each&gt; <br />
24: &lt;/table&gt; <br />
25: &lt;/body&gt;<br />
26: &lt;/html&gt;<br />
27: &lt;/xsl:template&gt; <br />
28: &lt;/xsl:stylesheet&gt; </p>
<p>
<b>Are you shocked to see this XML file contains mostly HTML? </b>Don&#8217;t be. HTML<br />
does an excellent job of presenting information. It&#8217;s just a lousy way to store<br />
data. I&#8217;m sure new ways of presenting data will evolve over time, but HTML is<br />
going to stay around for some time. </p>
<p>Keep in mind: since this is still an XML document you must open and close tags<br />
properly, or it may not work at all! </p>
<p>Line 2 points to information that describes XSL, what it does, how it works.<br />
We&#8217;re not going to touch on namespaces in this article, or explain every detail.<br />
Rather we&#8217;ll give you an overview so you can see how it works. </p>
<p>Lines 4-14 are the first part of your HTML document, setting it up and creating<br />
the table and cell headers. </p>
<p>Lines 15-23 are a simple for/next loop, which should be familiar to most<br />
programmers. It tells the stylesheet to loop through contactList, find each<br />
contact, and display a row containing their name, emailAddress and phoneNumber.<br />
Lines 24-26 close up the HTML document, and lines 27-28 close up the stylesheet.</p>
<p>Now we need to bring the stylesheet together with the data&#8230; <br />
Reuniting the data with the presentation<br />
Now that we have our data, and we&#8217;ve defined how we want it displayed, we need<br />
to bring them back together.</p>
<p>&nbsp;<b>Let&#8217;s take another look at contact.xml, which contains our data.<br />
We&#8217;ve added an extra line, line 2: </b><br />
1 : &lt;?xml version=&quot;1.0&quot;?&gt;<br />
2 : &lt;?xml-stylesheet href=&quot;contacts.xsl&quot; type=&quot;text/xsl&quot;?&gt;<br />
3 : &lt;contactList&gt;<br />
4 : &lt;contact&gt;<br />
5 : &lt;name&gt;Niall&lt;/name&gt;<br />
6 : &lt;emailAddress&gt;niall@kst.com&lt;/emailAddress&gt;<br />
7 : &lt;phoneNumber&gt;555-1076&lt;/phoneNumber&gt;<br />
8 : &lt;/contact&gt;<br />
9 : &lt;contact&gt;<br />
10: &lt;name&gt;Sarah&lt;/name&gt;<br />
11: &lt;emailAddress&gt;no_sarah@kst.com&lt;/emailAddress&gt;<br />
12: &lt;phoneNumber&gt;555-0024&lt;/phoneNumber&gt;<br />
13: &lt;/contact&gt;<br />
14: &lt;contact&gt;<br />
15: &lt;name&gt;Jose&lt;/name&gt;<br />
16: &lt;emailAddress&gt;no_jose@kst.com&lt;/emailAddress&gt;<br />
17: &lt;phoneNumber&gt;555-5673&lt;/phoneNumber&gt;<br />
18: &lt;/contact&gt;<br />
19: &lt;/contactList&gt;</p>
<p>
Now we&#8217;ve linked the data to a stylesheet that tells us how to display it. If<br />
you have an XML-capable browser (such as IE 5.x), you can take a look for<br />
yourself. If you don&#8217;t have such a browser, I assure you, it looks like this:</p>
<p><strong>Name	Email address	Phone number</strong><br />
Niall	niall@kst.com	           555-1076<br />
Sarah	no.sarah@kst.com	555-0024<br />
Jose	no.jose@kst.com	555-5673</p>
<p><b>Conclusion</b><br />
We&#8217;ve touched lightly on XML, XSL, and bringing the two together. You might be<br />
thinking it&#8217;s easier to just do it all in HTML. Using the data in our simple<br />
examples? Certainly. Try to think beyond that to more complex situations where<br />
the presentation code may be overwhelming, or when you&#8217;re dealing with large<br />
amounts of data. What if you want more than one application to share the data?<br />
Rather than embedding the data in each application you can define it once and<br />
present it whatever way you like. </p>
<p>You might also be wondering &quot;Why can&#8217;t I just do this with a database?&quot;. Again,<br />
think beyond our simple examples. XML is all about sharing. It&#8217;s a common<br />
denominator that spans platforms and operating systems, making XML data open to<br />
all. In part two of this article we&#8217;ll give a real-world example using XML that<br />
obtains headlines from popular news sites. The news sites store the information<br />
in an XML document called a &quot;Rich Site Summary&quot; (RSS). Would it make sense to<br />
put this information in a database? Would everyone be able to access it? Would<br />
we possibly compromise security on our database by making portions of it<br />
accessible to the public? These are a few of the reasons XML is ideal for this<br />
sort of information sharing.</p>
]]></content:encoded>
			<wfw:commentRss>http://thebuzznutter.com/2010/03/separating-data-and-presentation-with-xml-and-xsl.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enforcing data integrity with DTDs</title>
		<link>http://thebuzznutter.com/2010/03/enforcing-data-integrity-with-dtds.html</link>
		<comments>http://thebuzznutter.com/2010/03/enforcing-data-integrity-with-dtds.html#comments</comments>
		<pubDate>Mon, 15 Mar 2010 08:48:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[webmasters Resources]]></category>
		<category><![CDATA[data integrity]]></category>
		<category><![CDATA[specific reasons]]></category>
		<category><![CDATA[Type Definition]]></category>
		<category><![CDATA[XML document]]></category>

		<guid isPermaLink="false">http://thebuzznutter.com/?p=546</guid>
		<description><![CDATA[In part one of this series we showed you how to separate your data from
presentation using XML to store the data and an XSL stylesheet to control the
presentation. At this point you should know what an XML document is and have a
pretty good idea of some situations where it would be useful. 
In this article, [...]]]></description>
			<content:encoded><![CDATA[<p>In part one of this series we showed you how to separate your data from<br />
presentation using XML to store the data and an XSL stylesheet to control the<br />
presentation. At this point you should know what an XML document is and have a<br />
pretty good idea of some situations where it would be useful. </p>
<p>In this article, we&#8217;re going to explain what a Document Type Definition (DTD) is<br />
and how it helps you describe and enforce rules on the mark-up (or elements) in<br />
your XML documents. </p>
<p><span id="more-546"></span><br />
<b>What is a DTD?</b><br />
We&#8217;re going to explain briefly, and then show you a simple use. A DTD is a file<br />
(or group of files) that defines a certain kind of document. In a DTD you would<br />
find valid element names and types, and (hopefully!) an explanation of how they<br />
all fit together. We use DTDs to enforce rules on XML documents so that<br />
applications can have an idea of what to expect from an XML document. </p>
<p>It&#8217;s all well and good to mark up and separate your data logically, but if the<br />
end application doesn&#8217;t understand the data and how it all fits together then<br />
we&#8217;re missing the point. DTDs help us understand XML documents and make sure<br />
that we&#8217;re not storing data in a manner that might break applications. <br />
Well formed and valid<br />
In the previous article we made special care to ensure our XML documents were<br />
well-formed; that is each tag is closed before a new one is opened. Documents<br />
that aren&#8217;t well-formed will break most XML processors and are effectively<br />
useless. </p>
<p>Using DTDs adds another term to our XML vocabulary: Valid. An XML document that<br />
follows all the rules found in its specified DTD is said to be &quot;Valid&quot;. </p>
<p>This means that though the &quot;contacts&quot; example in our previous example was &quot;well<br />
formed&quot;, it was not &quot;valid&quot; because we didn&#8217;t associate it with a DTD. The XML<br />
parser had no way of knowing what constraints should be placed on the various<br />
elements, nor did it know how to relate them to one another (though it is fairly<br />
obvious just by looking at it). </p>
<p>Keep in mind that it&#8217;s often okay for your XML document not to be &quot;valid&quot;.<br />
Unless you have specific reasons for enforcing rules on your XML documents you<br />
may be better off without a DTD. <br />
Let&#8217;s look at our example<br />
Let&#8217;s take a peek at our contacts.xml file from the previous article: <br />
1 : &lt;?xml version=&quot;1.0&quot;?&gt;<br />
2 : &lt;?xml-stylesheet href=&quot;contacts.xsl&quot; type=&quot;text/xsl&quot;?&gt;<br />
3 : &lt;contactList&gt;<br />
4 : &lt;contact&gt;<br />
5 : &lt;name&gt;Niall&lt;/name&gt;<br />
6 : &lt;emailAddress&gt;niall@kst.com&lt;/emailAddress&gt;<br />
7 : &lt;phoneNumber&gt;555-1076&lt;/phoneNumber&gt;<br />
8 : &lt;/contact&gt;<br />
9 : &lt;contact&gt;<br />
10: &lt;name&gt;Sarah&lt;/name&gt;<br />
11: &lt;emailAddress&gt;no_sarah@kst.com&lt;/emailAddress&gt;<br />
12: &lt;phoneNumber&gt;555-0024&lt;/phoneNumber&gt;<br />
13: &lt;/contact&gt;<br />
14: &lt;contact&gt;<br />
15: &lt;name&gt;Jose&lt;/name&gt;<br />
16: &lt;emailAddress&gt;no_jose@kst.com&lt;/emailAddress&gt;<br />
17: &lt;phoneNumber&gt;555-5673&lt;/phoneNumber&gt;<br />
18: &lt;/contact&gt;<br />
19: &lt;/contactList&gt;<br />
In case you&#8217;ve forgotten, gaze upon it and ponder its simplicity once again. </p>
<p>Let&#8217;s say the technical support department at kst.com starts using this XML file<br />
and the accompanying style-sheet to store and display contact information. It&#8217;s<br />
a very simplistic way of doing it, but by separating the data and presentation<br />
they can use and import it into numerous applications as well as displaying it<br />
on their website any way they choose. </p>
<p>One day, someone from kst.com&#8217;s marketing department stops by and sees it in<br />
use, and like any person in any marketing department, they want it too. So the<br />
marketing department starts using it to store their contact information. Rest<br />
assured, as soon as the marketing department has it, all the other departments<br />
will insist on having it also. </p>
<p>So now you have several departments using XML to store their contact<br />
information. Great! The problem is, as it currently stands it&#8217;s not awfully<br />
helpful; I mean, there&#8217;s no fax number, or street address, or any other<br />
information besides a name, email address and phone number. The tech department<br />
is quite happy the way it is, but it&#8217;s not enough for everyone else. So we add<br />
some more elements: </p>
<p>1 : &lt;?xml version=&quot;1.0&quot;?&gt;<br />
2 : &lt;?xml-stylesheet href=&quot;contacts.xsl&quot; type=&quot;text/xsl&quot;?&gt;<br />
3 : &lt;contactList&gt;<br />
4 : &lt;contact&gt;<br />
5 : &lt;name&gt;Niall&lt;/name&gt;<br />
6 : &lt;emailAddress&gt;niall@kst.com&lt;/emailAddress&gt;<br />
7 : &lt;phoneNumber&gt;555-1076&lt;/phoneNumber&gt;<br />
8 : &lt;faxNumber&gt;555-1000&lt;/faxNumber&gt;<br />
9 : &lt;streetAddress&gt;101 Elm Street&lt;/streetAddress&gt;<br />
10: &lt;town&gt;Anytown&lt;/town&gt;<br />
11: &lt;state&gt;MA&lt;/state&gt;<br />
12: &lt;postalCode&gt;02100&lt;/postalCode&gt;<br />
13: &lt;/contact&gt;<br />
14: &lt;contact&gt;<br />
15: &lt;name&gt;Sarah&lt;/name&gt;<br />
16: &lt;emailAddress&gt;no_sarah@kst.com&lt;/emailAddress&gt;<br />
17: &lt;phoneNumber&gt;555-0024&lt;/phoneNumber&gt;<br />
18: &lt;faxNumber&gt;555-1000&lt;/faxNumber&gt;<br />
19: &lt;streetAddress&gt;101 Elm Street&lt;/streetAddress&gt;<br />
20: &lt;town&gt;Anytown&lt;/town&gt;<br />
21: &lt;state&gt;MA&lt;/state&gt;<br />
22: &lt;postalCode&gt;02100&lt;/postalCode&gt;<br />
23: &lt;/contact&gt;<br />
24: &lt;contact&gt;<br />
25: &lt;name&gt;Jose&lt;/name&gt;<br />
26: &lt;emailAddress&gt;no_jose@kst.com&lt;/emailAddress&gt;<br />
27: &lt;phoneNumber&gt;555-5673&lt;/phoneNumber&gt;<br />
28: &lt;faxNumber&gt;555-1000&lt;/faxNumber&gt;<br />
29: &lt;streetAddress&gt;101 Elm Street&lt;/streetAddress&gt;<br />
30: &lt;town&gt;Anytown&lt;/town&gt;<br />
31: &lt;state&gt;MA&lt;/state&gt;<br />
32: &lt;postalCode&gt;02100&lt;/postalCode&gt;<br />
33: &lt;/contact&gt;<br />
34: &lt;/contactList&gt;</p>
<p>If this were the real world, we would probably add more elements, but for the<br />
purposes of our example we&#8217;re just adding elements for faxNumber, streetAddress,<br />
town, state and postalCode. </p>
<p>We don&#8217;t run into any major problems yet, the folks using the new elements will<br />
need new style-sheets so they can see them, and the tech support department can<br />
still use their old stylesheet and ignore the new information that doesn&#8217;t<br />
interest them. Everyone is happy! Now the departments can share their contact<br />
information with each-other, only displaying the information that is of interest<br />
to them. </p>
<p>That is, everyone is happy until Sarah from the sales department adds a new<br />
element to each contact: personalityType. Not only that, but she&#8217;s populating<br />
the new tag with the most ridiculous data. Clearly this tag should not be a part<br />
of anyone&#8217;s contact listing, but Sarah is adamant in her refusal to remove it.<br />
People are threatening to leave the company, racking up enormous therapy bills,<br />
and are generally unhappy because of Sarah&#8217;s bad_contacts.xml. <br />
DTDs to the rescue<br />
Enter the DTD! Clearly we need to enforce some some of restraints on the<br />
elements we allow in our contacts file. While we&#8217;re at it, it would be a good<br />
idea to show how all these elements relate before we add more and it gets out of<br />
hand and difficult to understand. This is the role that DTDs play for XML data.</p>
<p>Here&#8217;s the DTD we&#8217;ll use for our contacts, we&#8217;ll explain it below (contacts.dtd):</p>
<p>1 : &lt;!ELEMENT contactList (contact)*&gt;<br />
2 : &lt;!ELEMENT contact (name | emailAddress | phoneNumber <br />
| faxNumber | streetAddress | town | state | postalCode)*&gt;<br />
3 : &lt;!ELEMENT name (#PCDATA)&gt;<br />
4 : &lt;!ELEMENT emailAddress (#PCDATA)&gt;<br />
5 : &lt;!ELEMENT phoneNumber (#PCDATA)&gt;<br />
6 : &lt;!ELEMENT faxNumber (#PCDATA)&gt;<br />
7 : &lt;!ELEMENT streetAddress (#PCDATA)&gt;<br />
8 : &lt;!ELEMENT town (#PCDATA)&gt;<br />
9 : &lt;!ELEMENT state (#PCDATA)&gt;<br />
10: &lt;!ELEMENT postalCode (#PCDATA)&gt;</p>
<p>This is a very simple DTD containing only element declarations. There are other<br />
things you can define with your DTDs (attribute lists, entities and notations),<br />
but they are the subject of future articles. Please note we had to line break<br />
line #2 for display purposes. </p>
<p>Hopefully this looks pretty straightforward: We have a declaration for each<br />
element in our contacts.xml file. Let&#8217;s go through them and see what the DTD<br />
tells us. </p>
<p>Line 1 defines an element, contactList. By looking at contacts.xml you&#8217;ll see<br />
that this is our &quot;main&quot; element that contains all the contact elements. So in<br />
our DTD we define the element contactList and let the parser know it is allowed<br />
to contain the element contact. This is known as the content model of the<br />
element contactList. The asterisk (*) means that the content is optional, and<br />
may appear zero or more times. You can set restrictions on required elements,<br />
optional elements etc. Again, this article is intended to be an introduction and<br />
so we will not go into that just yet. </p>
<p>Line 2 is a little more meaty, since it defines the contact element, which may<br />
contain several elements itself. They are separated with a bar (|) character,<br />
which programmers may recognize as indicating an &quot;or&quot; relationship. The asterisk<br />
again indicated that these elements may occur zero or more times. This is a very<br />
relaxed declaration. If we had separated the entities with commas (,) it would<br />
mean they must appear in the order we specify in order for the XML document to<br />
be &quot;valid&quot;. So we have now established that the contact entity may contain the<br />
entities name, emailAddress, phoneNumber, faxNumber, streetAddress, town, state,<br />
and postalCode. </p>
<p>Lines 3-10 define the remaining elements. You&#8217;ll notice that these elements do<br />
not contain other elements like contactList and contact, they contain a special<br />
symbol #PCDATA which means they will contain character data. </p>
<p>So now we have a DTD that defines all our elements and lets us know what belongs<br />
in them. If an XML document attempts to validate off this DTD it needs to follow<br />
these rules in order to be valid. That means that any tags in the XML document<br />
have to be in the DTD, and they can only contain what the DTD allows. How do we<br />
let our XML data know about these constraints? <br />
Final contacts.xml<br />
Here&#8217;s the final version of our XML file, new_contacts.xml: </p>
<p>1 : &lt;?xml version=&quot;1.0&quot;?&gt;<br />
2 : &lt;!DOCTYPE contactList SYSTEM &quot;contacts.dtd&quot;&gt;<br />
3 : &lt;?xml-stylesheet href=&quot;contacts.xsl&quot; type=&quot;text/xsl&quot;?&gt;<br />
4 : &lt;contactList&gt;<br />
5 : &lt;contact&gt;<br />
6 : &lt;name&gt;Niall&lt;/name&gt;<br />
7 : &lt;emailAddress&gt;niall@kst.com&lt;/emailAddress&gt;<br />
8 : &lt;phoneNumber&gt;555-1076&lt;/phoneNumber&gt;<br />
9 : &lt;faxNumber&gt;555-1000&lt;/faxNumber&gt;<br />
10: &lt;streetAddress&gt;101 Elm Street&lt;/streetAddress&gt;<br />
11: &lt;town&gt;Anytown&lt;/town&gt;<br />
12: &lt;state&gt;MA&lt;/state&gt;<br />
13: &lt;postalCode&gt;02100&lt;/postalCode&gt;<br />
14: &lt;/contact&gt;<br />
15: &lt;contact&gt;<br />
16: &lt;name&gt;Sarah&lt;/name&gt;<br />
17: &lt;emailAddress&gt;no_sarah@kst.com&lt;/emailAddress&gt;<br />
18: &lt;phoneNumber&gt;555-0024&lt;/phoneNumber&gt;<br />
19 &lt;faxNumber&gt;555-1000&lt;/faxNumber&gt;<br />
20: &lt;streetAddress&gt;101 Elm Street&lt;/streetAddress&gt;<br />
21: &lt;town&gt;Anytown&lt;/town&gt;<br />
22: &lt;state&gt;MA&lt;/state&gt;<br />
23: &lt;postalCode&gt;02100&lt;/postalCode&gt;<br />
24: &lt;/contact&gt;<br />
25: &lt;contact&gt;<br />
26: &lt;name&gt;Jose&lt;/name&gt;<br />
27: &lt;emailAddress&gt;no_jose@kst.com&lt;/emailAddress&gt;<br />
28: &lt;phoneNumber&gt;555-5673&lt;/phoneNumber&gt;<br />
29: &lt;faxNumber&gt;555-1000&lt;/faxNumber&gt;<br />
30: &lt;streetAddress&gt;101 Elm Street&lt;/streetAddress&gt;<br />
31: &lt;town&gt;Anytown&lt;/town&gt;<br />
32: &lt;state&gt;MA&lt;/state&gt;<br />
33: &lt;postalCode&gt;02100&lt;/postalCode&gt;<br />
34: &lt;/contact&gt;<br />
35: &lt;/contactList&gt;</p>
<p>Notice the new line #2, which tells us where to find the DTD that will validate<br />
this document. This line points out the root element (contactList) of the<br />
document, and points to the actual DTD that performs the validation. (The SYSTEM<br />
keyword tells us the DTD is in a separate file, &quot;contacts.dtd&quot;). </p>
<p>In order for the XML document to be &quot;valid&quot;, it must meet the constraints of the<br />
DTD. Sarah&#8217;s extraneous tags aren&#8217;t part of the DTD, so any changes she makes<br />
will cause the document to be invalid. Unfortunately, though many parsers will<br />
stop if a document is not well-formed, they will happily ignore DTDs. But at<br />
least you understand them! </p>
<p>
<b>Conclusion</b><br />
You might be wondering why it&#8217;s necessary to enforce rules on your data when you<br />
can pick and choose what you want to display using style-sheets or other<br />
methods. It&#8217;s important not to let your data get away from you. By placing<br />
constraints on it you&#8217;re constantly aware of the data and what relationships it<br />
has with itself (and other data!) </p>
<p>We&#8217;ve showed you how to store data in XML, present it using XSL, and now enforce<br />
rules on it using DTDs. You&#8217;re ready for a real application now, and we&#8217;ll<br />
tackle that in the next article; showing you how to use RSS files to feature<br />
syndicated content on your website.</p>
]]></content:encoded>
			<wfw:commentRss>http://thebuzznutter.com/2010/03/enforcing-data-integrity-with-dtds.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Document Object Model: An Introduction</title>
		<link>http://thebuzznutter.com/2010/03/document-object-model-an-introduction.html</link>
		<comments>http://thebuzznutter.com/2010/03/document-object-model-an-introduction.html#comments</comments>
		<pubDate>Mon, 15 Mar 2010 07:03:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[webmasters Resources]]></category>
		<category><![CDATA[document's method]]></category>
		<category><![CDATA[Object Model]]></category>
		<category><![CDATA[old Netscape]]></category>
		<category><![CDATA[parent element]]></category>

		<guid isPermaLink="false">http://thebuzznutter.com/?p=542</guid>
		<description><![CDATA[Introduction
With the preview release of Netscape 6 (Alpha) the Mozilla project is finally coming full circle. It has been about two years since the project&#8217;s inception, and depending on who you ask it has been a great success or a horrible example of open-source gone wrong.
Whichever opinion you lean towards, one fact is clear: The [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><strong>Introduction</strong><br />
With the preview release of Netscape 6 (Alpha) the Mozilla project is finally coming full circle. It has been about two years since the project&#8217;s inception, and depending on who you ask it has been a great success or a horrible example of open-source gone wrong.</p>
<p style="text-align: justify;">Whichever opinion you lean towards, one fact is clear: The Mozilla project has brought us the most standards compliant browser to date. However, this compliance comes with a price: It&#8217;s not backwards compatible with all the Netscape specific pages and tags. (At least, not yet. Netscape might pull an &#8220;all-nighter&#8221; at the last moment and add this support).<span id="more-542"></span></p>
<p style="text-align: justify;">Back in the day when Netscape and Internet Explorer were fiercely competing for the browser market, each played dirty by adding their own tags and proprietary extensions to web pages in an attempt to &#8220;break&#8221; the other party&#8217;s browser. Truth be told, Netscape played a dirtier game than Microsoft &#8212; Microsoft&#8217;s browser is actually somewhat complaint with regards to the DOM (more on DOM in a bit!), Netscape totally ignored the DOM specifications put forth by the W3C and created their own methods of accessing the document&#8217;s methods and properties via their proprietary &lt;layer&gt; tags. This battle played out for a bit, and web pages with &#8220;Best viewed with XYZ browser&#8221; proliferated. As time progressed, expecting your audience to use your preferred browser became unacceptable. If your page needed to use dynamic features (like drop down menus, or collapsible outlines) you were expected to code for both browsers, thus ensuring everyone could take advantage of your content. Well, now you&#8217;ve got another browser to contend with, since your Navigator code will most likely fail to work under Mozilla/Netscape 6.</p>
<p style="text-align: justify;"><strong>What is the &#8220;DOM&#8221;?</strong><br />
From the W3C&#8217;s specification: &#8220;a platform- and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure and style of documents. The Document Object Model provides a standard set of objects for representing HTML and XML documents, a standard model of how these objects can be combined, and a standard interface for accessing and manipulating them. Vendors can support the DOM as an interface to their proprietary data structures and APIs, and content authors can write to the standard DOM interfaces rather than product-specific APIs, thus increasing interoperability on the Web.&#8221;</p>
<p style="text-align: justify;">What does this mean? It&#8217;s an interface to tinker with your documents on the fly. Instead of negotiating with the web server every time you want to make something happen on a web page, the DOM allows you to tinker with the document&#8217;s makeup or structure and play with it on the fly, client side. At this point let me say that no browser is fully compliant with the specs. Mozilla ranks in closest, followed by Internet Explorer for the Mac, and then regular Internet Explorer. (Note that I have limited knowledge of other browsers, such as Opera. If anyone knows about its compliance level please let me know so I can amend this article!). Microsoft is also rebuilding their browser&#8217;s engine, so it&#8217;s uncertain if the next generation of IE for Windows will be more or less compliant.</p>
<p style="text-align: justify;">As browsers move forward, it is in their best interests to become more and more compliant. The days of &#8220;Best viewed with XYZ browser&#8221; are behind us, and we&#8217;re moving towards the day when all our code will run happily on any user agent.</p>
<p style="text-align: justify;"><strong>But we aren&#8217;t there yet.<br />
A simple example</strong><br />
Lets take a look at a simple example of what we can do. Since this article is focusing on Mozilla/Netscape 6 we&#8217;ll target it for our examples. The examples should work under IE as well. We&#8217;ll also provide some pointers on how to write cross-browser pages in our next article so you don&#8217;t shut out all those old Netscape users.</p>
<p style="text-align: justify;"><strong>Let&#8217;s make a quick collapsible list (quick_list.html):</strong></p>
<p style="text-align: justify;">1: &lt;html&gt;<br />
2: &lt;head&gt;<br />
3: &lt;title&gt;Mozilla/Netscape 6 collapsible list example&lt;/title&gt;<br />
4: &lt;script language=&#8221;Javascript&#8221;&gt;<br />
5:   function toggleIt(el) {<br />
6:     myEl = document.getElementById(el);<br />
7:     if (myEl.style.display == &#8220;block&#8221;) {<br />
8:       myEl.style.display = &#8220;none&#8221;;<br />
9:     } else {<br />
10:       myEl.style.display = &#8220;block&#8221;;<br />
11:     }<br />
12:   }<br />
13: &lt;/script&gt;<br />
14: &lt;/head&gt;<br />
15: &lt;body &gt;<br />
16: &lt;div id=&#8221;parent1&#8243;&gt;<br />
17: &lt;a href=&#8221;#&#8221; onClick=&#8221;toggleIt(&#8217;child1&#8242;)&#8221;&gt;Introduction&lt;/a&gt;<br />
18: &lt;/div&gt;<br />
19: &lt;div id=&#8221;child1&#8243; style=&#8221;margin: 0px 10px; display: none&#8221;&gt;<br />
20: With the preview release of Netscape 6 (Alpha) the<br />
21: Mozilla project is finally coming full circle. It&#8217;s<br />
22: been about two years since the project&#8217;s inception,<br />
23: and depending on who you ask it&#8217;s been a great<br />
24: success or a horrible example of open-source gone<br />
25: wrong.<br />
26: &lt;/div&gt;<br />
27: &lt;div id=&#8221;parent2&#8243;&gt;<br />
28: &lt;a href=&#8221;#&#8221; onClick=&#8221;toggleIt(&#8217;child2&#8242;)&#8221;&gt;What is the DOM?&lt;/a&gt;<br />
29: &lt;/div&gt;<br />
30: &lt;div id=&#8221;child2&#8243; style=&#8221;margin: 0px 10px; display: none&#8221;&gt;<br />
31: It&#8217;s an interface to tinker with your documents on<br />
32: the fly. Instead of negotiating with the web server<br />
33: everytime you want to make something happen on a<br />
34: webpage, the DOM allows you to tinker with the<br />
35: document&#8217;s makeup or structure and play with it<br />
36: on the fly, client side.<br />
37: &lt;/div&gt;<br />
38: &lt;/body&gt;<br />
39: &lt;/html&gt;</p>
<p style="text-align: justify;"><strong>What are we doing? </strong>Well, for starters you can see two types of &lt;div&gt; tags, &#8220;parents&#8221; and &#8220;children&#8221;. There&#8217;s nothing to be gained by giving the &#8220;parent&#8221; &lt;div&gt; tags a name except consistency and readability.</p>
<p style="text-align: justify;">Notice on lines 19 and 30, where the two &#8220;child&#8221; &lt;div&gt; tags begin, the &#8220;style&#8221; settings. &#8220;margin: 0px 10px&#8221; tells the browser to display the contents of this &lt;div&gt; 0px down and 10px to the right of it&#8217;s parent element. This is called relative positioning, and we do it to visibly show that the contents of this &lt;div&gt; are subordinate to the parent &lt;div&gt;.</p>
<p style="text-align: justify;"><strong>Notice also the &#8220;display: </strong>none&#8221;, which does exactly what you might think it does: tells the browser not to display the contents of this &lt;div&gt;. Why would we want to do that? Because that&#8217;s how we&#8217;re going to expand/collapse these items &#8211; by toggling the value of the &#8220;display&#8221; property. How do we do this? By accessing it via the DOM with the Javascript function &#8220;toggleIt()&#8221; starting on line 5.</p>
<p style="text-align: justify;">We pass a single value to this function, the name of the child &lt;div&gt; to toggle. Once passed (as a string, not an object!) we get a reference to the actual object by calling document.getElementById(string). With this reference we can now tinker with the properties of the &lt;div&gt; tag. In this case we&#8217;re toggling the display property between &#8220;none&#8221; (don&#8217;t display it) and &#8220;block&#8221; (display normally).</p>
<p style="text-align: justify;">We could have toggled the &#8220;visibility&#8221; property to hide/unhide the child elements, but this would not have produced the desired result. Instead of removing the child &lt;div&gt; from the document, it would merely make it &#8220;invisible&#8221;, leaving an ugly blank space where the text should be.</p>
<p style="text-align: justify;">The next article in this series will explore a prototype for a &#8220;tree menu&#8221;, similar to those found in just about every file manager in existence. Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://thebuzznutter.com/2010/03/document-object-model-an-introduction.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Subheadings Increase Response</title>
		<link>http://thebuzznutter.com/2010/03/subheadings-increase-response.html</link>
		<comments>http://thebuzznutter.com/2010/03/subheadings-increase-response.html#comments</comments>
		<pubDate>Sat, 13 Mar 2010 07:22:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Computer and Internet]]></category>
		<category><![CDATA[Increase Response]]></category>
		<category><![CDATA[more subheading]]></category>
		<category><![CDATA[printed material]]></category>
		<category><![CDATA[Subheadings Increase]]></category>

		<guid isPermaLink="false">http://thebuzznutter.com/?p=540</guid>
		<description><![CDATA[Subheadings help your ad or sales copy sell. These are
smaller headlines that appear every few paragraphs in your
copy. Put them in bold for printed material. Put them in all
caps or set them off with **, &#62;&#62;, or =&#62; for email.
Proven to be successful. Many studies have shown that
copy with lots of enticing subheadings encourages readers
to [...]]]></description>
			<content:encoded><![CDATA[<p>Subheadings help your ad or sales copy sell. These are<br />
smaller headlines that appear every few paragraphs in your<br />
copy. Put them in bold for printed material. Put them in all<br />
caps or set them off with **, &gt;&gt;, or =&gt; for email.<br />
Proven to be successful. Many studies have shown that<br />
copy with lots of enticing subheadings encourages readers<br />
to read further, understand better, and get more involved<br />
with your offer.</p>
<p><span id="more-540"></span><br />
Benefits SELL! Trumpet your most important benefits in<br />
the subheadings. This gives people in a hurry a fast track to<br />
read. They can skim your subheadings to get your most<br />
important ideas and selling points.</p>
<p>Subheadings make YOU exciting! Want to know one of<br />
the main differences between a best-seller business book and<br />
a boring text book on the same subject? The popular book<br />
has far more subheadings. They break up the copy and<br />
make it easier to read. Try using plenty of subheadings on<br />
your website. Most people don&#8217;t like to read long copy on a<br />
monitor.</p>
]]></content:encoded>
			<wfw:commentRss>http://thebuzznutter.com/2010/03/subheadings-increase-response.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Colors that SELL!</title>
		<link>http://thebuzznutter.com/2010/03/colors-that-sell.html</link>
		<comments>http://thebuzznutter.com/2010/03/colors-that-sell.html#comments</comments>
		<pubDate>Sat, 13 Mar 2010 07:19:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Computer and Internet]]></category>
		<category><![CDATA[ancestors' survival]]></category>
		<category><![CDATA[great in marketing]]></category>
		<category><![CDATA[other color]]></category>
		<category><![CDATA[quality and trust]]></category>

		<guid isPermaLink="false">http://thebuzznutter.com/?p=538</guid>
		<description><![CDATA[Color is a big deal to people. Scientists say we are one of
the few creatures that sees color and it was critical to our
ancestors&#8217; survival.
Color works great in marketing. There are lots of theories
and opinions about what works best. Many say Blue lends a
feeling of quality and trust. Red makes people want to act,
now! Green [...]]]></description>
			<content:encoded><![CDATA[<p>Color is a big deal to people. Scientists say we are one of<br />
the few creatures that sees color and it was critical to our<br />
ancestors&#8217; survival.</p>
<p>Color works great in marketing. There are lots of theories<br />
and opinions about what works best. Many say Blue lends a<br />
feeling of quality and trust. Red makes people want to act,<br />
now! Green makes people want to spend money (I&#8217;m a<br />
little suspicious of this one, but some marketers swear it&#8217;s<br />
true).<br /><span id="more-538"></span><br />
<br />
Yellow tends to get attention better than any other color,<br />
but is hard on the eyes. Designers use Yellow to spice up a<br />
headline or product name, but put the rest of the ad or<br />
package in warmer colors.</p>
<p>One study showed that the color combination with the<br />
most powerful psychological effect was yellow title, white<br />
text, on a dark blue background.</p>
<p>Create an identity through all your marketing and products<br />
with one or two colors you use over and over. This is a<br />
very basic and effective way to tie all your stuff together in<br />
the minds of customers.</p>
]]></content:encoded>
			<wfw:commentRss>http://thebuzznutter.com/2010/03/colors-that-sell.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>So You Wrote an E-book..Now What?</title>
		<link>http://thebuzznutter.com/2010/03/so-you-wrote-an-e-book-now-what.html</link>
		<comments>http://thebuzznutter.com/2010/03/so-you-wrote-an-e-book-now-what.html#comments</comments>
		<pubDate>Sat, 13 Mar 2010 07:16:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Computer and Internet]]></category>
		<category><![CDATA[e-book libraries]]></category>
		<category><![CDATA[marketing tool]]></category>
		<category><![CDATA[software program]]></category>
		<category><![CDATA[traffic generator]]></category>

		<guid isPermaLink="false">http://thebuzznutter.com/?p=536</guid>
		<description><![CDATA[E-books are one hot marketing tool. For those of you who
don&#8217;t get out much an e-book is basically HTML docs that are run through a
software program known as a compiler, that churns out an .exe file. The concept
being that of an electronic book you can read page by page and download and pass
around easily online. [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">E-books are one hot marketing tool. For those of you who<br />
don&#8217;t get out much an e-book is basically HTML docs that are run through a<br />
software program known as a compiler, that churns out an .exe file. The concept<br />
being that of an electronic book you can read page by page and download and pass<br />
around easily online. Some e-books are sold where as others are given away<br />
freely and those who download them are also encouraged to give it away to their<br />
friends or business associates. The &quot;give away&quot; part is what makes it such a<br />
powerful marketing tool. Also, known as a form of viral marketing, when done<br />
right your book can be passed around to thousands of people all over the world.<br />
For this reason it is my opinion that e-books work best when there in no charge<br />
involved. Think about it who doesn&#8217;t like something for free. <span id="more-536"></span>So if you&#8217;ve been<br />
thinking of jumping on the &quot;e-book bandwagon&quot; my advice to you is to give it<br />
away and let it do what it does best, serve as a traffic generator to your<br />
website. The next part of the e-book game, after the book is written is to get<br />
it out into the mainstream of the Internet. You need to heavily market and<br />
promote the book yourself to get the ball rolling so it can do it&#8217;s magic. This<br />
is where a lot of folks get stumped. I have written two e-books myself so I&#8217;ve<br />
done a lot of research and have found out what works and what doesn&#8217;t. If you<br />
have included any other websites in the book your first step is to contact them<br />
and let them know the book exists and where they can download it. Also, mention<br />
to them that it would be great if they offered the book from their site or<br />
mentioned it in their newsletter. Most of them will be happy to comply since<br />
their name is in the book, they benefit as well from promoting it. If you have<br />
sold banner ads in the e-book (which is a great idea) make sure you supply those<br />
people with text link ads and/or graphics they can use on their sites and in<br />
their ezines to help get the word out. Your job is to make it as easy as<br />
possible for them &quot;to pass the word&quot;. This is viral marketing at its finest.<br />
Your next step should be to add a page on your site where visitors can download<br />
the book. If you have any graphic skills at all whip up a book cover to add<br />
along with a description that stresses the benefits they&#8217;ll receive from reading<br />
it. If the book has good content, and it should for all of this to work right,<br />
when you start receiving feedback in the form of compliments make sure you put<br />
them on this page as well. Testimonials are very powerful. If you publish an<br />
ezine you could use the book as a bonus if people subscribe to your newsletter<br />
then you send them the URL to download the book. There are many other ways to<br />
promote your new book. Contact ezine publishers that you think would be<br />
interested in the topic of your book and send them an e-mail stating how nice it<br />
would be if they mentioned it to their readers. Most publishers are always<br />
looking for content and will be happy to help out. Some websites do e-book<br />
reviews and then publish them online or in their newsletters. Here are a few to<br />
get you started. E-book Junction- Linda does reviews for her ezine send to<br />
mailto:linda@a&#8230; There are also sites on the Net that house e-books of all<br />
types and function as e-book libraries. Your book can be submitted to any of the<br />
following; E-book Net http://www.ebooknet.com/ Success Library http://www.ebooksnbytes.com/submit_ebook.html<br />
Ebook Palace http://www.ebookpalace.com/newlink.shtml Stealth Promotions http://www.stealthpromotions.com/e-library.htm<br />
The E-book Directory http://www.ebookdirectory.com/addebook.html If you do a<br />
search on the major search engines you&#8217;re sure to find many more e-book<br />
libraries you can submit to. E-book discussion lists are two way communication<br />
where you can announce your book once you subscribe. Some are; E-book Chat<br />
mailto:anebookchat-subscribe@onelist.com E-book News mailto:ebook-news-subscribe@onelist.com<br />
E-book Talk mailto:ebook_talk-subscribe@onelist.com Another tip is to visit any<br />
of the websites that house free software and submit your book to them. Most of<br />
them include e-books since they are .exe files. Do a search and you&#8217;ll find<br />
these sites by the thousands. There is free software that will submit your<br />
e-book to many of these sites for you with one shot go to http://www.analogx.com/contents/download/program/ssubmit.htm<br />
and download &quot;Soft Submit&quot; which will upload your book to 50 sites at once.<br />
Don&#8217;t forget about including the download URL in your signature file. You are<br />
using one right? I thought so. You could always write a press release about your<br />
e-book and e-mail it to the media. Discussion boards are another great outlet<br />
but don&#8217;t post inappropriately. If you have the book in your sig file you could<br />
just post a comment or answer a question and your signature line will do the<br />
rest. Use your imagination and you&#8217;ll find hundreds of ways to utilize your<br />
e-book in your marketing campaign. After all, this is one viral infection you<br />
want everyone to catch!</p>
<p align="justify"><b>Merle&#8217;s Cyber Promotions (MC) </b>http://www.mcpromotions.com<br />
Creating Visibility Online for Small Business&#8230; because just having a site<br />
isn&#8217;t enough. Visit the site to receive FREE e-books packed with marketing &amp;<br />
promotional tips that will help your site get traffic. Also subscribe to MC<br />
Promotions Press Newsletter to subscribe mailto:subscribe@m&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://thebuzznutter.com/2010/03/so-you-wrote-an-e-book-now-what.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>E-mail do&#8217;s and dont&#8217;s</title>
		<link>http://thebuzznutter.com/2010/03/e-mail-dos-and-donts.html</link>
		<comments>http://thebuzznutter.com/2010/03/e-mail-dos-and-donts.html#comments</comments>
		<pubDate>Sat, 13 Mar 2010 07:09:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Computer and Internet]]></category>
		<category><![CDATA[face communication]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[laugh or giggle]]></category>
		<category><![CDATA[online and especially]]></category>

		<guid isPermaLink="false">http://thebuzznutter.com/?p=532</guid>
		<description><![CDATA[Along with the advent of the Internet came a new way of
communicating called e-mail. If you spend a lot of time online and especially if
you&#8217;re running a web based business, odds are your main tool for communication
is through e-mail. Now e-mail is a wonderful thing. Don&#8217;t get me wrong, but
unlike the telephone or face to [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Along with the advent of the Internet came a new way of<br />
communicating called e-mail. If you spend a lot of time online and especially if<br />
you&#8217;re running a web based business, odds are your main tool for communication<br />
is through e-mail. Now e-mail is a wonderful thing. Don&#8217;t get me wrong, but<br />
unlike the telephone or face to face communication if you don&#8217;t watch your words<br />
you can easily be mis-understood. It&#8217;s all too easy to offend or even hurt<br />
someone&#8217;s feelings just by what you type even if that wasn&#8217;t your intention at<br />
all. Allow me to explain; on the phone your voice sets the stage for what you&#8217;re<br />
trying to say.You raise your tone when angry, laugh or giggle when joking, so<br />
it&#8217;s easy for the other person to understand the main focus of your message. <span id="more-532"></span><br />
When someone screams at you on the telephone, you know immediately they&#8217;re<br />
angry, that or they just forgot to take their Prozak that day. Face to face<br />
communication is another way we converse. Your body positioning, facial<br />
expressions, tone, all work together to get your message understood. But, e-mail<br />
is different. You need to remember there is no voice tone, facial expressions,<br />
or body language so it&#8217;s harder to get your message across the way it was<br />
intended. So next time you&#8217;re in a hurry to respond to an e-mail keep the<br />
following tips in mind. </p>
<p>1) If you say something in a message and don&#8217;t want it<br />
taken too seriously use something like- LOL, which stands for laughing out loud,<br />
or type just kidding. </p>
<p>2) Never ever verbally assault someone with obscenities or<br />
name calling even if they attacked first. Just because it&#8217;s e-mail and you can&#8217;t<br />
see the person face to face, remember there&#8217;s a living breathing person at the<br />
other end of that e-mail address with feelings. Besides you never know where<br />
that email may end up later on and embarrass you. </p>
<p>3) I you feel as if you cannot<br />
fully explain yourself in a message tell the other person to call you at their<br />
convenience. Don&#8217;t demand, ask nicely and say &quot;thank you&quot;. </p>
<p>4) Always answer your<br />
e-mail within 24 to 48 hours. By not responding promptly it shows a lack of<br />
interest on your part and is definitely unprofessional. By showing such a lack<br />
of respect you may easily anger the party who&#8217;s been trying to get in touch with<br />
you. If you&#8217;ll be away on vacation for any length of time set up an<br />
autoresponder that answers your mail and notifies the sender that you are away<br />
and when you&#8217;ll return. If you don&#8217;t know how to do this call your ISP for<br />
assistance. </p>
<p>5) Always spell check every message for accuracy. Bad spelling and<br />
grammar in a message can make someone form an opinion of you from that message,<br />
and it&#8217;s not a good one. </p>
<p>6) Also never type in all caps as it means you ARE<br />
SCREAMING at someone. It&#8217;s considered very rude. E-mail is a quick and<br />
convenient way to communicate, but it&#8217;s important that your messages are<br />
received as you intended. </p>
<p>By following these tips when dealing with your e-mail<br />
you&#8217;ll be thought of as a professional and a pretty nice person as well! </p>
<p align="justify">Merle http://www.merlesworld.com Freebies for Webmasters and<br />
a Whole Lot More! Subscribe to Merle&#8217;s Mission Newsletter by sending<br />
mailto:subscribe@m&#8230; Secrets of Business in the New Millennium get the e-book<br />
here http://www.merlesworld.com/tk.cgi?</p>
]]></content:encoded>
			<wfw:commentRss>http://thebuzznutter.com/2010/03/e-mail-dos-and-donts.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Are you Ready for WAP &amp; WML?</title>
		<link>http://thebuzznutter.com/2010/03/are-you-ready-for-wap-wml.html</link>
		<comments>http://thebuzznutter.com/2010/03/are-you-ready-for-wap-wml.html#comments</comments>
		<pubDate>Sat, 13 Mar 2010 07:04:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Computer and Internet]]></category>
		<category><![CDATA[plenty of sites]]></category>
		<category><![CDATA[WAP & WML]]></category>
		<category><![CDATA[Wireless Markup]]></category>
		<category><![CDATA[wireless net-surfer]]></category>

		<guid isPermaLink="false">http://thebuzznutter.com/?p=530</guid>
		<description><![CDATA[Acronyms make the computer world go round. Things like HTML, DHTML, XHTML;
it&#8217;s enough to make a grown man cry. Well, look out! There&#8217;s a new player in
alphabet-town: &#34;WAP.&#34; So what is it and why should you care? WAP stands for
&#34;Wireless Application Protocol&#34; and it allows people to access the Net using
wireless devices like mobile phones [...]]]></description>
			<content:encoded><![CDATA[<p>Acronyms make the computer world go round. Things like HTML, DHTML, XHTML;<br />
it&#8217;s enough to make a grown man cry. Well, look out! There&#8217;s a new player in<br />
alphabet-town: &quot;WAP.&quot; So what is it and why should you care? WAP stands for<br />
&quot;Wireless Application Protocol&quot; and it allows people to access the Net using<br />
wireless devices like mobile phones and other gadgets.</p>
<p>It&#8217;s estimated that by the year 2002 there will be over 800 million wireless<br />
users around the world. Eventually all wireless tools will come equipped with<br />
WAP as standard issue. That&#8217;s a lot of possible viewers for your website. The<br />
problem is that wireless net-surfers will not be able to access your HTML-driven<br />
site. Their devices can only read sites built in (get ready for another<br />
acronym!) WML.</p>
<p><span id="more-530"></span><br />
WML stands for &quot;Wireless Markup Language.&quot; (Are you taking notes here?) So if<br />
you presently have a website built in HTML and you want mobile users to be able<br />
to view it, you&#8217;ll need to make another version of it in WML. The good news is<br />
that WML is not hard to learn and can be picked up easily. Plus, there are<br />
plenty of sites online that will teach you everything you&#8217;ll ever want to know<br />
about this new technology. Some of the better ones are:</p>
<p>http://www.wapdrive.net<br />
Learn what WAP is (and isn&#8217;t), how to write WAP &quot;cards&quot; (not &quot;pages&quot;), and best<br />
of all, you&#8217;ll find some free software you can download to make your own WAP<br />
site. Free.<br />
http://www.wapuseek.com<br />
Contains Wap articles, links, tools and more. Make sure you stop in the<br />
developers area for all kinds of webmaster tools for creating your own WAP<br />
pages. </p>
<p>http://www.gelon.net/dev/<br />
A ton of helpful information here: leaning WML, books, where you can host your<br />
new WAP sites and more.</p>
<p>http://www.anywhereyougo.com<br />
100% wireless application development: archives, news, books, and more. Sign up<br />
for their helpful newsletter to keep abreast of what&#8217;s going on in this new<br />
field.</p>
<p>As far as building your WAP site you can download free software or use an online<br />
editor available at some websites.</p>
<p>http://www.wapmine.com<br />
WAPPage 1.0 is an extensive and powerful design tool for WAP (Wireless<br />
Application Protocol) Sites.</p>
<p>http://mobphone.com &#8211; WAP publishing tool for cellular mobile WAP phones.</p>
<p><b>For hosting your new wireless-enabled site, check out:</b><br />
http://www.hoiley.com/ &#8211; Offering a variety of free services<br />
http://www.tagtag.com/ &#8211; Build and host your site free<br />
http://wappy.to &#8211; The first online WAPsite builder complete with hosting.</p>
<p>Keep in mind that the viewing area on a mobile device is a whole lot smaller<br />
than that of a computer monitor. So you need to be short and concise. Plan on<br />
about 10 text lines per WAP &quot;card&quot; (instead of &quot;page.&quot;) Due to slow transmission<br />
speeds typically 14.4 to 19.6 Kbps you need to keep text and graphics down to<br />
bare minimum.</p>
<p>Wireless phones use &quot;microbrowsers&quot; to surf the web so you need to make sure the<br />
web cards in WML look good on a wireless device. But what if you don&#8217;t have that<br />
kind of luxury? No problem, hop over to http://www.wapdrive.net and you&#8217;ll find<br />
something called &quot;The Wapalizer&quot; that will allow you to look at any WAP site<br />
using your regular browser. Just type in the URL and a new window opens up that<br />
imitates a mobile phones interface. You can browse through the entire site to<br />
make sure everything will be viewed correctly by your mobile guests.</p>
<p>So there you have it. WAP and WML, two good things that just naturally go<br />
together. If you presently have an HTML site you might want to consider making a<br />
version of it in WML as a sidekick, thus opening yourself up to a whole new<br />
audience; a mobile one.</p>
<p>After all, we&#8217;re a society on the move&#8230; and you&#8217;d better keep up!</p>
]]></content:encoded>
			<wfw:commentRss>http://thebuzznutter.com/2010/03/are-you-ready-for-wap-wml.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
