convert pdf to tiff c# : Add signature to preview pdf software application project winforms html web page UWP Python%20and%20XML1-part1638

IT-SC book 
9
The following typographical conventions are used throughout this book: 
Bold  
Used for the occasional reference to labels in graphical user interfaces, as well 
as user input.  
Italic  
Used  for  commands,  URLs,  filenames,  file  extensions,  directory  or  folder 
names, emphasis, and new terms where they are defined.  
Constant width  
Used  for  constructs  from  programming  languages,  HTML,  and  XML,  both 
within running text and in listings.  
Constant width italic  
Used for general placeholders that indicate that an item should be replaced by 
some actual value in your own program. Most importantly, this font is used 
for formal parameters when discussing the signatures of API methods.  
How to Contact Us 
We have tested and verified all the information in this book to the best of our abilities, but you 
may find that features have changed or that we have let errors slip through the production of the 
book. Please let us know of any errors that you find, as well as suggestions for future editions, by 
writing to:  
O'Reilly & Associates, Inc.  
1005 Gravenstein Highway North  
Sebastopol, CA 95472  
1-800-998-9938 (in the United States or Canada)  
1-707-829-0515 (international/local)  
1-707-829-0104 (fax)  
You can also send us messages electronically. To be put on the mailing list or to request a catalog, 
send email to:  
info@oreilly.com
To ask technical questions or comment on the book, send email to: 
bookquestions@oreilly.com
Add signature to preview pdf - C# PDF File Permission Library: add, remove, update PDF file permission in C#.net, ASP.NET, MVC, WPF
Tell C# users how to set PDF file permissions, like printing, copying, modifying, extracting, annotating, form filling, etc
add jpeg signature to pdf; adding a signature to a pdf in preview
Add signature to preview pdf - VB.NET PDF File Permission Library: add, remove, update PDF file permission in vb.net, ASP.NET, MVC, WPF
VB.NET Tutorial for How to Set PDF File Access Permissions Using XDoc.PDF for .NET
pdf create signature; adding signature to pdf
IT-SC book 
10 
We  have a web site for the book, where we'll list examples, errata, and any  plans for future 
editions. You can access this page at:  
http://www.oreilly.com/catalog/pythonxml/
For more information about this book and others, see the O'Reilly web site:  
http://www.oreilly.com/
C# WinForms Viewer: Load, View, Convert, Annotate and Edit PDF
Add text to PDF document in preview. • Add text box to PDF file in preview. Sign PDF document with signature. Search PDF text in preview.
add signature field to pdf; pdf secure signature
C# WinForms Viewer: Load, View, Convert, Annotate and Edit Tiff
Viewer provides other utility features for processing Tiff while in preview, such as convert Tiff file to PDF, add annotations to Tiff, Create signature on tiff
add signature box to pdf; create a pdf signature file
IT-SC book 
11
Acknowledgments 
While it is impossible to individually acknowledge everyone that had a hand in getting this book 
from an idea to the printed work you now hold in your hand, we would like to recognize and 
thank a few of these special people.  
We are both very grateful for the support of our families, without which this would not have even 
gotten started. Chris would like to thank his family (Barb, Miles, and Katherine); without their 
support he would never get any writing completed, ever. Fred owes a great deal of gratitude to his 
wife (Cathy), who spent many a lonely evening wondering if he'd remember to come to bed. His 
children (William, Christopher, and Erin) made sure he didn't forget why he spends so much time 
on all this. Those late-night trips to the coffee shop with Erin will never be forgotten!  
We'd  especially like  to thank Guido van Rossum and Fred's compatriots  at PythonLabs (Tim 
Peters, Jeremy Hylton, and Barry Warsaw) for  making sure  Python could grow  to be such  a 
wonderful tool for building applications, and for leading the incredible community efforts which 
have gone into both Python itself and the excellent selection of additional packages of Python 
code.  
Python's development has been beleaguered by regular employment changes, but we all owe a 
debt of gratitude to the employers of the contributors and the PythonLabs team. Now at Zope 
Corporation (formerly Digital Creations), PythonLabs has finally found a home that offers both a 
rich  environment  for  Python  and  comfortable  place  to  settle  down.  Previous  employers  of 
Python's lead developers, including the Corporation for National Research Initiatives (CNRI) and 
Stichting Mathematisch Centrum, deserve credit for allowing Python to germinate and blossom.  
Our reviewers' efforts were invaluable and made this book what it is today. (They were helpful, 
and showed great faith in our ability to pull this off, even when we weren't so sure.) Martin von 
Löwis,  Paul  Prescod,  Simon  St.Laurent,  Greg  Wilson,  and  Frank  Willison  all  contributed 
generously of their time and helped to ensure that our mistakes were noticed. The feedback they 
provided, both from a development and from a technical support perspective, was invaluable. 
Any mistakes in the finished book are our own. Fred Drake, who began working on this project as 
a technical reviewer, must still answer for any mistakes he's introduced!  
Many people at O'Reilly played an important part in the development of this book, and without 
the help of their editorial staff, this book would seem rambling and incoherent (well, more so at 
least!).  Laura Lewin deserves special recognition. Without her editorial  skill and  faith in  our 
ability to present the important aspects of our subject, you wouldn't be reading this; her penchant 
for reminding us of the big picture when we became mired in the particulars of topics kept us on 
track and focused. Frank Willison deserves a great deal of credit not only for bringing Laura to 
O'Reilly, but in shepherding O'Reilly's efforts to bring together their line of books on Python; 
we'll all miss him. Finally, we'd like to thank the production staff at O'Reilly for their hard work 
in getting the book to print.  
C# PDF insert image Library: insert images into PDF in C#.net, ASP
viewer component supports inserting image to PDF in preview without adobe How to insert and add image, picture, digital photo, scanned signature or logo
sign pdf; adding signature to pdf files
C# HTML5 Viewer: Load, View, Convert, Annotate and Edit Raster
to zoom in or zoom out images while in preview. features, which allows users to add text signatures to images, draw freehand signature on images
add signature to pdf; create pdf signature field
IT-SC book 
12 
Chapter 1. Python and XML 
Python and XML are two very different animals, each with a rich history. Python is a full-scale 
programming language that has grown from scripting world roots in a very organic way, through 
the vision and guidance of Python's inventor, Guido van Rossum. Guido continues to take into 
account the needs of Python developers as Python matures. XML, on the other hand, though 
strongly  impacted  by  the  ideas  of  a  small  cadre  of  visionaries,  has  grown  from  standards-
committee roots.  It has  seen both  quiet  adoption and  wrenching  battles over  its future. Why 
bother putting the two technologies together?  
Before the Python/XML combination, there seemed no easy or effective way to work with XML 
in  a  distributed  environment.  Developers  were  forced  to  rely  on  a  variety  of  tools  used  in 
awkward  combination  with  one  other.  We  used  shell  scripting  and  Perl  to  process  text  and 
interact with the operating system, and  then  used Java XML  API's  for  processing  XML  and 
network programming. The shell provided an excellent means of file manipulation and interaction 
with the Unix system, and Perl was a good choice for simple text manipulation, providing access 
to the Unix APIs. Unfortunately, neither sported a sophisticated object model. Java, on the other 
hand, featured an object-oriented environment, a robust platform API for network programming, 
threads, and graphical user interface (GUI) application development. But with Java, we found an 
immediate lack of text manipulation power; scripting languages typically provided strong text 
processing.  Python  presented  a  perfect  solution,  as  it  combines  the  strengths  of  all  of  these 
various options.  
Like most scripting languages, Python features excellent text and file manipulation capabilities. 
Yet, unlike most scripting languages, Python sports a powerful object-oriented environment with 
 robust  platform  API  for  network  programming,  threads,  and  graphical  user  interface 
development. It can be extended with components written in C and C++ with ease, allowing it to 
be connected to most existing libraries. To top it off, Python has been shown to be more portable 
than other popular interpreted languages, running comfortably on platforms ranging from massive 
parallel Connection Machines to personal digital assistants and other embedded systems. As a 
result,  Python  is  an  excellent  choice  for  XML  programming  and  distributed  application 
development.  
It could be said that Python brings sanity and robustness to the scripting world, much in the same 
way that Java once did to the C++ world. As always, there are trade-offs. In moving from C++ to 
Java, you find a simpler language with stronger object-oriented underpinnings. Changing to a 
simpler language further removed from the low-level details of memory management and the 
hardware,  you  gain  robustness  and  an  improved  ability  to  locate  coding  errors.  You  also 
encounter a rich API equipped with easy thread management, network programming, and support 
for Internet technologies and protocols. As may be expected, this flexibility comes at a cost: you 
also encounter some 
reduced performance
when comparing it with languages such as C and 
C++.  
Likewise, when choosing a scripting language such as Python over C, C++, or even Java, you do 
make some concessions. You trade performance for robustness  and for the ability to develop 
more  rapidly.  In  the  area  of  enterprise  and  Internet  systems  development,  choosing  reliable 
software,  flexible  design,  and  rapid  growth  and  deployment  are  factors  that  outweigh  the 
performance gains you might get by using a language such as C++. If you do need some of the 
performance back, you can still implement speed-sensitive components of your application in C 
or C++, but you can avoid doing so until you have profiling data to help you pinpoint what is 
C# HTML5 Viewer: Load, View, Convert, Annotate and Edit Tiff
is absolutely can be annotated in preview on RasterEdge HTML5 Viewer for C# .NET signature feature can help Users are allowed to add variety of signatures to
add signature image to pdf; pdf signature field
C# Create PDF Library SDK to convert PDF from other file formats
Preview PDF documents without other plug-ins. document metadata adding control, you can add some additional PDF file by adding digital signature (watermark) on
pdf signature; create pdf with signature field
IT-SC book 
13
really a problem and what only might be a problem. (How to perform the analysis and write 
extensions in C/C++ is a topic for other books.)  
Regardless of your feelings on scripting languages, Java, or C++, this book focuses on XML and 
the Python language. For those who are new to XML, we will start with an overview of why it is 
interesting, and then we'll move on to using it from Python and seeing how we make our XML 
applications easier to create.  
1.1 Key Advantages of XML 
XML has a few key advantages that make it the data language of choice on the Internet. These 
advantages  were  designed  into  XML  from  the  beginning,  and,  in  fact,  are  what  make  it  so 
appealing to Internet developers.  
1.1.1 Application Neutrality 
First, XML is both human- and machine-readable. This is not a subtle point. Have you ever tried 
to read a Microsoft Word document with a text editor? You can't if it was saved as a 
.doc
file, 
because the information in a 
.doc
document is in a 
binary
(computer readable only) format, even 
though most Word documents primarily consist of text. A Word document cannot be shared with 
any other application besides Word—unless that application has been taught the intricacies of 
Word's binary format. In this  case, the  application must also  be  taught to expect  changes  in 
Word's format each time there is a new release from Microsoft.  
This sounds annoying for the developer, but how bad is it, really? After all, Word is incredibly 
popular, so it must not be too hard  to figure  out. Let's look at  the top of the Word file that 
contains this chapter:  
Ï_ࡱ_á                > _ ÿ    _           _   B_       _  D_  _   
ÿÿÿ    ?_  @_  A_ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì¥Á 7         _  _¿      _     _  >_  _  
bjbjU_U_                         __ 0¸_ 7|  7|  W_  _     C             
ÿÿ_         ÿÿ_         ÿÿ_                 l     Ê_       
Ê_  Ê_      Ê_      Ê_      Ê_      Ê_  ¶           _       
This certainly looks familiar to anyone who has ever opened a Word file with a text editor. We 
don't see our recognizable text (the content we intended) so we must assume it is buried deep in 
VB.NET PDF insert image library: insert images into PDF in vb.net
Import graphic picture, digital photo, signature and logo into PDF Add images to any selected PDF page in VB inserting image to PDF in preview without adobe PDF
adding signature to pdf form; pdf export sign in
C# PDF remove image library: remove, delete images from PDF in C#.
vector image, graphic picture, digital photo, scanned signature, logo, etc. Remove PDF image in preview without adobe PDF reader Add necessary references:
adding signature to pdf file; pdf sign
IT-SC book 
14 
the file. Determining what the true content is and where it is can be difficult, but it shouldn't be. It 
is
our data, after all. Let's try another supported format: "Rich Text Format," or RTF. Unlike 
the 
.doc
file, this format is text-based, and should therefore be a bit easier to decipher. We search 
down in the file to find the start of our text:  
\par }\pard \s34\qr 
\li0\ri0\sb80\sa480\sl240\slmult0\widctlpar\aspalpha\aspnum\faauto\out 
linelevel0\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\pnrauth1\pnr 
date-967302179\pnrnot1\adjustright\rin0\lin0\itap0 {\b0\fs48 Combining 
Python and XML}{ 
\b0\deleted\fs48\revauthdel1\revdttmdel-2041034726 Fundamentals}{\b0\f 
s48\revised\revauth1\revdttm-2041034726 ?}{\b0\fs48  
\par }\pard\plain \qj  
This is better. The chapter title is visible, so we can try to decipher the structure from that point 
forward. The markup appears to be complex, and there's a hint of an old version of the chapter 
title. To extract the text we actually want, we need to understand the Word model for revision 
tracking, which still presents many challenges.  
XML, on the other hand, is application-neutral. In other words, an XML document is usually 
processed by an XML parser or processor, but if one is not available, an XML document can be 
easily read and parsed. Data kept in XML is not trapped within the constraints of one particular 
software  application.  The  ability to read rich  data  files  can  become  very  valuable  when,  for 
example, 20 years from now, you dig up a CD-ROM of old business forms that you suddenly find 
you need again. Will QuickBooks still allow you to extract this same data in 2021? With XML, 
you can read the data with any text editor.  
Let's look at this chapter in XML. Using markup from a common document type for software 
manuals  and  documentation  (DocBook),  it  appears  somewhat  verbose,  and  doesn't  include 
change-tracking information, but we can identify the text quite easily now:  
<chapter> 
<title>Python and XML</title> 
<para>Python and XML are two very different animals, each with a 
rich history.  Python is a full-scale programming language that has 
grown 
from scripting world roots, and has done so in a very organic way 
Note that additional characters appear in the document (other than the document content); these 
are called 
markup
(or 
tags
). We saw this in the RTF version of the document as well, but there 
were many more bits of text that were difficult to decipher, and we can reasonably surmise that 
the strange data in the MS Word document would correspond to this in some way. Were this a 
VB.NET PDF remove image library: remove, delete images from PDF in
vector image, graphic picture, digital photo, scanned signature, logo, etc. Remove PDF image in preview without adobe PDF reader Add necessary references:
add signature to pdf file; create pdf signature
VB.NET PDF copy, paste image library: copy, paste, cut PDF images
vector image, graphic picture, digital photo, scanned signature, logo, etc. Copy, paste and cut PDF image while preview without adobe Add necessary references:
create signature pdf; export pdf to word sign in
IT-SC book 
15
book on RTF, you would quickly surmise two things: RTF is much more like a printer control 
language than the example of XML we just looked at, and writing a program that understands 
RTF would be quite difficult. In this book, we're going to show you that XML can be used to 
define languages that fit your application, and that creating programs that can decipher XML is 
not a difficult task, especially with the help of Python.  
1.1.2 Hierarchical Structure 
XML is hierarchical, and allows you to choose your own tag names. This is quite different from 
HTML. In XML, you are free to create elements of any type, and stack other elements within 
those elements. For example, consider an address entry:  
<?xml version="1.0"?> 
<address> 
<name>Bubba McBubba</name> 
<street>123 Happy Go Lucky Ln.</street> 
<city>Seattle</city><state>WA</state><zip>98056</zip> 
</address> 
In the above well-formed XML code, I came up with a few record names and then lumped them 
together with data. XML processing software, such as a 
parser
(which you use to interpret the 
syntactic constructs in an XML document), would be able to represent this data in many ways, 
because  its  structure  has  been  communicated.  For  example,  if  we  were  to  look  at  what  an 
application programmer might write in source  code, we  could  turn  this record into an object 
initialized this way:  
addr = Address(  ) 
addr.name = "Bubba McBubba" 
addr.street = "123 Happy Go Lucky Ln." 
addr.city = "Seattle" 
addr.state = "WA" 
addr.zip = "98056" 
This approach makes XML well-suited as a format for many serialized objects. (There are some 
constructs  for which XML is not so well suited, including many formats for large numerical 
datasets used in scientific computing.) XML's hierarchical structure makes it easy to apply the 
concept of object interfaces to documents—it's quite simple to build application-specific objects 
directly from the information stream, given mappings from element names to object types. We 
later see that we can model more than simple hierarchical structures with XML.  
1.1.3 Platform Neutrality 
IT-SC book 
16 
Remember that XML is cross-platform. While this is mainly a feature of its text-based format, it's 
still very much true. The use of certain text encodings ensures that there are no misconceptions 
among platforms as to the arrangement of an XML document. Therefore, it's easy to pass an 
XML  purchase  order  from  a  Unix  machine  to  a  wireless  personal  digital  assistant.  XML  is 
designed for use in conjunction with existing Internet infrastructure using HTTP, SSL, and other 
messaging  protocols  as  they  evolve.  These  qualities  make  XML  lend  itself  to  distributed 
applications; it has been successfully used as a foundation for message queuing systems, instant 
messaging applications, and remote procedure call frameworks. We examine these applications 
further in 
Chapter 9
and 
Chapter 10
. It also means that the document example given earlier is 
more than simply application-neutral, and can be readily moved from one type of machine to 
another  without  loss  of  information.  A  chapter  of  a  technical  book  can  be  written  by  a 
programmer  on  his  or  her  favorite  flavor  of  Unix,  and  then  sent  to  a  publisher  using  book 
composition software on a Macintosh. The many difficult format conversions can be avoided.  
1.1.4 International Language Support 
As the Internet becomes increasingly pervasive in our daily lives, we become more aware of the 
world around us — it is a culture-rich and diversified place. As technologists, however, we are 
still learning the significance of making our software work in ways that supports more than one 
language  at  a  time;  making  our  text-processing  routines  "8-bit  safe"  is  not  only  no  longer 
sufficient, it's no longer even close.  
Standards bodies all over the world have come up with ways that computers can interchange text 
written in their national languages, and sometimes they've come up with several, each having 
varying degrees of acceptance. Unfortunately, most applications do not include information about 
which  language  or  interchange  standard  their  data  is  written  in,  so  it  is  difficult  to  share 
information  across  the  cultural  and  linguistic  boundaries  the  different  standards  represent. 
Sometimes it is difficult to share information within such boundaries if multiple standards are 
prominent.  
The difficulties are compounded by very substantial cultural differences that present themselves 
about how text is handled. There are many different writing systems in addition to the western 
European  left-to-right,  top-to-bottom  style  in  which  this  book  is  written;  right-to-left  is  not 
uncommon, and top-to-bottom "lines" of text arranged right-to-left on the page is used in China. 
Hebrew uses a right-to-left writing system, but numbers are written using Arabic numerals from 
left to right. Other systems support textual annotations written in parallel with the text. Consider 
what happens when a document includes text from different writing systems!  
Standards bodies are aware of this problem, and have been working on solutions for years. The 
editors of the XML specification have wisely avoided proposing new solutions to most of these 
issues,  and  are  instead  choosing  to  build  on  the  work  of  experts  on  the  topic  and  existing 
standards.  
The  International  Organization  for  Standardization  (ISO)  and  the  Unicode  Consortium 
(
http://www.unicode.org/
) have arrived at a single standard that, while not perfect, is perhaps 
the most capable standard attempting to unify the world's text representations, with the intent that 
all  languages  and  alphabets  (including  ideographic  and  hieroglyphic  character  sets)  are 
representable. The standard is known as ISO/IEC 10646, or more commonly, Unicode. Not all 
national standards bodies have agreed that Unicode is the standard for all future text interchange 
applications, especially in  Asia,  but there  is  widespread belief  that Unicode is the  best  thing 
available  to  serve  everyone.  The  standard  deals  with  issues  including  multidirectional  text, 
IT-SC book 
17
capitalization rules, and encoding algorithms that can be used to ensure various properties of data 
streams. The standard does not deal specifically with language issues that are not tied intimately 
to character issues. Software sensitive to natural language may still need to do a lot beyond using 
Unicode to ensure proper collation of names in a particular language (or multiple languages!). 
Some languages will require substantial additional support for proper text rendering (Arabic, for 
instance, which requires different letterforms for characters based on their position within a word 
and based on neighboring letterforms).  
The World Wide Web Consortium (W3C) made a simple and masterful stroke to make it easier to 
use both the older interchange standards and Unicode. It required that all XML documents be 
Unicode, and specified that they must describe their own encoding in such a way that all XML 
processors were able to determine what encoding the document was written in. A few specific 
encodings must be recognized by all processors, so that it is always possible to generate XML 
that can be read anywhere and represent all of the world's characters. There is also a feature that 
allows the content of XML documents to be labeled with the actual language it is written in, but 
that's not used as much as it could be at this time.  
Since XML documents are Unicode documents, the languages of the world are supported. The 
use of Unicode and  encodings in XML are discussed in some detail in 
Chapter 2
. Unicode 
strings have been a part of Python since Version 2.0, and the Python standard library includes 
support for a large number of encodings.  
1.2 The XML Specifications 
In  the trade press,  we often  see references about how  XML "now  supports" some  particular 
industry-specific  application.  The  article  that  follows  is  often  confused,  offering  some  small 
morsel of information about an industry consortium that has released a new specification for an 
XML-based language  to  support interoperability of data within the  consortium's industry.  As 
technical people, we usually note that it doesn't apply to the industries we're involved in, or else it 
does, but the specification is too early a draft to be useful. In fact, our managers will probably 
agree with us most of the time, or they'll be privy to some relevant information that causes them 
to disagree. If we step up the corporate ladder a couple more rungs, however, we often find an 
increase in the level of confusion over XML. Sometimes, this is accompanied by either a call to 
"adopt XML" (too often with a list of particular specifications that are not intended to be used 
together), or a reaction that XML is too immature to use at all.  
So we need to think about just what we can work with that will meet the following criteria:  
It must make technical sense for our application. 
It should be sufficiently well-defined that implementation is possible.  
It must be able to be explained and justified to (at least) our direct managers.  
It won't freak out the upper management. 
Ok, we're technical people, so we may have to ignore that last item; it certainly won't be covered 
in this book. In fact, most of this really can't be covered in technical material. There are many 
specifications in various  stages  of maturity, and most are specific to  one industry or another. 
However, we can point out what the foundation specifications are, because those you will need 
regardless of your industry or other requirements.  
IT-SC book 
18 
1.2.1 XML 1.0 Recommendation 
The XML specification  itself is  a  document  created  and maintained  by the W3C. As of  this 
writing, the current version is 
Extensible Markup Language (XML) 1.0 
(Second Edition), and 
is available from the W3C web site at 
http://www.w3.org/TR/REC-xml
. (The second edition 
differs from the first only in that some editorial corrections and clarifications have been made; the 
specification is stable.)  
XML itself is not a markup language, but a meta-language that can be used to define specific 
markup languages. In this, it inherits much from SGML. The specification covers five aspects of 
markup languages:  
Range of structural forms which can be marked 
Specific syntax of markup components 
A schema language used to define specific languages 
Definition of validity constraints 
Minimum requirements for processing tools 
Unlike SGML, XML allows itself to be used without defining an explicit markup language in any 
formal way. Whether or not this is useful for your applications, it has greatly accelerated the 
acceptance  of  XML-based  technologies  in  some  developer  communities.  This  can  happen 
because of the lower cost of entrance to the XML space. It is possible to adopt XML without 
learning some of the more esoteric corners of the specification, and development prototypes can 
start using XML technologies without a lot of advance planning.  
Chapter 2
presents the most widely used parts of the specification and goes into more depth on 
what  are the  most  important items to most readers of  this book.  If any  of the  details are  of 
particular  interest to you, please spend  some time  reading relevant  parts of the specification. 
While it is at times a bit convoluted, it is not generally a difficult specification to read.  
1.2.2 Namespaces in XML 
While the XML 1.0 recommendation defines specific syntactic aspects of XML and one way of 
creating  document  types,  it  does  not  discuss  how  to  combine  components  from  multiple 
document  types.  The  Namespaces  in  XML  recommendation,  available  at 
http://www.w3.org/TR/REC-xml-names
(referred  to  as  Namespaces  from  now  on),  deals 
with the syntactic and structural mechanics of combining structured components from different 
specifications, but is largely silent on the meaning of resulting combinations. For this, it defers to 
specifications that had not been written when Namespaces was published.  
This  recommendation  places  some  additional  constraints  on  the  syntactic  construction  of 
conformant documents. It allows a document to specify the source of each element or attribute by 
placing it in a namespace. Each namespace provides definitions for elements and attributes. How 
the elements  and attributes  are defined is not covered  in this specification,  so the concept of 
validation of an arbitrary document that uses namespaces is not entirely clear. It is possible to 
create a document type using XML 1.0 that has some support for namespaces, but such a schema 
loses much of the flexibility offered by the Namespaces specification. For example, the document 
Documents you may be interested
Documents you may be interested