<?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>Hyper NET Studio</title>
	<atom:link href="http://www.hypernetstudio.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hypernetstudio.com</link>
	<description>Web Design and Hyper NET Technologies</description>
	<lastBuildDate>Sat, 12 May 2012 10:07:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>This website is for sale</title>
		<link>http://www.hypernetstudio.com/2012/05/12/this-website-is-for-sale/</link>
		<comments>http://www.hypernetstudio.com/2012/05/12/this-website-is-for-sale/#comments</comments>
		<pubDate>Sat, 12 May 2012 09:40:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[A News]]></category>

		<guid isPermaLink="false">http://www.hypernetstudio.com/?p=197</guid>
		<description><![CDATA[This website (with domain and hosting) is for sale  -  http://www.hypernetstudio.com Website is based on WordPress CMS and include many useful modules. Аdditional at website attached: 1. Twitter account &#8211; https://twitter.com/Hyper_NET 2. Facebook page &#8211; http://www.facebook.com/Hyper.NET.Studio 3. YouTube video channel &#8211; http://www.youtube.com/TheHyperVISION 4. Google adsense account 5. Google webmaster tools 6. Google analytics 7. Google]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.hypernetstudio.com/wp-content/uploads/2012/05/for-sale2.png"><img class="size-full wp-image-202 alignnone" title="For Sale 2" src="http://www.hypernetstudio.com/wp-content/uploads/2012/05/for-sale2.png" alt="" width="172" height="172" /></a></p>
<p>This website (with domain and hosting) is for sale  -  http://www.hypernetstudio.com<br />
Website is based on WordPress CMS and include many useful modules.<br />
Аdditional at website attached:<br />
1. Twitter account &#8211; https://twitter.com/Hyper_NET<br />
2. Facebook page &#8211; http://www.facebook.com/Hyper.NET.Studio<br />
3. YouTube video channel &#8211; http://www.youtube.com/TheHyperVISION<br />
4. Google adsense account<br />
5. Google webmaster tools<br />
6. Google analytics<br />
7. Google plus account with page &#8211; https://plus.google.com/101142197850444006241<br />
8. Gmail account &#8211; hypernetstudio@gmail.com<br />
9. Donation system (with Bitcoin digital currency)</p>
<p>Price: $800</p>
<p>If you are interesting this proposal contact us:   kakha.ts@gmail.com</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypernetstudio.com/2012/05/12/this-website-is-for-sale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft Expression Web</title>
		<link>http://www.hypernetstudio.com/2012/04/20/microsoft-expression-web/</link>
		<comments>http://www.hypernetstudio.com/2012/04/20/microsoft-expression-web/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 21:15:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Editors]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[Expression]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.hypernetstudio.com/?p=147</guid>
		<description><![CDATA[Microsoft Expression Web, code-named Quartz, is an HTML editor and general web design software product by Microsoft. It is part of the Expression Studio suite. Expression Web can design and develop web pages using XML, CSS 2.1, ASP.NET or ASP.NET AJAX, XHTML, XSLT, PHP and JavaScript. Expression Web 4 requires .NET Framework 4.0 and Silverlight]]></description>
			<content:encoded><![CDATA[<p><strong>Microsoft Expression Web</strong>, code-named <em>Quartz</em>, is an HTML editor and general web design software product by Microsoft. It is part of the Expression Studio suite.</p>
<p>Expression Web can design and develop web pages using XML, CSS 2.1, ASP.NET or ASP.NET AJAX, XHTML, XSLT, PHP and JavaScript. Expression Web 4 requires .NET Framework 4.0 and Silverlight 4.0 to install and run. Expression Web uses its own standards-based rendering engine which is different from Internet Explorer&#8217;s Trident engine.</p>
<h3>Version history</h3>
<p>On May 14, 2006, Microsoft released the first Community Technology Preview (CTP) version of Expression Web. On September 5, 2006, Microsoft released Beta 1. Beta 1 removed most of the FrontPage-proprietary (non-standard) features such as bots (use of FPSE features for server-side scripting), parts, functions, themes, automatic generation of navigation buttons, FrontPage forms, navigation pane to build a web site&#8217;s hierarchy, and other non-standard features available in CTP 1. The Release To Manufacturing version was made available on December 4, 2006 and the first and only service pack in December 2007. Expression Web does not have the form validation controls for HTML fields like FrontPage, but supports validator controls for ASP.NET.</p>
<p>Microsoft Expression Web 2 was released in 2008. Expression Web 2 offers native support for PHP and Silverlight. No service packs have been released for version 2.</p>
<p>Microsoft Expression Web 3 was released in 2009. Until version 2, Expression Web was the only application in the Expression Studio suite based on Microsoft Office code and dependencies. With version 3, Expression Web was rewritten in Windows Presentation Foundation, in line with the rest of the Expression Suite, without Microsoft Office dependencies. A result of this was features like customizable toolbars and menus, standard Windows color scheme, spell check, DLL addins, file menu export feature, drag-and-drop between remote sites, comparing sites by timestamp, automatic language tagging, basic macro support were removed in this version. Other features like Undo do not work reliably.Version 3 introduced Expression Web 3 SuperPreview tool for comparing and rendering webpage in various browsers. Also noted was the lack of support for root relative links, links that start with a &#8220;/&#8221; to refer to the root of a web server. This feature was added with Expression 3 Service Pack 1. Service Pack 2 for Expression Web 3 was released in April 2010.</p>
<p>Microsoft Expression Web 4 was released on June 7, 2010. It added the option of HTML add-ins, and access to a web-based SuperPreview functionality, for testing pages on browsers that cannot be installed on the user&#8217;s system (such as Mac OS X or Linux browsers). Microsoft Expression Web 4 also provides an SEO Checker which analyzes produced web site against the best practices for getting the highest possible search-engine rankings. Version 4 does not bring back all the features removed in Version 3. Expression Web 4 Service Pack 1 was released in March 2011 and added support for IntelliSense for the HTML5 and CSS3 draft specifications in the Code editor, HTML5 and CSS3 support in the CSS Properties palette, selected CSS3 properties in the Style dialogs, semantic HTML5 tags in Design View and new PHP5.3 functions. Expression Web 4 SP2 was released in July 2011, and fixed a number of issues and introduced new features such as jQuery IntelliSense support, a panel for managing snippets, Interactive Snapshot Panel, comment/uncomment functionality in Code View, and workspace and toolbar customization.</p>
<h3>Reception</h3>
<p>Microsoft Expression Web received positive reviews. PC Pro awarded Expression Web 2 five stars out of six. &#8220;It largely succeeded by concentrating on providing standards-compliant support for the web&#8217;s core markup languages, (X)HTML and CSS,&#8221; Tom Arah concluded.</p>
<p>PC Magazine also rated Expression Web 2 with 4 stars out of 5 and labeled it as a more cost-effective option compared to the main competitor, Adobe Dreamweaver. &#8220;Even if money is no object, Expression Web 2 might be your better choice,&#8221; Editor Edward Mendelson wrote. However, PC Magazine criticized a lack of “<em>Secure FTP in its Web-publishing functions</em>” and “<em>the ability to create browser-based (as opposed to server-based) scripting of dynamic pages that works in all browsers, including Safari</em>”. On the other hand, PC Magazine noted that “<em>most designers won&#8217;t care about their absence</em>”. However, Microsoft Expression 3 later added support for SSH File Transfer Protocol (SFTP) (otherwise known as <em>Secure FTP</em>) as well as FTP over SSL (FTPS).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypernetstudio.com/2012/04/20/microsoft-expression-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Dreamweaver</title>
		<link>http://www.hypernetstudio.com/2012/04/20/adobe-dreamweaver/</link>
		<comments>http://www.hypernetstudio.com/2012/04/20/adobe-dreamweaver/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 20:21:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Editors]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[CS3]]></category>
		<category><![CDATA[CS4]]></category>
		<category><![CDATA[CS5]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Dreamweaver]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://www.hypernetstudio.com/?p=141</guid>
		<description><![CDATA[Adobe Dreamweaver (formerly Macromedia Dreamweaver) is a proprietary web development application originally created by Macromedia. It is now developed by Adobe Systems, which acquired Macromedia in 2005. Dreamweaver is available for both Mac and Windows operating systems. Recent versions have incorporated support for web technologies such as CSS, JavaScript, and various server-side scripting languages and]]></description>
			<content:encoded><![CDATA[<p><strong>Adobe Dreamweaver</strong> (formerly <strong>Macromedia Dreamweaver</strong>) is a proprietary web development application originally created by Macromedia. It is now developed by Adobe Systems, which acquired Macromedia in 2005.</p>
<p>Dreamweaver is available for both Mac and Windows operating systems. Recent versions have incorporated support for web technologies such as CSS, JavaScript, and various server-side scripting languages and frameworks including ASP (ASP JavaScript, ASP VBScript, ASP.NET C#, ASP.NET VB), ColdFusion, Scriptlet, and PHP.</p>
<h3>Internationalization and localization</h3>
<h3>Language availability</h3>
<p>Adobe Dreamweaver CS5 is available in the following languages: Brazilian Portuguese, Chinese Simplified, Chinese Traditional, Czech, Dutch, English, French, German, Italian, Japanese, Korean(win only), Polish, Russian, Spanish, Swedish, and Turkish.</p>
<h3>Specific features for Arabic and Hebrew languages</h3>
<p>The older Adobe Dreamweaver CS3 also features a Middle Eastern version that allows typing Arabic, Persian or Hebrew text (written from right to left) within the code view. Whether the text is fully Middle Eastern (written from right to left) or includes both English and Middle Eastern text (written left to right and right to left), it will be displayed properly.</p>
<h3>Version history</h3>
<table>
<tbody>
<tr>
<th>Provider</th>
<th>Major version</th>
<th>Minor update/alternative name</th>
<th>Release date</th>
<th>Notes</th>
</tr>
<tr>
<th rowspan="10">Macromedia</th>
<th rowspan="2">1.0</th>
<td>1.0</td>
<td>December 1997</td>
<td>First version. Mac OS only.</td>
</tr>
<tr>
<td>1.2</td>
<td>March 1998</td>
<td>First Windows version.</td>
</tr>
<tr>
<th>2.0</th>
<td>2.0</td>
<td>December 1998</td>
<td></td>
</tr>
<tr>
<th rowspan="2">3.0</th>
<td>3.0</td>
<td>December 1999</td>
<td></td>
</tr>
<tr>
<td>UltraDev 1.0</td>
<td>June 1999</td>
<td></td>
</tr>
<tr>
<th rowspan="2">4.0</th>
<td>4.0</td>
<td>December 2000</td>
<td></td>
</tr>
<tr>
<td>UltraDev 4.0</td>
<td>December 2000</td>
<td></td>
</tr>
<tr>
<th>6.0</th>
<td>MX</td>
<td>29 May 2002</td>
<td></td>
</tr>
<tr>
<th>7.0</th>
<td>MX 2004</td>
<td>10 September 2003</td>
<td></td>
</tr>
<tr>
<th>8.0</th>
<td>8.0</td>
<td>13 September 2005</td>
<td>Last Macromedia version.</td>
</tr>
<tr>
<th rowspan="4">Adobe</th>
<th>9.0</th>
<td>CS3</td>
<td>16 April 2007</td>
<td>Replaces Adobe GoLive in Creative Suite.</td>
</tr>
<tr>
<th>10.0</th>
<td>CS4</td>
<td>23 September 2008</td>
<td></td>
</tr>
<tr>
<th>11.0</th>
<td>CS5</td>
<td>12 April 2010</td>
<td></td>
</tr>
<tr>
<th>11.5</th>
<td>CS5.5</td>
<td>12 April 2011</td>
<td>Supports HTML5</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.hypernetstudio.com/2012/04/20/adobe-dreamweaver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL</title>
		<link>http://www.hypernetstudio.com/2012/04/17/sql/</link>
		<comments>http://www.hypernetstudio.com/2012/04/17/sql/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 09:47:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[managing]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Query]]></category>
		<category><![CDATA[RDBMS]]></category>
		<category><![CDATA[relational]]></category>
		<category><![CDATA[Structured]]></category>

		<guid isPermaLink="false">http://www.hypernetstudio.com/?p=135</guid>
		<description><![CDATA[SQL (Structured Query Language) is a programming language designed for managing data in relational database management systems (RDBMS). Originally based upon relational algebra and tuple relational calculus, its scope includes data insert, query, update and delete, schema creation and modification, and data access control. SQL was one of the first commercial languages for Edgar F.]]></description>
			<content:encoded><![CDATA[<p><strong>SQL</strong> (<strong>Structured Query Language</strong>) is a programming language designed for managing data in relational database management systems (RDBMS).</p>
<p>Originally based upon relational algebra and tuple relational calculus, its scope includes data insert, query, update and delete, schema creation and modification, and data access control.</p>
<p>SQL was one of the first commercial languages for Edgar F. Codd&#8217;s relational model, as described in his influential 1970 paper, &#8220;A Relational Model of Data for Large Shared Data Banks&#8221;. Despite not adhering to the relational model as described by Codd, it became the most widely used database language. Although SQL is often described as, and to a great extent is, a declarative language, it also includes procedural elements. SQL became a standard of the American National Standards Institute (ANSI) in 1986, and of the International Organization for Standards (ISO) in 1987. Since then, the standard has been enhanced several times with added features. However, issues of SQL code portability between major RDBMS products still exist due to lack of full compliance with, or different interpretations of, the standard. Among the reasons mentioned are the large size and incomplete specification of the standard, as well as vendor lock-in.</p>
<h3>History</h3>
<p>SQL was initially developed at IBM by Donald D. Chamberlin and Raymond F. Boyce in the early 1970s. This version, initially called <strong>SEQUEL</strong> (<em>Structured English Query Language</em>), was designed to manipulate and retrieve data stored in IBM&#8217;s original quasi-relational database management system, System R, which a group at IBM San Jose Research Laboratory had developed during the 1970s. The acronym SEQUEL was later changed to SQL because &#8220;SEQUEL&#8221; was a trademark of the UK-based Hawker Siddeley aircraft company.</p>
<p>The first <em>Relational Database Management System</em> (RDBMS) was RDMS, developed at MIT in the early 1970s, soon followed by Ingres, developed in 1974 at U.C. Berkeley. Ingres implemented a query language known as QUEL, which was later supplanted in the marketplace by SQL.</p>
<p>In the late 1970s, Relational Software, Inc. (now Oracle Corporation) saw the potential of the concepts described by Codd, Chamberlin, and Boyce and developed their own SQL-based RDBMS with aspirations of selling it to the U.S. Navy, Central Intelligence Agency, and other U.S. government agencies. In June 1979, Relational Software, Inc. introduced the first commercially available implementation of SQL, Oracle V2 (Version2) for VAX computers. <em>Oracle V2</em> beat IBM&#8217;s August release of the System/38 RDBMS to market by a few weeks<sup>.<em><br />
</em></sup></p>
<p>After testing SQL at customer test sites to determine the usefulness and practicality of the system, IBM began developing commercial products based on their System R prototype including System/38, SQL/DS, and DB2, which were commercially available in 1979, 1981, and 1983, respectively.</p>
<p>The SQL language is subdivided into several language elements, including:</p>
<ul>
<li><strong>Clauses</strong>, which are constituent components of statements and queries. (In some cases, these are optional.)</li>
<li><strong>Expressions</strong>, which can produce either scalar values or tables consisting of columns and rows of data.</li>
<li><strong>Predicates</strong>, which specify conditions that can be evaluated to SQL three-valued logic (3VL) or Boolean (true/false/unknown) truth values and which are used to limit the effects of statements and queries, or to change program flow.</li>
<li><strong>Queries</strong>, which retrieve the data based on specific criteria. This is the most important element of <strong>SQL</strong>.</li>
<li><strong>Statements</strong>, which may have a persistent effect on schemata and data, or which may control transactions, program flow, connections, sessions, or diagnostics.
<ul>
<li>SQL statements also include the semicolon (&#8220;;&#8221;) statement terminator. Though not required on every platform, it is defined as a standard part of the SQL grammar.</li>
</ul>
</li>
<li><strong>Insignificant whitespace</strong> is generally ignored in SQL statements and queries, making it easier to format SQL code for readability.</li>
</ul>
<h3>Queries</h3>
<p>The most common operation in SQL is the query, which is performed with the declarative <code>SELECT</code> statement. <code>SELECT</code> retrieves data from one or more tables, or expressions. Standard <code>SELECT</code> statements have no persistent effects on the database. Some non-standard implementations of <code>SELECT</code> can have persistent effects, such as the <code>SELECT INTO</code> syntax that exists in some databases.</p>
<p>Queries allow the user to describe desired data, leaving the database management system (DBMS) responsible for planning, optimizing, and performing the physical operations necessary to produce that result as it chooses.</p>
<p>A query includes a list of columns to be included in the final result immediately following the <code>SELECT</code> keyword. An asterisk (&#8220;<code>*</code>&#8220;) can also be used to specify that the query should return all columns of the queried tables. <code>SELECT</code> is the most complex statement in SQL, with optional keywords and clauses that include:</p>
<ul>
<li>The <code>FROM</code> clause which indicates the table(s) from which data is to be retrieved. The <code>FROM</code> clause can include optional <code>JOIN</code> subclauses to specify the rules for joining tables.</li>
<li>The <code>WHERE</code> clause includes a comparison predicate, which restricts the rows returned by the query. The <code>WHERE</code> clause eliminates all rows from the result set for which the comparison predicate does not evaluate to True.</li>
<li>The <code>GROUP BY</code> clause is used to project rows having common values into a smaller set of rows. <code>GROUP BY</code> is often used in conjunction with SQL aggregation functions or to eliminate duplicate rows from a result set. The <code>WHERE</code> clause is applied before the <code>GROUP BY</code> clause.</li>
<li>The <code>HAVING</code> clause includes a predicate used to filter rows resulting from the <code>GROUP BY</code> clause. Because it acts on the results of the <code>GROUP BY</code> clause, aggregation functions can be used in the <code>HAVING</code> clause predicate.</li>
<li>The <code>ORDER BY</code> clause identifies which columns are used to sort the resulting data, and in which direction they should be sorted (options are ascending or descending). Without an <code>ORDER BY</code> clause, the order of rows returned by an SQL query is undefined.</li>
</ul>
<p>The following is an example of a <code>SELECT</code> query that returns a list of expensive books. The query retrieves all rows from the <em>Book</em> table in which the <em>price</em> column contains a value greater than 100.00. The result is sorted in ascending order by <em>title</em>. The asterisk (*) in the <em>select list</em> indicates that all columns of the <em>Book</em> table should be included in the result set.</p>
<div dir="ltr">
<div>
<pre>SELECT *
    FROM Book
    WHERE price &gt; 100.00
    ORDER BY title;</pre>
</div>
</div>
<p>The example below demonstrates a query of multiple tables, grouping, and aggregation, by returning a list of books and the number of authors associated with each book.</p>
<div dir="ltr">
<div>
<pre>SELECT Book.title,
        COUNT(*) AS Authors
    FROM  Book JOIN Book_author
       ON Book.isbn = Book_author.isbn
    GROUP BY Book.title;</pre>
</div>
</div>
<p>Example output might resemble the following:</p>
<pre>Title                   Authors
----------------------  -------
SQL Examples and Guide     4
The Joy of SQL             1
An Introduction to SQL     2
Pitfalls of SQL            1</pre>
<p>Under the precondition that <em>isbn</em> is the only common column name of the two tables and that a column named <em>title</em> only exists in the <em>Books</em> table, the above query could be rewritten in the following form:</p>
<div dir="ltr">
<div>
<pre>SELECT title,
        COUNT(*) AS Authors
    FROM  Book NATURAL JOIN Book_author
    GROUP BY title;</pre>
</div>
</div>
<p>However, many vendors either do not support this approach, or require certain column naming conventions in order for natural joins to work effectively.</p>
<p>SQL includes operators and functions for calculating values on stored values. SQL allows the use of expressions in the <em>select list</em> to project data, as in the following example which returns a list of books that cost more than 100.00 with an additional <em>sales_tax</em> column containing a sales tax figure calculated at 6% of the <em>price</em>.</p>
<div dir="ltr">
<div>
<pre>SELECT isbn,
        title,
        price,
        price * 0.06 AS sales_tax
    FROM Book
    WHERE price &gt; 100.00
    ORDER BY title;</pre>
</div>
</div>
<h3>Null and three-valued logic (3VL)</h3>
<p>The idea of Null was introduced into SQL to handle missing information in the relational model. The introduction of Null (or Unknown) along with True and False is the foundation of three-valued logic. Null does not have a value (and is not a member of any data domain) but is rather a placeholder or &#8220;mark&#8221; for missing information. Therefore comparisons with Null can never result in either True or False but always in the third logical result.</p>
<p>SQL uses Null to handle missing information. It supports three-valued logic (3VL) and the rules governing SQL three-valued logic are shown below (p and q represent logical states). The word NULL is also a reserved keyword in SQL, used to identify the Null special marker.</p>
<p>Additionally, since SQL operators return Unknown when comparing anything with Null, SQL provides two Null-specific comparison predicates: <code>IS NULL</code> and <code>IS NOT NULL</code> test whether data is or is not Null.</p>
<p>Note that SQL returns only results for which the WHERE clause returns a value of True; i.e. it excludes results with values of False and also excludes those whose value is Unknown.</p>
<table border="0">
<tbody>
<tr>
<td valign="top">
<table>
<tbody>
<tr>
<th rowspan="2" colspan="2">p AND q</th>
<th colspan="3">p</th>
</tr>
<tr>
<th>True</th>
<th>False</th>
<th>Unknown</th>
</tr>
<tr>
<th rowspan="3">q</th>
<th>True</th>
<td>True</td>
<td>False</td>
<td>Unknown</td>
</tr>
<tr>
<th>False</th>
<td>False</td>
<td>False</td>
<td>False</td>
</tr>
<tr>
<th>Unknown</th>
<td>Unknown</td>
<td>False</td>
<td>Unknown</td>
</tr>
</tbody>
</table>
</td>
<td valign="top">
<table>
<tbody>
<tr>
<th rowspan="2" colspan="2">p OR q</th>
<th colspan="3">p</th>
</tr>
<tr>
<th>True</th>
<th>False</th>
<th>Unknown</th>
</tr>
<tr>
<th rowspan="3">q</th>
<th>True</th>
<td>True</td>
<td>True</td>
<td>True</td>
</tr>
<tr>
<th>False</th>
<td>True</td>
<td>False</td>
<td>Unknown</td>
</tr>
<tr>
<th>Unknown</th>
<td>True</td>
<td>Unknown</td>
<td>Unknown</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
<td valign="top">
<table>
<tbody>
<tr>
<th>p</th>
<th>NOT p</th>
</tr>
<tr>
<td>True</td>
<td>False</td>
</tr>
<tr>
<td>False</td>
<td>True</td>
</tr>
<tr>
<td>Unknown</td>
<td>Unknown</td>
</tr>
</tbody>
</table>
</td>
<td valign="top">
<table>
<tbody>
<tr>
<th rowspan="2" colspan="2">p = q</th>
<th colspan="3">p</th>
</tr>
<tr>
<th>True</th>
<th>False</th>
<th>Unknown</th>
</tr>
<tr>
<th rowspan="3">q</th>
<th>True</th>
<td>True</td>
<td>False</td>
<td>Unknown</td>
</tr>
<tr>
<th>False</th>
<td>False</td>
<td>True</td>
<td>Unknown</td>
</tr>
<tr>
<th>Unknown</th>
<td>Unknown</td>
<td>Unknown</td>
<td>Unknown</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>Universal quantification is not explicitly supported by SQL, and must be worked out as a negated existential quantification.</p>
<p>There is also the &#8220;&lt;row value expression&gt; IS DISTINCT FROM &lt;row value expression&gt;&#8221; infixed comparison operator which returns TRUE unless both operands are equal or both are NULL. Likewise, IS NOT DISTINCT FROM is defined as &#8220;NOT (&lt;row value expression&gt; IS DISTINCT FROM &lt;row value expression&gt;)&#8221;.</p>
<h3>Data manipulation</h3>
<p>The Data Manipulation Language (DML) is the subset of SQL used to add, update and delete data:</p>
<ul>
<li><code>INSERT</code> adds rows (formally tuples) to an existing table, e.g.,:</li>
</ul>
<div dir="ltr">
<div>
<pre>INSERT INTO My_table
        (field1, field2, field3)
    VALUES
        ('test', 'N', NULL);</pre>
</div>
</div>
<ul>
<li><code>UPDATE</code> modifies a set of existing table rows, e.g.,:</li>
</ul>
<div dir="ltr">
<div>
<pre>UPDATE My_table
    SET field1 = 'updated value'
    WHERE field2 = 'N';</pre>
</div>
</div>
<ul>
<li><code>DELETE</code> removes existing rows from a table, e.g.,:</li>
</ul>
<div dir="ltr">
<div>
<pre>DELETE FROM My_table
    WHERE field2 = 'N';</pre>
</div>
</div>
<ul>
<li><code>MERGE</code> is used to combine the data of multiple tables. It combines the <code>INSERT</code> and <code>UPDATE</code> elements. It is defined in the SQL:2003 standard; prior to that, some databases provided similar functionality via different syntax, sometimes called &#8220;upsert&#8221;.</li>
</ul>
<h3>Transaction controls</h3>
<p>Transactions, if available, wrap DML operations:</p>
<ul>
<li><code>START TRANSACTION</code> (or <code>BEGIN WORK</code>, or <code>BEGIN TRANSACTION</code>, depending on SQL dialect) mark the start of a database transaction, which either completes entirely or not at all.</li>
<li><code>SAVE TRANSACTION</code> (or <code>SAVEPOINT</code> ) save the state of the database at the current point in transaction</li>
</ul>
<div dir="ltr">
<div>
<pre>CREATE TABLE tbl_1(id INT);
  INSERT INTO tbl_1(id) VALUES(1);
  INSERT INTO tbl_1(id) VALUES(2);
COMMIT;
  UPDATE tbl_1 SET id=200 WHERE id=1;
SAVEPOINT id_1upd;
  UPDATE tbl_1 SET id=1000 WHERE id=2;
ROLLBACK TO id_1upd;
  SELECT id FROM tbl_1;</pre>
</div>
</div>
<ul>
<li><code>COMMIT</code> causes all data changes in a transaction to be made permanent.</li>
<li><code>ROLLBACK</code> causes all data changes since the last <code>COMMIT</code> or <code>ROLLBACK</code> to be discarded, leaving the state of the data as it was prior to those changes.</li>
</ul>
<p>Once the <code>COMMIT</code> statement completes, the transaction&#8217;s changes cannot be rolled back.</p>
<p><code>COMMIT</code> and <code>ROLLBACK</code> terminate the current transaction and release data locks. In the absence of a <code>START TRANSACTION</code> or similar statement, the semantics of SQL are implementation-dependent. Example: <em>A classic bank transfer of funds transaction.</em></p>
<div dir="ltr">
<div>
<pre>START TRANSACTION;
  UPDATE Account SET amount=amount-200 WHERE account_number=1234;
  UPDATE Account SET amount=amount+200 WHERE account_number=2345;

IF ERRORS=0 COMMIT;
IF ERRORS&lt;&gt;0 ROLLBACK;</pre>
</div>
</div>
<h3>Data definition</h3>
<p>The Data Definition Language (DDL) manages table and index structure. The most basic items of DDL are the <code>CREATE</code>, <code>ALTER</code>, <code>RENAME</code>, <code>DROP</code> and <code>TRUNCATE</code> statements:</p>
<ul>
<li><code>CREATE</code> creates an object (a table, for example) in the database, e.g.,:</li>
</ul>
<div dir="ltr">
<div>
<pre>CREATE TABLE My_table(
    my_field1   INT,
    my_field2   VARCHAR(50),
    my_field3   DATE         NOT NULL,
    PRIMARY KEY (my_field1, my_field2)
);</pre>
</div>
</div>
<ul>
<li><code>ALTER</code> modifies the structure of an existing object in various ways, for example, adding a column to an existing table or a constraint, e.g.,:</li>
</ul>
<div dir="ltr">
<div>
<pre>ALTER TABLE My_table ADD my_field4 NUMBER(3) NOT NULL;</pre>
</div>
</div>
<ul>
<li><code>TRUNCATE</code> deletes all data from a table in a very fast way, deleting the data inside the table and not the table itself. It usually implies a subsequent COMMIT operation, i.e., it cannot be rolled back.(data is not written to the logs for rollback later, unlike DELETE )</li>
</ul>
<div dir="ltr">
<div>
<pre>TRUNCATE TABLE My_table;</pre>
</div>
</div>
<ul>
<li><code>DROP</code> deletes an object in the database, usually irretrievably, i.e., it cannot be rolled back, e.g.,:</li>
</ul>
<div dir="ltr">
<div>
<pre>DROP TABLE My_table;</pre>
</div>
</div>
<h3>Data types</h3>
<p>Each column in an SQL table declares the type(s) that column may contain. ANSI SQL includes the following data types.</p>
<h3>Character strings</h3>
<ul>
<li><code>CHARACTER(<var>n</var>)</code> or <code>CHAR(<var>n</var>)</code> — fixed-width <var>n</var>-character string, padded with spaces as needed</li>
<li><code>CHARACTER VARYING(<var>n</var>)</code> or <code>VARCHAR(<var>n</var>)</code> — variable-width string with a maximum size of <var>n</var> characters</li>
<li><code>NATIONAL CHARACTER(<var>n</var>)</code> or <code>NCHAR(<var>n</var>)</code> — fixed width string supporting an international character set</li>
<li><code>NATIONAL CHARACTER VARYING(<var>n</var>)</code> or <code>NVARCHAR(<var>n</var>)</code> — variable-width <code>NCHAR</code> string</li>
</ul>
<h3>Bit strings</h3>
<ul>
<li><code>BIT(<var>n</var>)</code> — an array of <var>n</var> bits</li>
<li><code>BIT VARYING(<var>n</var>)</code> — an array of up to <var>n</var> bits</li>
</ul>
<h3>Numbers</h3>
<ul>
<li><code>INTEGER</code> and <code>SMALLINT</code></li>
<li><code>FLOAT</code>, <code>REAL</code> and <code>DOUBLE PRECISION</code></li>
<li><code>NUMERIC(<var>precision</var>, <var>scale</var>)</code> or <code>DECIMAL(<var>precision</var>, <var>scale</var>)</code></li>
</ul>
<p>For example, the number 123.45 has a precision of 5 and a scale of 2. The <var>precision</var> is a positive integer that determines the number of significant digits in a particular radix (binary or decimal). The <var>scale</var> is a non-negative integer. A scale of 0 indicates that the number is an integer. For a decimal number with scale S, the exact numeric value is the integer value of the significant digits divided by 10<sup>S</sup>.</p>
<p>SQL provides a function to round numerics or dates, called <code>TRUNC</code> (in Informix, DB2, PostgreSQL, Oracle and MySQL) or <code>ROUND</code> (in Informix, Sybase, Oracle, PostgreSQL and Microsoft SQL Server)</p>
<h3>Date and time</h3>
<ul>
<li><code>DATE</code> — for date values (e.g., <code>2011-05-03</code>)</li>
<li><code>TIME</code> — for time values (e.g., <code>15:51:36</code>). The granularity of the time value is usually a <em>tick</em> (100 nanoseconds).</li>
<li><code>TIME WITH TIME ZONE</code> or <code>TIMETZ</code> — the same as <code>TIME</code>, but including details about the time zone in question.</li>
<li><code>TIMESTAMP</code> — This is a <code>DATE</code> and a <code>TIME</code> put together in one variable (e.g., <code>2011-05-03 15:51:36</code>).</li>
<li><code>TIMESTAMP WITH TIME ZONE</code> or <code>TIMESTAMPTZ</code> — the same as <code>TIMESTAMP</code>, but including details about the time zone in question.</li>
</ul>
<p>SQL provides several functions for generating a date / time variable out of a date / time string (<code>TO_DATE</code>, <code>TO_TIME</code>, <code>TO_TIMESTAMP</code>), as well as for extracting the respective members (seconds, for instance) of such variables. The current system date / time of the database server can be called by using functions like <code>NOW</code>.</p>
<h3>Data control</h3>
<p>The Data Control Language (DCL) authorizes users and groups of users to access and manipulate data. Its two main statements are:</p>
<ul>
<li><code>GRANT</code> authorizes one or more users to perform an operation or a set of operations on an object.</li>
<li><code>REVOKE</code> eliminates a grant, which may be the default grant.</li>
</ul>
<p>Example:</p>
<div dir="ltr">
<div>
<pre>GRANT SELECT, UPDATE
    ON My_table
    TO some_user, another_user;

REVOKE SELECT, UPDATE
    ON My_table
    FROM some_user, another_user;</pre>
</div>
</div>
<h3>Procedural extensions</h3>
<p>SQL is designed for a specific purpose: to query data contained in a relational database. SQL is a set-based, declarative query language, not an imperative language such as C or BASIC. However, there are extensions to Standard SQL which add procedural programming language functionality, such as control-of-flow constructs. These include:</p>
<table>
<tbody>
<tr>
<th>Source</th>
<th>Common<br />
Name</th>
<th>Full Name</th>
</tr>
<tr>
<td>ANSI/ISO Standard</td>
<td>SQL/PSM</td>
<td>SQL/Persistent Stored Modules</td>
</tr>
<tr>
<td>Interbase/<br />
Firebird</td>
<td>PSQL</td>
<td>Procedural SQL</td>
</tr>
<tr>
<td>IBM</td>
<td>SQL PL</td>
<td>SQL Procedural Language (implements SQL/PSM)</td>
</tr>
<tr>
<td>Microsoft/<br />
Sybase</td>
<td>T-SQL</td>
<td>Transact-SQL</td>
</tr>
<tr>
<td>Mimer SQL</td>
<td>SQL/PSM</td>
<td>SQL/Persistent Stored Module (implements SQL/PSM)</td>
</tr>
<tr>
<td>MySQL</td>
<td>SQL/PSM</td>
<td>SQL/Persistent Stored Module (implements SQL/PSM)</td>
</tr>
<tr>
<td>Oracle</td>
<td>PL/SQL</td>
<td>Procedural Language/SQL (based on Ada)</td>
</tr>
<tr>
<td>PostgreSQL</td>
<td>PL/pgSQL</td>
<td>Procedural Language/PostgreSQL Structured Query Language (based on Oracle PL/SQL)</td>
</tr>
<tr>
<td>PostgreSQL</td>
<td>PL/PSM</td>
<td>Procedural Language/Persistent Stored Modules (implements SQL/PSM)</td>
</tr>
</tbody>
</table>
<p>In addition to the standard SQL/PSM extensions and proprietary SQL extensions, procedural and object-oriented programmability is available on many SQL platforms via DBMS integration with other languages. The SQL standard defines SQL/JRT extensions (SQL Routines and Types for the Java Programming Language) to support Java code in SQL databases. SQL Server 2005 uses the SQLCLR (SQL Server Common Language Runtime) to host managed .NET assemblies in the database, while prior versions of SQL Server were restricted to using unmanaged extended stored procedures which were primarily written in C. PostgreSQL allows functions to be written in a wide variety of languages including Perl, Python, Tcl, and C.</p>
<h3>Criticism</h3>
<p>SQL deviates in several ways from its theoretical foundation, the relational model and its tuple calculus.</p>
<p>In that model, a table is a set of tuples, while in SQL, tables and query results are lists of rows: the same row may occur multiple times, and the order of rows can be employed in queries (e.g. in the LIMIT clause).</p>
<p>Furthermore, additional features (such as NULL and views) were introduced without founding them directly on the relational model, which makes them more difficult to interpret.</p>
<p>It has been argued that it would therefore be preferable to replace SQL with a language that strictly returns to the original foundation &#8211; see, e.g., <em>The Third Manifesto</em>.</p>
<p>Other criticisms of SQL include:</p>
<ul>
<li>Implementations are inconsistent with the standard and, usually, incompatible between vendors. In particular date and time syntax, string concatenation, <code>NULL</code>s, and comparison case sensitivity vary from vendor to vendor. A particular exception is PostgreSQL, which strives for compliance.</li>
<li>The language makes it too easy to do a Cartesian join (joining all possible combinations), which results in &#8220;run-away&#8221; result sets when <code>WHERE</code> clauses are mistyped. Cartesian joins are so rarely used in practice that requiring an explicit <code>CARTESIAN</code> keyword may be warranted. (<em>SQL 1992</em> introduced the <code>CROSS JOIN</code> keyword that allows the user to make clear that a Cartesian join is intended, but the shorthand &#8220;comma-join&#8221; with no predicate is still acceptable syntax, which still invites the same mistake.)</li>
<li>It is also possible to misconstruct a <code>WHERE</code> on an update or delete, thereby affecting more rows in a table than desired. (A work-around is to use transactions or habitually type in the WHERE clause first, then fill in the rest later.)</li>
<li>The grammar of SQL is perhaps unnecessarily complex, borrowing a COBOL-like keyword approach, when a function-influenced syntax could result in more re-use of fewer grammar and syntax rules.</li>
<li>The non-compliance of SQL to the relational model, and specifically to the 0th rule of Codd’s twelve rules, is another source of complexity and incompatibility.</li>
</ul>
<h3>Cross-vendor portability</h3>
<p>Popular implementations of SQL commonly omit support for basic features of Standard SQL, such as the <code>DATE</code> or <code>TIME</code> data types. The most obvious such examples, and incidentally the most popular commercial, proprietary SQL DBMSs, are Oracle (whose <code>DATE</code> behaves as <code>DATETIME</code>, and lacks a <code>TIME</code> type) and the MS SQL Server (before the 2008 version). As a result, SQL code can rarely be ported between database systems without modifications.</p>
<p>There are several reasons for this lack of portability between database systems:</p>
<ul>
<li>The complexity and size of the SQL standard means that most implementors do not support the entire standard.</li>
<li>The standard does not specify database behavior in several important areas (e.g., indexes, file storage…), leaving implementations to decide how to behave.</li>
<li>The SQL standard precisely specifies the syntax that a conforming database system must implement. However, the standard&#8217;s specification of the semantics of language constructs is less well-defined, leading to ambiguity.</li>
<li>Many database vendors have large existing customer bases; where the SQL standard conflicts with the prior behavior of the vendor&#8217;s database, the vendor may be unwilling to break backward compatibility.</li>
<li>Software vendors often desire to create incompatibilities with other products, as it provides a strong incentive for their existing users to remain loyal (see vendor lock-in).</li>
</ul>
<h3>Standardization</h3>
<p>SQL was adopted as a standard by the American National Standards Institute (ANSI) in 1986 as SQL-86 and the International Organization for Standardization (ISO) in 1987. Nowadays the standard is subject to continuous improvement by the Joint Technical Committee <em>ISO/IEC JTC 1, Information technology, Subcommittee SC 32, Data management and interchange</em> which affiliate to ISO as well as IEC. He is commonly denoted conforming to the pattern: <em>ISO/IEC 9075-n:yyyy Part n: title</em> or <em>ISO/IEC 9075</em> as a shortcut.</p>
<p><em>ISO/IEC 9075</em> is complemented by <em>ISO/IEC 13249: SQL Multimedia and Application Packages</em> which defines SQL based interfaces and packages to widely spread applications like video, audio and spatial data.</p>
<p>Until 1996, the National Institute of Standards and Technology (NIST) data management standards program certified SQL DBMS compliance with the SQL standard. Vendors now self-certify the compliance of their products.</p>
<p>The original SQL standard declared that the official pronunciation for SQL is &#8220;es queue el&#8221;. Many English-speaking database professionals still use the nonstandard pronunciation /ˈsiːkwəl/ (like the word &#8220;sequel&#8221;), including Donald Chamberlin himself.</p>
<p>The SQL standard has gone through a number of revisions, as shown below:</p>
<table>
<tbody>
<tr>
<th>Year</th>
<th>Name</th>
<th>Alias</th>
<th>Comments</th>
</tr>
<tr valign="top">
<td>1986</td>
<td>SQL-86</td>
<td>SQL-87</td>
<td>First formalized by ANSI.</td>
</tr>
<tr valign="top">
<td>1989</td>
<td>SQL-89</td>
<td>FIPS 127-1</td>
<td>Minor revision, adopted as FIPS 127-1.</td>
</tr>
<tr valign="top">
<td>1992</td>
<td>SQL-92</td>
<td>SQL2, FIPS 127-2</td>
<td>Major revision (ISO 9075), <em>Entry Level</em> SQL-92 adopted as FIPS 127-2.</td>
</tr>
<tr valign="top">
<td>1999</td>
<td>SQL:1999</td>
<td>SQL3</td>
<td>Added regular expression matching, recursive queries, triggers, support for procedural and control-of-flow statements, non-scalar types, and some object-oriented features.</td>
</tr>
<tr valign="top">
<td>2003</td>
<td>SQL:2003</td>
<td>SQL 2003</td>
<td>Introduced XML-related features, <em>window functions</em>, standardized sequences, and columns with auto-generated values (including identity-columns).</td>
</tr>
<tr valign="top">
<td>2006</td>
<td>SQL:2006</td>
<td>SQL 2006</td>
<td>ISO/IEC 9075-14:2006 defines ways in which SQL can be used in conjunction with XML. It defines ways of importing and storing XML data in an SQL database, manipulating it within the database and publishing both XML and conventional SQL-data in XML form. In addition, it enables applications to integrate into their SQL code the use of XQuery, the XML Query Language published by the World Wide Web Consortium (W3C), to concurrently access ordinary SQL-data and XML documents.</td>
</tr>
<tr valign="top">
<td>2008</td>
<td>SQL:2008</td>
<td>SQL 2008</td>
<td>Legalizes ORDER BY outside cursor definitions. Adds INSTEAD OF triggers. Adds the TRUNCATE statement.</td>
</tr>
<tr valign="top">
<td>2011</td>
<td>SQL:2011</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p>Interested parties may purchase SQL standards documents from ISO, IEC or ANSI. A draft of SQL:2008 is freely available as a zip archive.</p>
<h3>Standard structure</h3>
<p>The SQL standard is divided into nine parts.</p>
<ul>
<li>ISO/IEC 9075-1:2011 Part 1: <strong>Framework</strong> (SQL/Framework). It provides logical concepts.</li>
<li>ISO/IEC 9075-2:2011 Part 2: <strong>Foundation</strong> (SQL/Foundation). It contains the most central elements of the language and consists of both <em>mandatory and optional</em> features.</li>
<li>ISO/IEC 9075-3:2008 Part 3: <strong>Call-Level Interface</strong> (SQL/CLI). It defines interfacing components (structures, procedures, variable bindings) that can be used to execute SQL statements from applications written in Ada, C respectively C++, COBOL, Fortran, MUMPS, Pascal or PL/I. (For Java see part 10.) SQL/CLI is defined in such a way that SQL statements and SQL/CLI procedure calls are treated as separate from the calling application&#8217;s source code. Open Database Connectivity is a well-known superset of SQL/CLI. This part of the standard consists solely of <em>mandatory</em> features.</li>
<li>ISO/IEC 9075-4:2011 Part 4: <strong>Persistent Stored Modules</strong> (SQL/PSM) It standardizes procedural extensions for SQL, including flow of control, condition handling, statement condition signals and resignals, cursors and local variables, and assignment of expressions to variables and parameters. In addition, SQL/PSM formalizes declaration and maintenance of persistent database language routines (e.g., &#8220;stored procedures&#8221;). This part of the standard consists solely of <em>optional</em> features.</li>
<li>ISO/IEC 9075-9:2008 Part 9: <strong>Management of External Data</strong> (SQL/MED). It provides extensions to SQL that define foreign-data wrappers and datalink types to allow SQL to manage external data. External data is data that is accessible to, but not managed by, an SQL-based DBMS. This part of the standard consists solely of <em>optional</em> features.</li>
<li>ISO/IEC 9075-10:2008 Part 10: <strong>Object Language Bindings</strong> (SQL/OLB). It defines the syntax and semantics of SQLJ, which is SQL embedded in Java (see also part 3). The standard also describes mechanisms to ensure binary portability of SQLJ applications, and specifies various Java packages and their contained classes. This part of the standard consists solely of <em>optional</em> features. As opposed to SQL/OLB JDBC &#8211; which is <strong>not</strong> part of the SQL standard &#8211; defines an API.</li>
<li>ISO/IEC 9075-11:2011 Part 11: <strong>Information and Definition Schemas</strong> (SQL/Schemata). It defines the Information Schema and Definition Schema, providing a common set of tools to make SQL databases and objects self-describing. These tools include the SQL object identifier, structure and integrity constraints, security and authorization specifications, features and packages of ISO/IEC 9075, support of features provided by SQL-based DBMS implementations, SQL-based DBMS implementation information and sizing items, and the values supported by the DBMS implementations. This part of the standard contains both <em>mandatory and optional</em> features.</li>
<li>ISO/IEC 9075-13:2008 Part 13: <strong>SQL Routines and Types Using the Java Programming Language</strong> (SQL/JRT). It specifies the ability to invoke static Java methods as routines from within SQL applications (&#8216;Java-in-the-database&#8217;). It also calls for the ability to use Java classes as SQL structured user-defined types. This part of the standard consists solely of <em>optional</em> features.</li>
<li>ISO/IEC 9075-14:2011 Part 14: <strong>XML-Related Specifications</strong> (SQL/XML). It specifies SQL-based extensions for using XML in conjunction with SQL. The <em>XMLType</em> data type is introduced, as well as several routines, functions, and XML-to-SQL data type mappings to support manipulation and storage of XML in an SQL database.<sup id="cite_ref-SQLXML2006_28-1">[29]</sup> This part of the standard consists solely of <em>optional</em> features.</li>
</ul>
<p>ISO/IEC 9075 is complemented by ISO/IEC 13249 <em>SQL Multimedia and Application Packages</em>. This closely related but separate standard is developed by the same committee. It defines interfaces and packages which are based on SQL. The aim is an unified access to typical database applications like text, pictures, data mining or spatial data.</p>
<ul>
<li>ISO/IEC 13249-1:2007 Part 1: <strong>Framework</strong></li>
<li>ISO/IEC 13249-2:2003 Part 2: <strong>Full-Text</strong></li>
<li>ISO/IEC 13249-3:2011 Part 3: <strong>Spatial</strong></li>
<li>ISO/IEC 13249-5:2003 Part 5: <strong>Still image</strong></li>
<li>ISO/IEC 13249-6:2006 Part 6: <strong>Data mining</strong></li>
<li>ISO/IEC 13249-8:xxxx Part 8: <strong>Metadata registries (MDR)</strong> (work in progress)</li>
</ul>
<h3>Alternatives</h3>
<p>A distinction should be made between alternatives to relational query languages and alternatives to SQL. Below are proposed relational alternatives to SQL. See navigational database and NoSQL for alternatives to relational:</p>
<ul>
<li>.QL &#8211; object-oriented Datalog</li>
<li>4D Query Language (4D QL)</li>
<li>Datalog</li>
<li>HTSQL &#8211; URL based query method</li>
<li>IBM Business System 12 (IBM BS12) &#8211; one of the first fully relational database management systems, introduced in 1982</li>
<li>ISBL</li>
<li>Java Persistence Query Language (JPQL) &#8211; The query language used by the Java Persistence API and Hibernate persistence library</li>
<li>JoSQL &#8211; Runs SQL statements written as Strings to query collections from inside Java code.</li>
<li>LINQ &#8211; Runs SQL statements written like language constructs to query collections directly from inside .Net code.</li>
<li>Object Query Language</li>
<li>QBE (Query By Example) created by Moshè Zloof, IBM 1977</li>
<li>Quel introduced in 1974 by the U.C. Berkeley Ingres project.</li>
<li>Tutorial D</li>
<li>SBQL &#8211; the Stack Based Query Language (SBQL)</li>
<li>UnQL &#8211; the Unstructured Query Language, a functional superset of SQL, developed by the authors of SQLite and CouchDB</li>
<li>XQuery</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.hypernetstudio.com/2012/04/17/sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>W3C</title>
		<link>http://www.hypernetstudio.com/2012/04/16/w3c/</link>
		<comments>http://www.hypernetstudio.com/2012/04/16/w3c/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 18:09:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[W3C]]></category>
		<category><![CDATA[CERN]]></category>
		<category><![CDATA[Consortium]]></category>
		<category><![CDATA[w3]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[Wide]]></category>
		<category><![CDATA[World]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[wwwc]]></category>

		<guid isPermaLink="false">http://www.hypernetstudio.com/?p=128</guid>
		<description><![CDATA[The World Wide Web Consortium (W3C) is the main international standards organization for the World Wide Web (abbreviated WWW or W3). Founded by Tim Berners-Lee at MIT and currently headed by him,the consortium is made up of member organizations which maintain full-time staff for the purpose of working together in the development of standards for]]></description>
			<content:encoded><![CDATA[<p>The <strong>World Wide Web Consortium</strong> (<strong>W3C</strong>) is the main international standards organization for the World Wide Web (abbreviated WWW or W3).</p>
<p>Founded by Tim Berners-Lee at MIT and currently headed by him,the consortium is made up of member organizations which maintain full-time staff for the purpose of working together in the development of standards for the World Wide Web. As of 29 March 2012, the World Wide Web Consortium (W3C) has 351 members.</p>
<p>W3C also engages in education and outreach, develops software and serves as an open forum for discussion about the Web.</p>
<h3>History</h3>
<p>The World Wide Web Consortium (W3C) was founded by Tim Berners-Lee after he left the European Organization for Nuclear Research (CERN) in October, 1994. It was founded at the Massachusetts Institute of Technology Laboratory for Computer Science (MIT/LCS) with support from the European Commission and the Defense Advanced Research Projects Agency (DARPA), which had pioneered the Internet and its predecessor ARPANET.</p>
<p>W3C was created to ensure compatibility and agreement among industry members in the adoption of new standards. Prior to its creation, incompatible versions of HTML were offered by different vendors, increasing the potential for inconsistency between web pages. The consortium was created to get all those vendors to agree on a set of core principles and components which would be supported by everyone.<sup><em><br />
</em></sup></p>
<p>It was originally intended that CERN host the European branch of W3C; however, CERN wished to focus on particle physics, not information technology. In April 1995 the <em>Institut national de recherche en informatique et en automatique</em> (INRIA) became the European host of W3C, with Keio University becoming the Japanese branch in September 1996. Starting in 1997, W3C created regional offices around the world; as of September 2009, it has eighteen World Offices covering Australia, the Benelux countries (Netherlands, Luxembourg, and Belgium), Brazil, China, Finland, Germany, Austria, Greece, Hong Kong, Hungary, India, Israel, Italy, South Korea, Morocco, South Africa, Spain, Sweden, and the United Kingdom and Ireland.</p>
<p>In January 2003, the European host was transferred from INRIA to the European Research Consortium for Informatics and Mathematics (ERCIM), an organization that represents European national computer science laboratories.</p>
<h3>Recommendations and Certifications</h3>
<p>In accord with the W3C Process Document, a Recommendation progresses through five maturity levels:<sup id="cite_ref-3">[4]</sup></p>
<ol>
<li><em>Working Draft</em></li>
<li><em>Last Call Working Draft</em></li>
<li><em>Call for implementation</em></li>
<li><em>Call for Review of a Proposed Recommendation</em></li>
<li><em>W3C Recommendation (REC)</em>.</li>
</ol>
<p>A Recommendation may be updated by separately published <em>Errata</em> until enough substantial edits accumulate, at which time a new <em>edition</em> of the Recommendation may be produced (e.g., XML is now in its fifth edition). W3C also publishes various kinds of informative <em>Notes</em> which are not intended to be treated as standards.</p>
<p>W3C leaves it up to manufacturers to follow the Recommendations. Many of its standards define levels of conformance, which the developers must follow if they wish to label their product W3C-compliant. Like any standards of other organizations, W3C recommendations are sometimes implemented partially. The Recommendations are under a royalty-free patent license, allowing anyone to implement them.</p>
<p>Unlike the ISOC and other international standards bodies, the W3C does not have a certification program. A certification program is a process which has benefits and drawbacks; the W3C has decided, for now, that it is not suitable to start such a program owing to the risk of creating more drawbacks for the community than benefits.</p>
<h3>Administration</h3>
<p>The Consortium is jointly administered by the MIT Computer Science and Artificial Intelligence Laboratory (CSAIL, located in Stata Center<sup id="cite_ref-4">[5]</sup>) in the USA, the European Research Consortium for Informatics and Mathematics (ERCIM) (in Sophia Antipolis, France), and Keio University (in Japan). The W3C also has World Offices in sixteen regions around the world. The W3C Offices work with their regional Web communities to promote W3C technologies in local languages, broaden W3C&#8217;s geographical base, and encourage international participation in W3C Activities.</p>
<p>W3C has a relatively small staff team, around 50–60 worldwide recently (as of 2010). The CEO of W3C as of Dec. 2010 is Jeffrey Jaffe, former CTO of Novell. The majority of standardization work is done by external experts in W3C&#8217;s various working groups.</p>
<h3>Membership</h3>
<p>The domain <em>w3.org</em> attracted at least 11 million visitors annually by 2008 according to a Compete.com study.</p>
<p>The Consortium is governed by its membership, which in August 2009 comprised 322 organizations. The list of members is available to the public. Members include businesses, nonprofit organizations, universities, governmental entities, and individuals.</p>
<p>Membership requirements are transparent except for one requirement. An application for membership must be reviewed and approved by W3C. Many guidelines and requirements are stated in detail, but there is no final guideline about the process or standards by which membership might be finally approved or denied.</p>
<p>The cost of membership is given on a sliding scale, depending on the character of the organization applying and the country in which it is located. Countries are categorized by the World Bank&#8217;s most recent grouping by GNI (&#8220;Gross National Income&#8221;) per capita.</p>
<h3>Criticism</h3>
<h3>Domination by large organizations</h3>
<p>The W3C has been criticized as being dominated by larger organizations and thus writing standards that represent their interests. For example, a member of the Web Content Accessibility Guidelines Working Group (WCAG WG) complained that:</p>
<blockquote><p>The process is stacked in favour of multinationals with expense accounts who can afford to talk on the phone for two hours a week and jet to world capitals for meetings.</p></blockquote>
<p>A similar criticism, responding to large software company complaints about the slow pace of W3C&#8217;s formulation of XML/web services standards, appeared in Cnet&#8217;s news.com in 2002:</p>
<blockquote><p>&#8220;I&#8217;m not convinced that developers are too bothered,&#8221; said Edd Dumbill, editor of XML.com, who has worked as a software developer on Web services. &#8220;I think developers are being poorly served by the fact that the big companies have dominated the work of the W3C over the last year. The W3C does more or less what its members tell it to. So I don&#8217;t have a huge amount of sympathy for the complaints of large companies.&#8221;</p></blockquote>
<h3>Standards</h3>
<p>W3C/IETF Standards (over Internet protocol suite):</p>
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td align="left" valign="top">
<ul>
<li>CGI</li>
<li>CSS</li>
<li>DOM</li>
<li>GRDDL</li>
<li>HTML</li>
<li>MathML</li>
<li>OWL</li>
<li>P3P</li>
<li>RDF</li>
<li>SISR</li>
<li>SKOS</li>
</ul>
</td>
<td align="left" valign="top">
<ul>
<li>SMIL</li>
<li>SOAP</li>
<li>SPARQL</li>
<li>SRGS</li>
<li>SSML</li>
<li>SVG</li>
<li>VoiceXML</li>
<li>XHTML</li>
<li>XHTML+Voice</li>
<li>XML</li>
<li>XML Events</li>
</ul>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.hypernetstudio.com/2012/04/16/w3c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CMS</title>
		<link>http://www.hypernetstudio.com/2012/04/12/cms/</link>
		<comments>http://www.hypernetstudio.com/2012/04/12/cms/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 18:15:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[system]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.hypernetstudio.com/?p=98</guid>
		<description><![CDATA[A content management system (CMS) allows publishing, editing, and modifying content as well as site maintenance from a central page. It provides a collection of procedures used to manage work flow in a collaborative environment. These procedures can be manual or computer-based. Main features The main features of Content Management Systems depend on the type]]></description>
			<content:encoded><![CDATA[<p>A <strong>content management system</strong> (<strong>CMS</strong>) allows publishing, editing, and modifying content as well as site maintenance from a central page. It provides a collection of procedures used to manage work flow in a collaborative environment. These procedures can be manual or computer-based.</p>
<h3>Main features</h3>
<p>The main features of Content Management Systems depend on the type of the system itself; often, some systems will highlight and/ or offer one or two features only, while other systems are “open-net” systems them more user-friendly and effective – than others.</p>
<p>The following is a list of major CMS features:</p>
<ul>
<li>Allow for a large number of people to share and contribute to stored data;</li>
<li>Control access to data based on user role (i.e., define information users or user groups can view, edit, publish, etc.);</li>
<li>Facilitate storage and retrieval of data;</li>
<li>Control data validity and compliance;</li>
<li>Reduce duplicate inputs;</li>
<li>Simplify report writing;</li>
<li>Improve communication among users.</li>
<li>Define data as almost anything: documents, movies, texts, pictures, phone numbers, articles etc&#8230;&#8230;&#8230;&#8230;&#8230;</li>
</ul>
<h3>Data types and usage</h3>
<p>In a CMS, data can be defined as nearly anything: documents, movies, text, pictures, phone numbers, scientific data, and so forth. CMSs are frequently used for storing, controlling, revising, semantically enriching, and publishing documentation. Serving as a central repository, the CMS increases the version level of new updates to an already existing file. Version control is one of the primary advantages of a CMS.</p>
<h3>Enterprise content management systems</h3>
<div>Main article: Enterprise content management</div>
<p>An enterprise content management system (ECM) organizes documents, contacts, and records that are related to the organizational processes of an enterprise—i.e., commercial organizations. It serves to manage the enterprise&#8217;s unstructured information content, rendering the multiplicity of file format and location more manageable. It achieves this goal by streamlining access, eliminating bottlenecks, optimizing security, and maintaining integrity.</p>
<h3>Component content management system</h3>
<div>Main article: Component content management system</div>
<p>In a component content management system (CCMS), content is stored and managed at the sub-document or sub-component level for greater content reuse. CCMS has five main functions:</p>
<ol>
<li>Maintaining Security</li>
<li>Managing Objects</li>
<li>Managing Servers</li>
<li>Managing Auditing</li>
<li>Maintaining Reports</li>
</ol>
<h3>Web Content Management System</h3>
<div>Main article: Web Content Management System</div>
<p>Web content management (WCM) is a bundled or stand-alone application used to create, manage, store, and deploy content on Web pages. Web content includes text, graphics and photos, video, audio, and code (e.g., for applications) that renders other content or interacts with the user. WCM may also catalog or index content, select or assemble content at runtime, or deliver content to specific visitors in a personalized way, such as in different languages.</p>
<h3>List of most popular content management systems, that are based on PHP platform</h3>
<table>
<thead>
<tr>
<th title="Sort ascending" width="217">Name</th>
<th title="Sort ascending" width="374">Supported databases</th>
<th title="Sort ascending" width="149">Licenses</th>
</tr>
</thead>
<tbody>
<tr>
<td>AdaptCMS Lite</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>ATutor</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>b2evolution</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>BEdita</td>
<td>MySQL</td>
<td>AGPL</td>
</tr>
<tr>
<td>BLOG:CMS</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>CivicSpace</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>CMS Made Simple</td>
<td>MySQL, PostgreSQL</td>
<td>GPL</td>
</tr>
<tr>
<td>Concrete5</td>
<td>MySQL</td>
<td>MIT</td>
</tr>
<tr>
<td>ContentLion</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>Cotonti</td>
<td>MySQL</td>
<td>BSD</td>
</tr>
<tr>
<td>Dotclear</td>
<td>MySQL, PostgreSQL, SQLite</td>
<td>GPL</td>
</tr>
<tr>
<td height="31">Drupal</td>
<td>MySQL, Oracle, PostgreSQL, SQLite, Microsoft SQL Server[11]</td>
<td>GPL</td>
</tr>
<tr>
<td>DynPG</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>e107</td>
<td>MySQL</td>
<td>GPL v2</td>
</tr>
<tr>
<td>Exponent CMS</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>eZ Publish</td>
<td>MySQL, PostgreSQL, Oracle, Microsoft SQL Server</td>
<td>GPL</td>
</tr>
<tr>
<td>Frog CMS</td>
<td>MySQL, SQLite</td>
<td>GPL</td>
</tr>
<tr>
<td>Geeklog</td>
<td>MySQL, PostgreSQL, Microsoft SQL Server</td>
<td>GPL</td>
</tr>
<tr>
<td>Habari</td>
<td>MySQL, PostgreSQL,[16] SQLite</td>
<td>Apache License</td>
</tr>
<tr>
<td>ImpressCMS</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>JCore</td>
<td>MySQL</td>
<td>GPL 2+</td>
</tr>
<tr>
<td>Joomla!</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>Jumbo</td>
<td>SQLite</td>
<td>GPL v3</td>
</tr>
<tr>
<td>Kajona</td>
<td>MySQL, PostgreSQL, SQLite</td>
<td>LGPL</td>
</tr>
<tr>
<td>KnowledgeTree Community Edition</td>
<td>MySQL</td>
<td>GPL &amp; proprietary</td>
</tr>
<tr>
<td>Lyceum</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>Mambo</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>Mediawiki</td>
<td>MySQL, PostgreSQL, SQLite</td>
<td>GPL</td>
</tr>
<tr>
<td>MiaCMS</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>Midgard CMS</td>
<td>MySQL</td>
<td>LGPL</td>
</tr>
<tr>
<td>MODx</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>Nucleus CMS</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>Ocportal</td>
<td>MySQL</td>
<td>CPAL</td>
</tr>
<tr>
<td>Opus</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>papaya CMS</td>
<td>MySQL, PostgreSQL, SQLite</td>
<td>GNU/GPL 2</td>
</tr>
<tr>
<td>Phire CMS</td>
<td>MySQL</td>
<td>New BSD License</td>
</tr>
<tr>
<td>PHP-Fusion</td>
<td>MySQL</td>
<td>AGPLv3</td>
</tr>
<tr>
<td>PHP-Nuke</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>PHPSlash</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>Phpweblog</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>phpWebSite</td>
<td>MySQL, PostgreSQL</td>
<td>LGPL</td>
</tr>
<tr>
<td>pimcore</td>
<td>MySQL</td>
<td>BSD</td>
</tr>
<tr>
<td>PivotX</td>
<td>MySQL, Flat-file database</td>
<td>GPL</td>
</tr>
<tr>
<td>Pixie (CMS)</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>Prestashop</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>ProcessWire</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>RavenNuke CMS</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>RenovatioCMS</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>SMW+</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>Serendipity</td>
<td>MySQL, PostgreSQL, MySQLi, SQLite</td>
<td>BSD</td>
</tr>
<tr>
<td>SilverStripe</td>
<td>MySQL, Microsoft SQL Server, PostgreSQL, SQLite, Oracle</td>
<td>BSD</td>
</tr>
<tr>
<td>SPIP[27]</td>
<td>MySQL, PostgreSQL, SQLite</td>
<td>GPL</td>
</tr>
<tr>
<td>Squiz CMS[29] (Squiz)</td>
<td>PostgreSQL</td>
<td>GPL</td>
</tr>
<tr>
<td>Squiz Matrix[30] (Squiz)</td>
<td>PostgreSQL, Oracle</td>
<td>GPL</td>
</tr>
<tr>
<td>TangoCMS</td>
<td>MySQL</td>
<td>GNU/GPL 2</td>
</tr>
<tr>
<td>Textpattern</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>Tiki Wiki CMS Groupware</td>
<td>MySQL</td>
<td>LGPL</td>
</tr>
<tr>
<td>Tribiq CMS</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>TYPO3</td>
<td>MySQL, Oracle, PostgreSQL</td>
<td>GPL</td>
</tr>
<tr>
<td>WolfCMS</td>
<td>MySQL, SQLite, PostgreSQL</td>
<td>GPL v3</td>
</tr>
<tr>
<td>WordPress</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>Xpress Engine</td>
<td>MySQL, Cubrid, PostgreSQL, SQLite, Firebird, MSSQL</td>
<td>LGPL v2</td>
</tr>
<tr>
<td>Xaraya</td>
<td>MySQL, PostgreSQL</td>
<td>GPL</td>
</tr>
<tr>
<td>XOOPS</td>
<td>MySQL</td>
<td>GPL</td>
</tr>
<tr>
<td>Zikula</td>
<td>MySQL, PostgreSQL, MSSQL, Oracle</td>
<td>GPL</td>
</tr>
</tbody>
</table>
<h3> List of content management frameworks</h3>
<p>A <strong>content management framework</strong> (<strong>CMF</strong>) is a system that facilitates the use of reusable components or customized software for managing web content. It shares aspects of a web application framework and a content management system (CMS).</p>
<p>Below is a list of notable systems that claim to be CMFs:</p>
<table>
<thead>
<tr>
<th title="Sort descending">Name</th>
<th title="Sort ascending">Technologies</th>
</tr>
</thead>
<tbody>
<tr>
<td>Alfresco</td>
<td>Java</td>
</tr>
<tr>
<td>Apache Jackrabbit</td>
<td>Java</td>
</tr>
<tr>
<td>Apache Lenya</td>
<td>Java, Apache Cocoon</td>
</tr>
<tr>
<td>Apache Sling</td>
<td>Java, JSP, ECMAScript</td>
</tr>
<tr>
<td>AxKit</td>
<td>Perl</td>
</tr>
<tr>
<td>Catalyst</td>
<td>Perl</td>
</tr>
<tr>
<td>CherryPy</td>
<td>Python</td>
</tr>
<tr>
<td>Cotonti</td>
<td>PHP 5 and MySQL</td>
</tr>
<tr>
<td>Cuyahoga</td>
<td>ASP.NET and MySQL, PostgreSQL, SQL Server (based on NHibernate)</td>
</tr>
<tr>
<td>Django-CMS</td>
<td>Python, Django and MySQL/PostgreSQL</td>
</tr>
<tr>
<td>Drupal</td>
<td>PHP and MySQL/MariaDB/PostgreSQL/SQLite</td>
</tr>
<tr>
<td>Exponent CMS</td>
<td>An MVC framework using PHP and MySQL</td>
</tr>
<tr>
<td>eZ Publish</td>
<td>PHP 4, PHP 5, MySQL, PostgreSQL, Oracle, SQL Server</td>
</tr>
<tr>
<td>Jakarta Slide (Retired. Look at Jackrabbit as an alternative.)</td>
<td>Java</td>
</tr>
<tr>
<td>Joomla!</td>
<td>PHP and MySQL</td>
</tr>
<tr>
<td>Magnolia CMS</td>
<td>Java</td>
</tr>
<tr>
<td>Mambo</td>
<td>PHP and MySQL</td>
</tr>
<tr>
<td>Maypole</td>
<td>Perl</td>
</tr>
<tr>
<td>Microsoft SharePoint Foundation</td>
<td>.NET Framework, works with SQL Server or Windows Internal Database</td>
</tr>
<tr>
<td>Microsoft SharePoint Server</td>
<td>.NET Framework, works with SQL Server or Windows Internal Database</td>
</tr>
<tr>
<td>Midgard</td>
<td>GLib, D-Bus, PHP, Python and MySQL</td>
</tr>
<tr>
<td>MODx CMS</td>
<td>PHP 4.1.x-5 and MySQL 3.2x-5</td>
</tr>
<tr>
<td>OpenACS</td>
<td>AOLserver and PostgreSQL or Oracle</td>
</tr>
<tr>
<td>Pier</td>
<td>Smalltalk and Seaside</td>
</tr>
<tr>
<td>Pimcore</td>
<td>PHP and MySQL</td>
</tr>
<tr>
<td>Plone</td>
<td>Python</td>
</tr>
<tr>
<td>ProcessWire</td>
<td>PHP and MySQL</td>
</tr>
<tr>
<td>RIFE</td>
<td>Java</td>
</tr>
<tr>
<td>SilverStripe (Sapphire framework)</td>
<td>PHP 5, works with MySQL, PostgreSQL, SQL Server</td>
</tr>
<tr>
<td>TangoCMS</td>
<td>PHP 5 and MySQL</td>
</tr>
<tr>
<td>TYPO3</td>
<td>PHP and MySQL</td>
</tr>
<tr>
<td>Umbraco</td>
<td>.NET Framework, works with SQL Server, VistaDB, with XSLT or .NET UserControls</td>
</tr>
<tr>
<td>Xaraya</td>
<td>PHP and MySQL</td>
</tr>
<tr>
<td>XOOPS</td>
<td>PHP and MySQL</td>
</tr>
<tr>
<td>Xpress Engine</td>
<td>PHP with MySQL , Cubrid , Firebird , SQLite , PostgreSQL , MSSQL</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypernetstudio.com/2012/04/12/cms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP</title>
		<link>http://www.hypernetstudio.com/2012/04/12/asp/</link>
		<comments>http://www.hypernetstudio.com/2012/04/12/asp/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 16:02:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[Active]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[Pages]]></category>
		<category><![CDATA[script engine]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[server-side]]></category>

		<guid isPermaLink="false">http://www.hypernetstudio.com/?p=90</guid>
		<description><![CDATA[Active Server Pages (ASP), also known as Classic ASP or ASP Classic, was Microsoft&#8217;s first server-side script engine for dynamically generated web pages. Initially released as an add-on to Internet Information Services (IIS) via the Windows NT 4.0 Option Pack (ca. 1998), it was subsequently included as a free component of Windows Server (since the]]></description>
			<content:encoded><![CDATA[<p><strong>Active Server Pages</strong> (<strong>ASP</strong>), also known as <em>Classic ASP</em> or <em>ASP Classic</em>, was Microsoft&#8217;s first server-side script engine for dynamically generated web pages. Initially released as an add-on to Internet Information Services (IIS) via the Windows NT 4.0 Option Pack (ca. 1998), it was subsequently included as a free component of Windows Server (since the initial release of Windows 2000 Server). ASP.NET has superseded ASP.</p>
<p>ASP 2.0 provided six built-in objects: Application, ASPError, Request, Response, Server, and Session. <code>Session</code>, for example, represents a session that maintains the state of variables from page to page. The Active Scripting engine&#8217;s support of the Component Object Model (COM) enables ASP websites to access functionality in compiled libraries such as DLLs.</p>
<h3>Summary</h3>
<p>Web pages with the <em>.asp</em> file extension use ASP, although some web sites disguise their choice of scripting language for security purposes (e.g. still using the more common <em>.htm</em> or <em>.html</em> extension). Pages with the <em>.aspx</em> extension use compiled ASP.NET (based on Microsoft&#8217;s .NET Framework), which makes them faster and more robust than server-side scripting in ASP, which is interpreted at run-time; however, ASP.NET pages may still include some ASP scripting. The introduction of ASP.NET led to use of the term <em>Classic ASP</em> for the original technology.</p>
<p>Programmers write most ASP pages using VBScript, but any other Active Scripting engine can be selected instead with the <tt>@Language</tt> directive or the <code>&lt;script language="language" runat="server"&gt;</code> syntax. JScript (Microsoft&#8217;s implementation of ECMAScript) is the other language that is usually available. PerlScript (a derivative of Perl) and others are available as third-party installable Active Scripting engines.</p>
<h3>Alternative implementations</h3>
<p>There are only a few alternative implementations, and most of them are implemented in Java.Unlike the Mono ASP.NET implementation, these versions tend to be quite different to the Microsoft interpreter, so not all scripts written for the Microsoft platform may be supported, much more so because non-trivial ASP web applications often rely on external components (mostly COM-based ones).</p>
<p>Example of these include:</p>
<ul>
<li><strong>Sun ONE Active Server Pages</strong><br />
This implementation was discontinued and is no longer available. Some older versions still exist on the World Wide Web.<sup><em><br />
</em></sup></li>
<li><strong>Arrowhead ASP</strong><br />
This is a Java Servlet which supports the ASP syntax and VBScript. The latest release is 0.2.3, released on June 14, 2004.</li>
<li><strong>Cloudfoundry ASP</strong><br />
This is a fork of the Arrowhead ASP implementation with updated libraries and optimizations for the Cloud Foundry platform. It seems to be quite recent, but the differences with Arrowhead are few.<sup><em><br />
</em></sup></li>
<li><strong>osASP</strong><br />
This is going to become an ASP implementation based upon the Node Javascript environment (and, accordingly, will support JScript only).</li>
</ul>
<h3>Perl-based alternative implementations</h3>
<p>As said above, Perl can be used in ASP environment instead of VBScript and JScript. What&#8217;s more relevant in this context, some alternative implementations exist</p>
<ul>
<li><strong>Apache::ASP</strong><br />
This is a mature Perl package running under the legacy Apache 1.x + mod_perl environment.</li>
<li><strong>Apache2::ASP</strong><br />
Apache2 + mod_perl2 reimplementation of the former; deprecated in favour of ASP4 (see below).</li>
<li><strong>ASP4</strong><br />
The Apache2::ASP author also wrote an ASP derivative called ASP4, which retains the overall structure of ASP but with some minor differences.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.hypernetstudio.com/2012/04/12/asp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP</title>
		<link>http://www.hypernetstudio.com/2012/04/12/php/</link>
		<comments>http://www.hypernetstudio.com/2012/04/12/php/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 15:52:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[server-side]]></category>

		<guid isPermaLink="false">http://www.hypernetstudio.com/?p=85</guid>
		<description><![CDATA[PHP is a general-purpose server-side scripting language originally designed for Web development to produce dynamic Web pages. It is one of the first developed server-side scripting languages to be embedded into an HTML source document, rather than calling an external file to process data. Ultimately, the code is interpreted by a Web server with a]]></description>
			<content:encoded><![CDATA[<p><strong>PHP</strong> is a general-purpose server-side scripting language originally designed for Web development to produce dynamic Web pages. It is one of the first developed server-side scripting languages to be embedded into an HTML source document, rather than calling an external file to process data. Ultimately, the code is interpreted by a Web server with a PHP processor module which generates the resulting Web page. It also has evolved to include a command-line interface capability and can be used in standalone graphical applications. PHP can be deployed on most Web servers and also as a standalone shell on almost every operating system and platform free of charge. A competitor to Microsoft&#8217;s Active Server Pages (ASP) server-side script engine and similar languages, PHP is installed on more than 20 million Web sites and 1 million Web servers.</p>
<p>PHP was originally created by Rasmus Lerdorf in 1995. The main implementation of PHP is now produced by The PHP Group and serves as the formal reference to the PHP language. PHP is free software released under the PHP License, which is incompatible with the GNU General Public License (GPL) due to restrictions on the usage of the term <em>PHP</em>.</p>
<p>While PHP originally stood for &#8220;Personal Home Page&#8221;, it is now said to stand for &#8220;PHP: Hypertext Preprocessor&#8221;, a recursive acronym.</p>
<h3>History</h3>
<p>PHP development began in 1994 when the Danish/Greenlandic/Canadian programmer Rasmus Lerdorf initially created a set of Perl scripts he called &#8220;Personal Home Page Tools&#8221; to maintain his personal homepage. The scripts performed tasks such as displaying his résumé and recording his web-page traffic.<sup id="cite_ref-about_PHP_5-1">[6]</sup><sup id="cite_ref-8">[9]</sup><sup id="cite_ref-9">[10]</sup> Lerdorf initially announced the release of PHP on the comp.infosystems.www.authoring.cgi Usenet discussion group on June 8, 1995.</p>
<p>He rewrote these scripts as C programming language Common Gateway Interface (CGI) binaries, extending them to add the ability to work with Web forms and to communicate with databases and called this implementation &#8220;Personal Home Page/Forms Interpreter&#8221; or PHP/FI. PHP/FI could be used to build simple, dynamic Web applications. Lerdorf released PHP/FI as &#8220;Personal Home Page Tools (PHP Tools) version 1.0&#8243; publicly on June 8, 1995, to accelerate bug location and improve the code. This release already had the basic functionality that PHP has today. This included Perl-like variables, form handling, and the ability to embed HTML. The syntax was similar to Perl but was more limited and simpler, although less consistent. A development team began to form and, after months of work and beta testing, officially released PHP/FI 2 in November 1997.</p>
<p>Zeev Suraski and Andi Gutmans, two Israeli developers at the Technion IIT, rewrote the parser in 1997 and formed the base of PHP 3, changing the language&#8217;s name to the recursive initialism <em>PHP: Hypertext Preprocessor</em>. Afterwards, public testing of PHP 3 began, and the official launch came in June 1998. Suraski and Gutmans then started a new rewrite of PHP&#8217;s core, producing the Zend Engine in 1999. They also founded Zend Technologies in Ramat Gan, Israel.</p>
<p>On May 22, 2000, PHP 4, powered by the Zend Engine 1.0, was released. As of August 2008 this branch is up to version 4.4.9. PHP 4 is no longer under development nor will any security updates be released.</p>
<p>On July 13, 2004, PHP 5 was released, powered by the new Zend Engine II. PHP 5 included new features such as improved support for object-oriented programming, the PHP Data Objects (PDO) extension (which defines a lightweight and consistent interface for accessing databases), and numerous performance enhancements. In 2008 PHP 5 became the only stable version under development. Late static binding had been missing from PHP and was added in version 5.3.</p>
<p>A new major version has been under development alongside PHP 5 for several years. This version was originally planned to be released as PHP 6 as a result of its significant changes, which included plans for full Unicode support. However, Unicode support took developers much longer to implement than originally thought, and the decision was made in March 2010 to move the project to a branch, with features still under development moved to trunk.</p>
<p>Changes in the new code include the removal of <code>register_globals</code>,<sup id="cite_ref-19">[20]</sup> magic quotes, and safe mode. The reason for the removals was that register_globals had opened security holes by intentionally allowing runtime data injection, and the use of magic quotes had an unpredictable nature. Instead, to escape characters, magic quotes may be replaced with the addslashes() function, or more appropriately an escape mechanism specific to the database vendor itself like mysql_real_escape_string() for MySQL. Functions that will be removed in future versions and have been deprecated in PHP 5.3 will produce a warning if used.</p>
<p>Many high-profile open-source projects ceased to support PHP 4 in new code as of February 5, 2008, because of the GoPHP5 initiative, provided by a consortium of PHP developers promoting the transition from PHP 4 to PHP 5.</p>
<p>As of 2011 PHP does not have native support for Unicode or multibyte strings; Unicode support is under development for a future version of PHP and will allow strings as well as class-, method-, and function-names to contain non-ASCII characters.</p>
<p>PHP interpreters are available on both 32-bit and 64-bit operating systems, but on Microsoft Windows the only official distribution is a 32-bit implementation, requiring Windows 32-bit compatibility mode while using Internet Information Services (IIS) on a 64-bit Windows platform. Experimental 64-bit versions of PHP 5.3.0 were briefly available for MS Windows, but have since been removed.</p>
<h3>Licensing</h3>
<p>PHP is free software released under the PHP License, which insists that:</p>
<pre>  4. Products derived from this software may not be called "PHP", nor
     may "PHP" appear in their name, without prior written permission
     from group@php.net.  You may indicate that your software works in
     conjunction with PHP by saying "Foo for PHP" instead of calling
     it "PHP Foo" or "phpfoo"</pre>
<p>This restriction on use of the name <em>PHP</em> makes it incompatible with the GNU General Public License (GPL).</p>
<h3>Release history</h3>
<table>
<tbody>
<tr>
<th></th>
<th>Meaning</th>
</tr>
<tr>
<td>Red</td>
<td>Release no longer supported</td>
</tr>
<tr>
<td>Green</td>
<td>Release supported</td>
</tr>
<tr>
<td>Blue</td>
<td>Future release</td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<th>Major version</th>
<th>Minor version</th>
<th>Release date</th>
<th>Notes</th>
</tr>
<tr>
<th>1</th>
<td>1.0.0</td>
<td>1995-06-08</td>
<td>Officially called &#8220;Personal Home Page Tools (PHP Tools)&#8221;. This is the first use of the name &#8220;PHP&#8221;.</td>
</tr>
<tr>
<th>2</th>
<td>2.0.0</td>
<td>1997-11-01</td>
<td>Considered by its creator as the &#8220;fastest and simplest tool&#8221; for creating dynamic Web pages.</td>
</tr>
<tr>
<th rowspan="2">3</th>
<td>3.0.0</td>
<td>1998-06-06</td>
<td>Development moves from one person to multiple developers. Zeev Suraski and Andi Gutmans rewrite the base for this version.</td>
</tr>
<tr>
<td>3.0.18</td>
<td>2000-10-20</td>
<td>The latest release for PHP 3.0.x. Unsupported Historical Releases</td>
</tr>
<tr>
<th rowspan="6">4</th>
<td>4.0.0</td>
<td>2000-05-22</td>
<td>Added more advanced two-stage parse/execute tag-parsing system called the Zend engine.</td>
</tr>
<tr>
<td>4.1.0</td>
<td>2001-12-10</td>
<td>Introduced &#8216;superglobals&#8217; (<code>$_GET</code>, <code>$_POST</code>, <code>$_SESSION</code>, etc.)</td>
</tr>
<tr>
<td>4.2.0</td>
<td>2002-04-22</td>
<td>Disabled <code>register_globals</code> by default. Data received over the network is not inserted directly into the global namespace anymore, closing possible security holes in applications.</td>
</tr>
<tr>
<td>4.3.0</td>
<td>2002-12-27</td>
<td>Introduced the CLI, in addition to the CGI.</td>
</tr>
<tr>
<td>4.4.0</td>
<td>2005-07-11</td>
<td>Added man pages for <code>phpize</code> and <code>php-config</code> scripts.</td>
</tr>
<tr>
<td>4.4.9</td>
<td>2008-08-07</td>
<td>Security enhancements and bug fixes. The last release of the PHP 4.4 series.</td>
</tr>
<tr>
<th rowspan="16">5</th>
<td>5.0.0</td>
<td>2004-07-13</td>
<td>Zend Engine II with a new object model.</td>
</tr>
<tr>
<td>5.1.0</td>
<td>2005-11-24</td>
<td>Performance improvements with introduction of compiler variables in re-engineered PHP Engine. Added PHP Data Objects (PDO) as a consistent interface for accessing databases.</td>
</tr>
<tr>
<td>5.2.0</td>
<td>2006-11-02</td>
<td>Enabled the filter extension by default. Native JSON support.</td>
</tr>
<tr>
<td>5.2.17</td>
<td>2011-01-06</td>
<td>Fix of critical vulnerability connected to floating point.</td>
</tr>
<tr>
<td>5.3.0</td>
<td>2009-06-30</td>
<td>Namespace support; Late static bindings, Jump label (limited goto), Native closures, Native PHP archives (phar), garbage collection for circular references, improved Windows support, sqlite3, mysqlnd as a replacement for libmysql as underlying library for the extensions that work with MySQL, fileinfo as a replacement for mime_magic for better MIME support, the Internationalization extension, and deprecation of ereg extension.</td>
</tr>
<tr>
<td>5.3.1</td>
<td>2009-11-19</td>
<td>Over 100 bug fixes, some of which were security fixes.</td>
</tr>
<tr>
<td>5.3.2</td>
<td>2010-03-04</td>
<td>Includes a large number of bug fixes.</td>
</tr>
<tr>
<td>5.3.3</td>
<td>2010-07-22</td>
<td>Mainly bug and security fixes; FPM SAPI.</td>
</tr>
<tr>
<td>5.3.4</td>
<td>2010-12-10</td>
<td>Mainly bug and security fixes; improvements to FPM SAPI.</td>
</tr>
<tr>
<td>5.3.5</td>
<td>2011-01-06</td>
<td>Fix of critical vulnerability connected to floating point.</td>
</tr>
<tr>
<td>5.3.6</td>
<td>2011-03-10</td>
<td>Over 60 bug fixes that were reported in the previous version.</td>
</tr>
<tr>
<td>5.3.7</td>
<td>2011-08-18</td>
<td>This release focuses on improving the stability of the PHP 5.3.x branch with over 90 bug fixes, some of which are security related.</td>
</tr>
<tr>
<td>5.3.8</td>
<td>2011-08-23</td>
<td>This release fixes two issues introduced in the PHP 5.3.7 release.</td>
</tr>
<tr>
<td>5.3.9</td>
<td>2012-01-10</td>
<td>This release focuses on improving the stability of the PHP 5.3.x branch with over 90 bug fixes, some of which are security related.</td>
</tr>
<tr>
<td>5.3.10</td>
<td>2012-02-02</td>
<td>Fixed arbitrary remote code execution vulnerability reported by Stefan Esser, CVE-2012-0830.</td>
</tr>
<tr>
<td><strong>5.4.0</strong></td>
<td>2012-03-01</td>
<td>Trait Support, short array syntax support. Removed items: <code>register_globals</code>, <code>safe_mode</code>, <code>allow_call_time_pass_reference</code>, <code>session_register()</code>, <code>session_unregister()</code> and <code>session_is_registered()</code>. Built-in web server.Several improvements to existing features, performance and reduced memory requirements.</td>
</tr>
<tr>
<th>6</th>
<td> ?.?</td>
<td>No date set</td>
<td>The development of PHP 6 has been delayed because the developers have decided the current approach to handling of instance unicode is not a good one, and are considering alternate ways in the next version of PHP. The updates that were intended for PHP 6 were added to PHP 5.3.0 (namespace support, Late Static Bindings, lambda functions, closures, goto) and 5.4.0 (traits, closure rebinding) instead.</td>
</tr>
</tbody>
</table>
<p>Beginning on June 28, 2011, the PHP Group began following a timeline for when new versions of PHP will be released. Under this timeline, at least one release should occur every month. Once per year, a minor release should occur which can include new features. Every minor release should at least have 2 years of security and bug fixes, followed by at least 1 year of only security fixes, for a total of a 3 year release process for every minor release. No new features (unless small and self contained) will be introduced into a minor release during the 3 year release process.</p>
<h3>Security</h3>
<p>Vulnerabilities are caused mostly by not following best practice programming rules: technical security flaws of the language itself or of its core libraries are not frequent (23 in 2008, about 1% of the total). Recognizing that programmers make mistakes, some languages include taint checking to detect automatically the lack of input validation which induces many issues. Such a feature is being developed for PHP, but its inclusion in a release has been rejected several times in the past.</p>
<p>There are advanced protection patches such as Suhosin and Hardening-Patch, especially designed for Web hosting environments.</p>
<p>PHPIDS adds security to any PHP application to defend against intrusions. PHPIDS detects Cross-site scripting (XSS), SQL injection, header injection, Directory traversal, Remote File Execution, Local File Inclusion, and Denial of Service (DoS).</p>
<h3>Syntax</h3>
<div>Main article: PHP syntax and semantics</div>
<div>
<div dir="ltr">
<div>
<pre>&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;meta charset="utf-8"&gt;
    &lt;title&gt;PHP Test&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
  &lt;?php
  echo 'Hello World';
  /* echo("Hello World"); works as well,
  although echo is not a function, but a
  language construct. In some cases, such
  as when multiple parameters are passed
  to echo, parameters cannot be enclosed
  in parentheses. */
  ?&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre>
</div>
</div>
<p><em>Hello world program in PHP code embedded within HTML code</em></p>
</div>
<p>The PHP interpreter only executes PHP code within its delimiters. Anything outside its delimiters is not processed by PHP (although non-PHP text is still subject to control structures described within PHP code). The most common delimiters are <code>&lt;?php</code> to open and <code>?&gt;</code> to close PHP sections. <code>&lt;script language="php"&gt;</code> and <code>&lt;/script&gt;</code> delimiters are also available, as are the shortened forms <code>&lt;?</code> or <code>&lt;?=</code> (which is used to echo back a string or variable) and <code>?&gt;</code> as well as ASP-style short forms <code>&lt;%</code> or <code>&lt;%=</code> and <code>%&gt;</code>. While short delimiters are used, they make script files less portable as support for them can be disabled in the PHP configuration, and so they are discouraged. The purpose of all these delimiters is to separate PHP code from non-PHP code, including HTML.</p>
<p>The first form of delimiters, <code>&lt;?php</code> and <code>?&gt;</code>, in XHTML and other XML documents, creates correctly formed XML &#8216;processing instructions&#8217;. This means that the resulting mixture of PHP code and other markup in the server-side file is itself well-formed XML.</p>
<p>Variables are prefixed with a dollar symbol, and a type does not need to be specified in advance. Unlike function and class names, variable names are case sensitive. Both double-quoted (<code>""</code>) and heredoc strings provide the ability to interpolate a variable&#8217;s value into the string. PHP treats newlines as whitespace in the manner of a free-form language (except when inside string quotes), and statements are terminated by a semicolon. PHP has three types of comment syntax: <code>/* */</code> marks block and inline comments; <code>//</code> as well as <code>#</code> are used for one-line comments. The <tt>echo</tt> statement is one of several facilities PHP provides to output text, <em>e.g.</em>, to a Web browser.</p>
<p>In terms of keywords and language syntax, PHP is similar to most high level languages that follow the C style syntax. <code><em>if</em></code> conditions, <code><em>for</em></code> and <code><em>while</em></code> loops, and function returns are similar in syntax to languages such as C, C++, Java and Perl.</p>
<h3>Data types</h3>
<p>PHP stores whole numbers in a platform-dependent range, either a 64-bit or 32-bit signed integer equivalent to the C-language long type. Unsigned integers are converted to signed values in certain situations; this behavior is different from other programming languages. Integer variables can be assigned using decimal (positive and negative), octal, and hexadecimal notations. Floating point numbers are also stored in a platform-specific range. They can be specified using floating point notation, or two forms of scientific notation. PHP has a native Boolean type that is similar to the native Boolean types in Java and C++. Using the Boolean type conversion rules, non-zero values are interpreted as true and zero as false, as in Perl and C++. The null data type represents a variable that has no value. The only value in the null data type is <em>NULL</em>. Variables of the &#8220;resource&#8221; type represent references to resources from external sources. These are typically created by functions from a particular extension, and can only be processed by functions from the same extension; examples include file, image, and database resources. Arrays can contain elements of any type that PHP can handle, including resources, objects, and even other arrays. Order is preserved in lists of values and in hashes with both keys and values, and the two can be intermingled. PHP also supports strings, which can be used with single quotes, double quotes, nowdoc or heredoc syntax.</p>
<p>The Standard PHP Library (SPL) attempts to solve standard problems and implements efficient data access interfaces and classes.</p>
<h3>Functions</h3>
<p>PHP has hundreds of base functions and thousands more via extensions. These functions are well documented on the PHP site; however, the built-in library has a wide variety of naming conventions and inconsistencies. PHP currently has no functions for thread programming, although it does support multiprocess programming on POSIX systems.</p>
<p>Additional functions can be defined by a developer:</p>
<div dir="ltr">
<div>
<pre>function myFunction() { //declares a function, this is named myFunction
    return 'John Doe'; //returns the value 'John Doe'
}

echo 'My name is ' . myFunction() . '!'; //outputs the text and the return variable of the
                                         //myFunction, the function is also called
//the result of the output will be 'My name is John Doe!'</pre>
</div>
</div>
<h4>PHP 5.2 and earlier</h4>
<p>Functions are not first-class functions and can only be referenced by their name, directly or dynamically by a variable containing the name of the function. User-defined functions can be created at any time without being prototyped.Functions can be defined inside code blocks, permitting a run-time decision as to whether or not a function should be defined. Function calls must use parentheses, with the exception of zero argument class constructor functions called with the PHP <code>new</code> operator, where parentheses are optional. PHP supports quasi-anonymous functions through the <code>create_function()</code> function, although they are not true anonymous functions because anonymous functions are nameless, but functions can only be referenced by name, or indirectly through a variable <code>$function_name();</code>, in PHP.</p>
<h4>PHP 5.3 and newer</h4>
<p>PHP gained support for closures. True anonymous functions are supported using the following syntax:</p>
<div dir="ltr">
<div>
<pre>function getAdder($x) {
    return function($y) use ($x) {
        return $x + $y;
    };
}

$adder = getAdder(8);
echo $adder(2); // prints "10"</pre>
</div>
</div>
<p>Here, the <code>getAdder()</code> function creates a closure using the parameter <code>$x</code> (the keyword <code>use</code> imports a variable from the lexical context), which takes an additional argument <code>$y</code> and returns it to the caller. Such a function is a first class object, meaning that it can be stored in a variable, passed as a parameter to other functions, etc. For more details see Lambda functions and closures RFC.</p>
<p>The goto flow control statement is used as follows:</p>
<div dir="ltr">
<div>
<pre>function lock() {
    $file = fopen('file.txt', 'r+');
    retry:
    if (!flock($file, LOCK_EX &amp; LOCK_NB)) {
        goto retry;
    }
    fwrite($file, 'Success!');
    fclose($file);
    return 0;
}</pre>
</div>
</div>
<p>When <code>flock()</code> is called, PHP opens a file and tries to lock it. The target label <code>retry:</code> defines the point to which execution should return if <code>flock()</code> is unsuccessful and <code>goto retry;</code> is called. The <code>goto</code> statement is restricted and requires that the target label be in the same file and context.</p>
<p>The <code>goto</code> statement has been supported since PHP 5.3.</p>
<h3>Objects</h3>
<p>Basic object-oriented programming functionality was added in PHP 3 and improved in PHP 4. Object handling was completely rewritten for PHP 5, expanding the feature set and enhancing performance. In previous versions of PHP, objects were handled like value types. The drawback of this method was that the whole object was copied when a variable was assigned or passed as a parameter to a method. In the new approach, objects are referenced by handle, and not by value. PHP 5 introduced private and protected member variables and methods, along with abstract classes and final classes as well as abstract methods and final methods. It also introduced a standard way of declaring constructors and destructors, similar to that of other object-oriented languages such as C++, and a standard exception handling model. Furthermore, PHP 5 added interfaces and allowed for multiple interfaces to be implemented. There are special interfaces that allow objects to interact with the runtime system. Objects implementing ArrayAccess can be used with array syntax and objects implementing Iterator or IteratorAggregate can be used with the <code>foreach</code> language construct. There is no virtual table feature in the engine, so static variables are bound with a name instead of a reference at compile time.</p>
<p>If the developer creates a copy of an object using the reserved word <code>clone</code>, the Zend engine will check if a <code>__clone()</code> method has been defined or not. If not, it will call a default <code>__clone()</code> which will copy the object&#8217;s properties. If a <code>__clone()</code> method is defined, then it will be responsible for setting the necessary properties in the created object. For convenience, the engine will supply a function that imports the properties of the source object, so that the programmer can start with a by-value replica of the source object and only override properties that need to be changed.</p>
<p>Basic example of object-oriented programming as described above:</p>
<div dir="ltr">
<div>
<pre>class Person {
   public $firstName;
   public $lastName;

   public function __construct($firstName, $lastName = '') { //Optional parameter
       $this-&gt;firstName = $firstName;
       $this-&gt;lastName = $lastName;
   }

   public function greet() {
       return "Hello, my name is " . $this-&gt;firstName . " " . $this-&gt;lastName . ".";
   }

   public static function staticGreet($firstName, $lastName) {
       return "Hello, my name is " . $firstName . " " . $lastName . ".";
   }
}

$he = new Person('John', 'Smith');
$she = new Person('Sally', 'Davis');
$other = new Person('Joe');

echo $he-&gt;greet(); // prints "Hello, my name is John Smith."
echo '&lt;br /&gt;';
echo $she-&gt;greet(); // prints "Hello, my name is Sally Davis."
echo '&lt;br /&gt;';
echo $other-&gt;greet(); // prints "Hello, my name is Joe ."
echo '&lt;br /&gt;';
echo Person::staticGreet('Jane', 'Doe'); // prints "Hello, my name is Jane Doe."</pre>
</div>
</div>
<h4>Visibility of properties and methods</h4>
<p>The visibility of PHP properties and methods refers to visibility in PHP. It is defined using the keywords <code>public</code>, <code>private</code>, and <code>protected</code>. The default is public, if only var is used; <code>var</code> is a synonym for <code>public</code>. Items declared <code>public</code> can be accessed everywhere. <code>protected</code> limits access to inherited classes (and to the class that defines the item). <code>private</code> limits visibility only to the class that defines the item. Objects of the same type have access to each other&#8217;s private and protected members even though they are not the same instance. PHP&#8217;s member visibility features have sometimes been described as &#8220;highly useful.&#8221; However, they have also sometimes been described as &#8220;at best irrelevant and at worst positively harmful.&#8221;</p>
<h3>Speed optimization</h3>
<div>Main article: PHP accelerator</div>
<p>PHP source code is compiled on-the-fly to an internal format that can be executed by the PHP engine. In order to speed up execution time and not have to compile the PHP source code every time the Web page is accessed, PHP scripts can also be deployed in executable format using a PHP compiler.</p>
<p>Code optimizers aim to enhance the performance of the compiled code by reducing its size, merging redundant instructions and making other changes that can reduce the execution time. With PHP, there are often opportunities for code optimization. An example of a code optimizer is the eAccelerator PHP extension.</p>
<p>Another approach for reducing compilation overhead for PHP servers is using an opcode cache. Opcode caches work by caching the compiled form of a PHP script (opcodes) in shared memory to avoid the overhead of parsing and compiling the code every time the script runs. An opcode cache, APC, is planned to be built into an upcoming release of PHP (but not 5.4  as previously planned ).</p>
<p>Opcode caching and code optimization can be combined for best efficiency, as the modifications do not depend on each other (they happen in distinct stages of the compilation).</p>
<h3>Compilers</h3>
<p>The PHP language was originally implemented as an interpreter. Several compilers have been developed which decouple the PHP language from the interpreter. Advantages of compilation include better execution speed, static analysis, and improved interoperability with code written in other languages. PHP compilers of note include Phalanger, which compiles PHP into CIL byte-code, and HipHop, developed at Facebook and now available as open source, which transforms the PHP Script into C++, then compiles it, reducing server load up to 50%.</p>
<h3>Resources</h3>
<p>PHP includes free and open source libraries with the core build. PHP is a fundamentally Internet-aware system with modules built in for accessing FTP servers, many database servers, embedded SQL libraries such as embedded PostgreSQL, MySQL and SQLite, LDAP servers, and others. Many functions familiar to C programmers such as those in the stdio family are available in the standard PHP build.</p>
<p>PHP allows developers to write extensions in C to add functionality to the PHP language. These can then be compiled into PHP or loaded dynamically at runtime. Extensions have been written to add support for the Windows API, process management on Unix-like operating systems, multibyte strings (Unicode), cURL, and several popular compression formats. Some more unusual features include integration with Internet Relay Chat, dynamic generation of images and Adobe Flash content, and even speech synthesis. The PHP Extension Community Library (PECL) project is a repository for extensions to the PHP language.</p>
<p>Zend provides a certification exam for programmers to become certified PHP developers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypernetstudio.com/2012/04/12/php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JavaScript</title>
		<link>http://www.hypernetstudio.com/2012/04/12/javascript/</link>
		<comments>http://www.hypernetstudio.com/2012/04/12/javascript/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 14:16:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[client-side]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[paradigm]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://www.hypernetstudio.com/?p=79</guid>
		<description><![CDATA[JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles. JavaScript was formalized in the ECMA Script language standard and is primarily used in the form of client-side JavaScript, implemented as part of a Web browser in order]]></description>
			<content:encoded><![CDATA[<p><strong>JavaScript</strong> is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles.</p>
<p>JavaScript was formalized in the ECMA Script language standard and is primarily used in the form of client-side JavaScript, implemented as part of a Web browser in order to provide enhanced user interfaces and dynamic websites. This enables programmatic access to computational objects within a host environment.</p>
<p>JavaScript&#8217;s use in applications outside Web pages — for example in PDF documents, site-specific browsers, and desktop widgets — is also significant. Newer and faster JavaScript VMs and frameworks built upon them (notably Node.js) have also increased the popularity of JavaScript for server-side web applications.</p>
<p>JavaScript uses syntax influenced by that of C. JavaScript copies many names and naming conventions from Java, but the two languages are otherwise unrelated and have very different semantics. The key design principles within JavaScript are taken from the Self and Scheme programming languages.</p>
<h3>History</h3>
<p>JavaScript was originally developed by Brendan Eich of Netscape under the name <em>Mocha</em>, which was later renamed to <em>LiveScript</em>, and finally to JavaScript mainly because it was more influenced by the Java programming language. LiveScript was the official name for the language when it first shipped in beta releases of Netscape Navigator 2.0 in September 1995, but it was renamed JavaScript in a joint announcement with Sun Microsystems on December 4, 1995, when it was deployed in the Netscape browser version 2.0B3.</p>
<p>The change of name from LiveScript to JavaScript roughly coincided with Netscape adding support for Java technology in its Netscape Navigator web browser. The final choice of name caused confusion, giving the impression that the language was a spin-off of the Java programming language, and the choice has been characterized by many as a marketing ploy by Netscape to give JavaScript the cachet of what was then the hot new web programming language. It has also been claimed that the language&#8217;s name is the result of a co-marketing deal between Netscape and Sun, in exchange for Netscape bundling Sun&#8217;s Java runtime with its then-dominant browser.</p>
<p>JavaScript very quickly gained widespread success as a client-side scripting language for web pages. As a consequence, Microsoft named its implementation JScript to avoid trademark issues. JScript added new date methods to fix the Y2K-problematic methods in JavaScript, which were based on Java&#8217;s <code>java.util.Date</code> class. JScript was included in Internet Explorer 3.0, released in August 1996.</p>
<p>In November 1996, Netscape announced that it had submitted JavaScript to Ecma International for consideration as an industry standard, and subsequent work resulted in the standardized version named ECMAScript.</p>
<p>JavaScript has become one of the most popular programming languages on the web. Initially, however, many professional programmers denigrated the language because its target audience was web authors and other such &#8220;amateurs&#8221;, among other reasons. The advent of Ajax returned JavaScript to the spotlight and brought more professional programming attention. The result was a proliferation of comprehensive frameworks and libraries, improved JavaScript programming practices, and increased usage of JavaScript outside of web browsers, as seen by the proliferation of server-side JavaScript platforms.</p>
<p>In January 2009, the CommonJS project was founded with the goal of specifying a common standard library mainly for JavaScript development outside the browser.</p>
<h3>Trademark</h3>
<p>&#8220;JavaScript&#8221; is a trademark of Oracle Corporation. It is used under license for technology invented and implemented by Netscape Communications and current entities such as the Mozilla Foundation.</p>
<h3>Features</h3>
<p>The following features are common to all conforming ECMAScript implementations, unless explicitly specified otherwise.</p>
<h3>Imperative and structured</h3>
<p>JavaScript supports much of the structured programming syntax from C (e.g., <code>if</code> statements, <code>while</code> loops, <code>switch</code> statements, etc.). One partial exception is scoping: C-style block-level scoping is not supported (instead, JavaScript has function-level scoping). JavaScript 1.7, however, supports block-level scoping with the <code>let</code> keyword. Like C, JavaScript makes a distinction between expressions and statements. One syntactic difference from C is automatic semicolon insertion, in which the semicolons that terminate statements can be omitted.</p>
<h3>Dynamic</h3>
<dl>
<dt>dynamic typing</dt>
<dd>As in most scripting languages, types are associated with values, not with variables. For example, a variable <code>x</code> could be bound to a number, then later rebound to a string. JavaScript supports various ways to test the type of an object, including duck typing.</dd>
<dt>object based</dt>
<dd>JavaScript is almost entirely object-based. JavaScript objects are associative arrays, augmented with prototypes (see below). Object property names are string keys: <code>obj.x = 10</code> and <code>obj['x'] = 10</code> are equivalent, the dot notation being syntactic sugar. Properties and their values can be added, changed, or deleted at run-time. Most properties of an object (and those on its prototype inheritance chain) can be enumerated using a <code>for...in</code> loop. JavaScript has a small number of built-in objects such as <code>Function</code> and <code>Date</code>.</dd>
<dt>run-time evaluation</dt>
<dd>JavaScript includes an <code>eval</code> function that can execute statements provided as strings at run-time.</dd>
</dl>
<h3>Functional</h3>
<dl>
<dt>first-class functions</dt>
<dd>Functions are first-class; they are objects themselves. As such, they have properties and methods, such as <code>length</code> and <code>call()</code>; and they can be assigned to variables, passed as arguments, <code>return</code>-ed by other functions, and manipulated like any other object. Any reference to a function allows it to be invoked using the <code>()</code> operator.</dd>
<dt>nested functions</dt>
<dd>&#8220;Inner&#8221; or &#8220;nested&#8221; functions are functions defined within another function. They are created each time the outer function is invoked. In addition to that, the scope of the outer function, including any constants, local variables and argument values, become part of the internal state of each inner function object, even after execution of the outer function concludes.</dd>
<dt>closures</dt>
<dd>JavaScript allows nested functions to be created, with the lexical scope in force at their definition, and has a <code>()</code> operator to invoke them now or later. This combination of code that can be executed outside the scope in which it is defined, with its own scope to use during that execution, is called a closure in computer science.</dd>
</dl>
<h3>Prototype-based</h3>
<dl>
<dt>prototypes</dt>
<dd>JavaScript uses prototypes instead of classes for inheritance. It is possible to simulate many class-based features with prototypes in JavaScript.</dd>
<dt>functions as object constructors</dt>
<dd>Functions double as object constructors along with their typical role. Prefixing a function call with <code>new</code> creates a new object and calls that function with its local <code>this</code> keyword bound to that object for that invocation. The constructor&#8217;s <code>prototype</code> property determines the object used for the new object&#8217;s internal prototype. JavaScript&#8217;s built-in constructors, such as <code>Array</code>, also have prototypes that can be modified.</dd>
<dt>functions as methods</dt>
<dd>Unlike many object-oriented languages, there is no distinction between a function definition and a method definition. Rather, the distinction occurs during function calling; a function can be called as a method. When a function is called as a method of an object, the function&#8217;s local <code>this</code> keyword is bound to that object for that invocation.</dd>
</dl>
<h3>Miscellaneous</h3>
<dl>
<dt>run-time environment</dt>
<dd>JavaScript typically relies on a run-time environment (e.g. in a web browser) to provide objects and methods by which scripts can interact with &#8220;the outside world&#8221;. In fact, it relies on the environment to provide the ability to include/import scripts (e.g. HTML <code>&lt;script&gt;</code> elements). (This is not a language feature per se, but it is common in most JavaScript implementations.)</dd>
<dt>variadic functions</dt>
<dd>An indefinite number of parameters can be passed to a function. The function can access them through formal parameters and also through the local <code>arguments</code> object.</dd>
<dt>array and object literals</dt>
<dd>Like many scripting languages, arrays and objects (associative arrays in other languages) can each be created with a succinct shortcut syntax. In fact, these literals form the basis of the JSON data format.</dd>
<dt>regular expressions</dt>
<dd>JavaScript also supports regular expressions in a manner similar to Perl, which provide a concise and powerful syntax for text manipulation that is more sophisticated than the built-in string functions.</dd>
</dl>
<h3>Vendor-specific extensions</h3>
<p>JavaScript is officially managed by Mozilla Foundation, and new language features are added periodically. However, only some non-Mozilla JavaScript engines support these new features:</p>
<ul>
<li>property getter and setter functions (also supported by WebKit, Opera, ActionScript, and Rhino)</li>
<li>conditional <code>catch</code> clauses</li>
<li>iterator protocol adopted from Python</li>
<li>shallow generators-coroutines also adopted from Python</li>
<li>array comprehensions and generator expressions also adopted from Python</li>
<li>proper block scope via the <code>let</code> keyword</li>
<li>array and object destructuring (limited form of pattern matching)</li>
<li>concise function expressions (<code>function(args) expr</code>)</li>
<li>ECMAScript for XML (E4X), an extension that adds native XML support to ECMAScript</li>
</ul>
<h3>Syntax and semantics</h3>
<p>As of 2011, the latest version of the language is JavaScript 1.8.5. It is a superset of ECMAScript (ECMA-262) Edition 3. Extensions to the language, including partial ECMAScript for XML (E4X) (ECMA-357) support and experimental features considered for inclusion into future ECMAScript editions, are documented here.</p>
<h3>Simple examples</h3>
<p>A simple alert box:</p>
<div dir="ltr">
<div>
<pre>alert("alert alert")</pre>
</div>
</div>
<p>A simple recursive function:</p>
<div dir="ltr">
<div>
<pre>function factorial(n) {
    if (n === 0) {
        return 1;
    }
    return n * factorial(n - 1);
}</pre>
</div>
</div>
<p>Anonymous function (or lambda) syntax and closure example:</p>
<div dir="ltr">
<div>
<pre>function displayClosure() {
    var count = 0;
    return function () {
        return ++count;
    };
}
var inc = displayClosure();
inc(); // returns 1
inc(); // returns 2
inc(); // returns 3</pre>
</div>
</div>
<p>Variadic function demonstration (<tt>arguments</tt> is a special variable).</p>
<div dir="ltr">
<div>
<pre>function sum() {
    var i,
        x = 0;
    for (i = 0; i &lt; arguments.length; ++i) {
        x += arguments[i];
    }
    return x;
}
sum(1, 2, 3); // returns 6</pre>
</div>
</div>
<h3>More advanced example</h3>
<p>This sample code showcases various JavaScript features.</p>
<div>
<div dir="ltr">
<div>
<pre>/* Finds the lowest common multiple of two numbers */
function LCMCalculator(x, y) { // constructor function
    var checkInt = function (x) { // inner function
        if (x % 1 !== 0) {
            throw new TypeError(x + " is not an integer"); // throw an exception
        }
        return x;
    };
    this.a = checkInt(x);
    // ^ semicolons are optional
    this.b = checkInt(y);
}
// The prototype of object instances created by a constructor is
// that constructor's "prototype" property.
LCMCalculator.prototype = { // object literal
    constructor: LCMCalculator, // when reassigning a prototype, set the constructor property appropriately
    gcd: function () { // method that calculates the greatest common divisor
        // Euclidean algorithm:
        var a = Math.abs(this.a), b = Math.abs(this.b), t;
        if (a &lt; b) {
            // swap variables
            t = b;
            b = a;
            a = t;
        }
        while (b !== 0) {
            t = b;
            b = a % b;
            a = t;
        }
        // Only need to calculate GCD once, so "redefine" this method.
        // (Actually not redefinition - it's defined on the instance itself,
        // so that this.gcd refers to this "redefinition" instead of LCMCalculator.prototype.gcd.)
        // Also, 'gcd' === "gcd", this['gcd'] === this.gcd
        this['gcd'] = function () {
            return a;
        };
        return a;
    },
    // Object property names can be specified by strings delimited by double (") or single (') quotes.
    "lcm" : function () {
        // Variable names don't collide with object properties, e.g. |lcm| is not |this.lcm|.
        // not using |this.a * this.b| to avoid FP precision issues
        var lcm = this.a / this.gcd() * this.b;
        // Only need to calculate lcm once, so "redefine" this method.
        this.lcm = function () {
            return lcm;
        };
        return lcm;
    },
    toString: function () {
        return "LCMCalculator: a = " + this.a + ", b = " + this.b;
    }
};

//define generic output function; this implementation only works for web browsers
function output(x) {
    document.write(x + "&lt;br&gt;");
}

// Note: Array's map() and forEach() are defined in JavaScript 1.6.
// They are used here to demonstrate JavaScript's inherent functional nature.
[[25, 55], [21, 56], [22, 58], [28, 56]].map(function (pair) { // array literal + mapping function
    return new LCMCalculator(pair[0], pair[1]);
}).sort(function (a, b) { // sort with this comparative function
    return a.lcm() - b.lcm();
}).forEach(function (obj) {
    output(obj + ", gcd = " + obj.gcd() + ", lcm = " + obj.lcm());
});</pre>
</div>
</div>
</div>
<p>The following output should be displayed in the browser window.</p>
<div>
<div dir="ltr">
<div>
<pre>LCMCalculator: a = 28, b = 56, gcd = 28, lcm = 56&lt;br&gt;
LCMCalculator: a = 21, b = 56, gcd = 7, lcm = 168&lt;br&gt;
LCMCalculator: a = 25, b = 55, gcd = 5, lcm = 275&lt;br&gt;
LCMCalculator: a = 22, b = 58, gcd = 2, lcm = 638&lt;br&gt;</pre>
</div>
</div>
</div>
<h3>Use in web pages</h3>
<div>See also: JavaScript engine and Ajax (programming)</div>
<p>The most common use of JavaScript is to write functions that are embedded in or included from HTML pages and that interact with the Document Object Model (DOM) of the page. Some simple examples of this usage are:</p>
<ul>
<li>Opening or popping up a new window with programmatic control over the size, position, and attributes of the new window (e.g. whether the menus, toolbars, etc., are visible).</li>
<li>Validating input values of a web form to make sure that they are acceptable before being submitted to the server.</li>
<li>Changing images as the mouse cursor moves over them: This effect is often used to draw the user&#8217;s attention to important links displayed as graphical elements.</li>
<li>Transmitting information about the user&#8217;s reading habits and browsing activities to various websites. Web pages frequently do this for web analytics, ad tracking, personalization or other purposes.</li>
</ul>
<p>Because JavaScript code can run locally in a user&#8217;s browser (rather than on a remote server), the browser can respond to user actions quickly, making an application more responsive. Furthermore, JavaScript code can detect user actions which HTML alone cannot, such as individual keystrokes. Applications such as Gmail take advantage of this: much of the user-interface logic is written in JavaScript, and JavaScript dispatches requests for information (such as the content of an e-mail message) to the server. The wider trend of Ajax programming similarly exploits this strength.</p>
<p>A JavaScript engine (also known as <em>JavaScript interpreter</em> or <em>JavaScript implementation</em>) is an interpreter that interprets JavaScript source code and executes the script accordingly. The first JavaScript engine was created by Brendan Eich at Netscape Communications Corporation, for the Netscape Navigator web browser. The engine, code-named SpiderMonkey, is implemented in C. It has since been updated (in JavaScript 1.5) to conform to ECMA-262 Edition 3. The Rhino engine, created primarily by Norris Boyd (formerly of Netscape; now at Google) is a JavaScript implementation in Java. Rhino, like SpiderMonkey, is ECMA-262 Edition 3 compliant.</p>
<p>A web browser is by far the most common host environment for JavaScript. Web browsers typically use the public API to create &#8220;host objects&#8221; responsible for reflecting the Document Object Model (DOM) into JavaScript. The web server is another common application of the engine. A JavaScript webserver would expose host objects representing an HTTP request and response objects, which a JavaScript program could then manipulate to dynamically generate web pages.</p>
<p>Because JavaScript is the only language that the most popular browsers share support for, it has become a target language for many frameworks in other languages, even though JavaScript was never intended to be such a language.Despite the performance limitations inherent to its dynamic nature, the increasing speed of JavaScript engines has made the language a surprisingly feasible compilation target.</p>
<h3>Example script</h3>
<p>Below is a minimal example of a standards-conforming web page containing JavaScript (using HTML 4.01 syntax) and the DOM:</p>
<div dir="ltr">
<div>
<pre>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"&gt;
&lt;html&gt;
  &lt;head&gt;&lt;title&gt;simple page&lt;/title&gt;&lt;/head&gt;
  &lt;body&gt;
    &lt;h1 id="header"&gt;This is JavaScript&lt;/h1&gt;
    &lt;script type="text/javascript"&gt;
      document.write('Hello World!');
      var h1 = document.getElementById("header"); // holds a reference to the &lt;h1&gt; tag
      h1 = document.getElementsByTagName("h1")[0]; // accessing the same &lt;h1&gt; element
    &lt;/script&gt;
    &lt;noscript&gt;

Your browser either does not support JavaScript, or has JavaScript turned off.

    &lt;/noscript&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre>
</div>
</div>
<h3>[edit] Compatibility considerations</h3>
<div>Main article: Web interoperability</div>
<p>Because JavaScript runs in widely varying environments, an important part of testing and debugging is to test and verify that the JavaScript works across multiple browsers.</p>
<p>The DOM interfaces for manipulating web pages are not part of the ECMAScript standard, or of JavaScript itself. Officially, the DOM interfaces are defined by a separate standardization effort by the W3C; in practice, browser implementations differ from the standards and from each other, and not all browsers execute JavaScript.</p>
<p>To deal with these differences, JavaScript authors can attempt to write standards-compliant code which will also be executed correctly by most browsers; failing that, they can write code that checks for the presence of certain browser features and behaves differently if they are not available.<sup id="cite_ref-31">[32]</sup> In some cases, two browsers may both implement a feature but with different behavior, and authors may find it practical to detect what browser is running and change their script&#8217;s behavior to match.<sup id="cite_ref-32">[33]</sup><sup id="cite_ref-33">[34]</sup> Programmers may also use libraries or toolkits which take browser differences into account.</p>
<p>Furthermore, scripts may not work for some users. For example, a user may:</p>
<ul>
<li>use an old or rare browser with incomplete or unusual DOM support,</li>
<li>use a PDA or mobile phone browser which cannot execute JavaScript,</li>
<li>have JavaScript execution disabled as a security precaution,</li>
<li>use a speech browser due to, for example, a visual disability.</li>
</ul>
<p>To support these users, web authors can try to create pages which degrade gracefully on user agents (browsers) which do not support the page&#8217;s JavaScript. In particular, the page should remain usable albeit without the extra features that the JavaScript would have added. An alternative approach that many find preferable is to first author content using basic technologies that work in all browsers, then enhance the content for users that have JavaScript enabled. This is known as progressive enhancement.</p>
<h3>Accessibility</h3>
<div>Main article: Web accessibility</div>
<p>Assuming that the user has not disabled its execution, client-side web JavaScript should be written to enhance the experiences of visitors with visual or physical disabilities, and certainly should avoid denying information to these visitors.</p>
<p>Screen readers, used by the blind and partially sighted, can be JavaScript-aware and so may access and read the page DOM after the script has altered it. The HTML should be as concise, navigable and semantically rich as possible whether the scripts have run or not. JavaScript should not be totally reliant on mouse-specific events so as to deny its benefits to users who either cannot use a mouse or who choose to favor the keyboard for whatever reason. Equally, although hyperlinks and webforms can be navigated and operated from the keyboard, accessible JavaScript should not require keyboard events either. There are device-independent events such as <code>onfocus</code> and <code>onchange</code> that are preferable in most cases.</p>
<p>JavaScript should not be used in a way that is confusing or disorienting to any web user. For example, using script to alter or disable the normal functionality of the browser, such as by changing the way the back-button or the refresh event work, is usually best avoided. Equally, triggering events that the user may not be aware of reduces the user&#8217;s sense of control as do unexpected scripted changes to the page content.</p>
<p>Often the process of making a complex web page as accessible as possible becomes a nontrivial problem where issues become matters of debate and opinion, and where compromises are necessary in the end. However, user agents and assistive technologies are constantly evolving and new guidelines and relevant information are continually being published on the web.</p>
<h3>Security</h3>
<div>See also: Browser security</div>
<p>JavaScript and the DOM provide the potential for malicious authors to deliver scripts to run on a client computer via the web. Browser authors contain this risk using two restrictions. First, scripts run in a sandbox in which they can only perform web-related actions, not general-purpose programming tasks like creating files. Second, scripts are constrained by the same origin policy: scripts from one web site do not have access to information such as usernames, passwords, or cookies sent to another site. Most JavaScript-related security bugs are breaches of either the same origin policy or the sandbox.</p>
<h3>Cross-site vulnerabilities</h3>
<div>Main articles: Cross-site scripting and Cross-site request forgery</div>
<p>A common JavaScript-related security problem is cross-site scripting, or XSS, a violation of the same-origin policy. XSS vulnerabilities occur when an attacker is able to cause a target web site, such as an online banking website, to include a malicious script in the webpage presented to a victim. The script in this example can then access the banking application with the privileges of the victim, potentially disclosing secret information or transferring money without the victim&#8217;s authorization. A solution to XSS vulnerabilities is to use <em>HTML escaping</em> whenever displaying untrusted data.</p>
<p>Some browsers include partial protection against <em>reflected</em> XSS attacks, in which the attacker provides a URL including malicious script. However, even users of those browsers are vulnerable to other XSS attacks, such as those where the malicious code is stored in a database. Only correct design of Web applications on the server side can fully prevent XSS.</p>
<p>XSS vulnerabilities can also occur because of implementation mistakes by browser authors.</p>
<p>Another cross-site vulnerability is cross-site request forgery or CSRF. In CSRF, code on an attacker&#8217;s site tricks the victim&#8217;s browser into taking actions the user didn&#8217;t intend at a target site (like transferring money at a bank). It works because, if the target site relies only on cookies to authenticate requests, then requests initiated by code on the attacker&#8217;s site will carry the same legitimate login credentials as requests initiated by the user. In general, the solution to CSRF is to require an authentication value in a hidden form field, and not only in the cookies, to authenticate any request that might have lasting effects. Checking the HTTP Referrer header can also help.</p>
<p>&#8220;JavaScript hijacking&#8221; is a type of CSRF attack in which a &lt;script&gt; tag on an attacker&#8217;s site exploits a page on the victim&#8217;s site that returns private information such as JSON or JavaScript. Possible solutions include requiring an authentication token in the POST and GET parameters for any response that returns private JSON (even if it has no side effects); using POST and never GET for requests that return private JSON; and modifying the response so that it can&#8217;t be used via a &lt;script&gt; tag (by, for example, wrapping the JSON in a JavaScript comment).</p>
<h4>Misplaced trust in the client</h4>
<p>Developers of client-server applications must recognize that untrusted clients may be under the control of attackers. Thus any secret embedded in JavaScript could be extracted by a determined adversary, and the application author cannot assume that his JavaScript runs as intended, or at all. Some implications:</p>
<ul>
<li>Web site authors cannot perfectly conceal how their JavaScript operates, because the code is sent to the client, and obfuscated code can be reverse-engineered.</li>
<li>JavaScript form validation only provides convenience for users, not security. If a site verifies that the user agreed to its terms of service, or filters invalid characters out of fields that should only contain numbers, it must do so on the server, not only the client.</li>
<li>Scripts can be selectively disabled, so JavaScript can&#8217;t be relied on to prevent operations such as &#8220;save image&#8221;.</li>
<li>It is extremely bad practice to embed sensitive information such as passwords in JavaScript because it can be extracted by an attacker.</li>
</ul>
<h4>Browser and plugin coding errors</h4>
<p>JavaScript provides an interface to a wide range of browser capabilities, some of which may have flaws such as buffer overflows. These flaws can allow attackers to write scripts which would run any code they wish on the user&#8217;s system.</p>
<p>These flaws have affected major browsers including Firefox, Internet Explorer, and Safari.</p>
<p>Plugins, such as video players, Adobe Flash, and the wide range of ActiveX controls enabled by default in Microsoft Internet Explorer, may also have flaws exploitable via JavaScript, and such flaws have been exploited in the past.</p>
<p>In Windows Vista, Microsoft has attempted to contain the risks of bugs such as buffer overflows by running the Internet Explorer process with limited privileges. Google Chrome similarly limits page renderers in its own &#8220;sandbox&#8221;.</p>
<h4>Sandbox implementation errors</h4>
<p>Web browsers are capable of running JavaScript outside of the sandbox, with the privileges necessary to, for example, create or delete files. Of course, such privileges aren&#8217;t meant to be granted to code from the web.</p>
<p>Incorrectly granting privileges to JavaScript from the web has played a role in vulnerabilities in both Internet Explorer and Firefox. In Windows XP Service Pack 2, Microsoft demoted JScript&#8217;s privileges in Internet Explorer.</p>
<p>Microsoft Windows allows JavaScript source files on a computer&#8217;s hard drive to be launched as general-purpose, non-sandboxed programs. This makes JavaScript (like VBScript) a theoretically viable vector for a Trojan horse, although JavaScript Trojan horses are uncommon in practice. (See Windows Script Host.)</p>
<h3>Uses outside web pages</h3>
<p>In addition to web browsers and servers, JavaScript interpreters are embedded in a number of tools. Each of these applications provides its own object model which provides access to the host environment, with the core JavaScript language remaining mostly the same in each application.</p>
<h3>Embedded scripting language</h3>
<ul>
<li>Google&#8217;s Chrome extensions, Opera&#8217;s extensions, Apple&#8217;s Safari 5 extensions, Apple&#8217;s Dashboard Widgets, Microsoft&#8217;s Gadgets, Yahoo! Widgets, Google Desktop Gadgets, and Serence Klipfolio are implemented using JavaScript.</li>
<li>Adobe&#8217;s Acrobat and Adobe Reader support JavaScript in PDF files.</li>
<li>Tools in the Adobe Creative Suite, including Photoshop, Illustrator, Dreamweaver, and InDesign, allow scripting through JavaScript.</li>
<li>OpenOffice.org office application suite allows for JavaScript as one of its scripting languages.</li>
<li>The interactive music signal processing software Max/MSP released by Cycling &#8217;74, offers a JavaScript model of its environment for use by developers. It allows much more precise control than the default GUI-centric programming model.</li>
<li>ECMAScript was included in the VRML97 standard for scripting nodes of VRML scene description files.</li>
<li>Some high-end Philips universal remote panels, including TSU9600 and TSU9400, can be scripted using a JavaScript-based tool called ProntoScript.</li>
<li>Sphere is an open source and cross platform computer program designed primarily to make role-playing games that use JavaScript as a scripting language.</li>
<li>The open-source Re-Animator framework allows developing 2D sprite-based games using JavaScript and XML.</li>
<li>Methabot is a web crawler that uses JavaScript as scripting language for custom filetype parsers and data extraction using E4X.</li>
<li>The Unity game engine supports a modified JavaScript for scripting (in addition to C# and Boo) via Mono.</li>
<li>DX Studio (3D engine) uses the SpiderMonkey implementation of JavaScript for game and simulation logic.</li>
<li>Maxwell Render (rendering software) provides an ECMA standard based scripting engine for tasks automation.</li>
<li>Google Apps Script in Google Spreadsheets and Google Sites allows users to create custom formulas, automate repetitive tasks and also interact with other Google products such as Gmail.</li>
<li>Many IRC clients, like ChatZilla or XChat, use JavaScript for their scripting abilities.</li>
</ul>
<h3>Scripting engine</h3>
<ul>
<li>Microsoft&#8217;s Active Scripting technology supports JScript as a scripting language.</li>
<li>The Java programming language, in version SE 6 (JDK 1.6), introduced the <code>javax.script</code> package, including a JavaScript implementation based on Mozilla Rhino. Thus, Java applications can host scripts that access the application&#8217;s variables and objects, much like web browsers host scripts that access the browser&#8217;s Document Object Model (DOM) for a webpage.</li>
<li>The Qt C++ toolkit includes a <code>QtScript</code> module to interpret JavaScript, analogous to Java&#8217;s <code>javax.script</code> package.</li>
<li>JSDB (JavaScript for Databases) is an open-source JavaScript shell for Windows, Mac OS X, Linux, and Unix, which extends the Mozilla JavaScript engine with file, database, email, and network objects.</li>
<li>jslibs is an open-source JavaScript shell for Windows and Linux which extends the Mozilla JavaScript engine. It has the ability to call functions in commonly used libraries like NSPR, SQLite, libTomCrypt, OpenGL, OpenAL, and librsvg.</li>
<li>Late Night Software&#8217;s JavaScript OSA (aka JavaScript for OSA, or JSOSA) is a freeware alternative to AppleScript for Mac OS X. It is based on the Mozilla 1.5 JavaScript implementation, with the addition of a <code>MacOS</code> object for interaction with the operating system and third-party applications.</li>
</ul>
<h3>Application platform</h3>
<ul>
<li>ActionScript, the programming language used in Adobe Flash, is another implementation of the ECMAScript standard.</li>
<li>The Mozilla platform, which underlies Firefox, Thunderbird, and some other web browsers, uses JavaScript to implement the graphical user interface (GUI) of its various products.</li>
<li>Adobe Integrated Runtime is a JavaScript runtime that allows developers to create desktop applications.</li>
<li>myNFC.org is a JavaScript based framework that allows developers to create applications for smart phones.</li>
<li>webOS uses the WebKit implementation of JavaScript in its SDK to allow developers to create stand-alone applications solely in JavaScript.</li>
<li>CA, Inc.&#8217;s AutoShell cross-application scripting environment is built on JavaScript/SpiderMonkey with preprocessor like extensions for command definitions and custom classes for various system related tasks like file i/o, operation system command invocation and redirection and COM scripting.</li>
<li>GNOME Shell, the shell for the GNOME 3 desktop environment. The Seed, Gjs (from Gnome), and Kjsembed (from KDE) packages are aimed to utilize these needs.</li>
<li>Qt Quick&#8217;s markup language (QML) is using JavaScript for the application logic, and the declarative syntax is JavaScript-like. QML has been available since Qt 4.7.</li>
</ul>
<h3>Development tools</h3>
<p>Within JavaScript, access to a debugger becomes invaluable when developing large, non-trivial programs. Because there can be implementation differences between the various browsers (particularly within the Document Object Model), it is useful to have access to a debugger for each of the browsers that a web application targets.</p>
<p>Script debuggers are available for Internet Explorer, Firefox, Safari, Google Chrome, and Opera.</p>
<p>Three debuggers are available for Internet Explorer: Microsoft Visual Studio is the richest of the three, closely followed by Microsoft Script Editor (a component of Microsoft Office), and finally the free Microsoft Script Debugger which is far more basic than the other two. The free Microsoft Visual Web Developer Express provides a limited version of the JavaScript debugging functionality in Microsoft Visual Studio. Internet Explorer has included developer tools since version 8 (reached by pressing the F12 key).</p>
<p>Web applications within Firefox can be debugged using the Firebug add-on, or the older Venkman debugger. Firefox also has a simpler built-in Error Console, which logs and evaluates JavaScript. It also logs CSS errors and warnings.</p>
<p>Opera includes a set of tools called Dragonfly.</p>
<p>WebKit&#8217;s Web Inspector includes a JavaScript debugger used in Safari, along with a modified version in Google Chrome.</p>
<p>Some debugging aids are themselves written in JavaScript and built to run on the Web. An example is the program JSLint, developed by Douglas Crockford, currently senior JavaScript architect at Yahoo! who has written extensively on the language. JSLint scans JavaScript code for conformance to a set of standards and guidelines. Web development bookmarklets and Firebug Lite provide variations on the idea of the cross-browser JavaScript console.</p>
<p>MiniME is an open-source JavaScript minifier, obfuscator, and code-checking tool for the .NET platform.</p>
<p>Pretty Diff is an algorithmic diff tool written in JavaScript for comparing white space compressed JavaScript, and several other languages, to human readable forms of similar code.</p>
<h3>Versions</h3>
<div>See also: ECMAScript#Dialects and ECMAScript#Version correspondence</div>
<p>The following table is based on a history compilation forum post, JQuery author&#8217;s blog post, and Microsoft&#8217;s JScript version information webpage.</p>
<table border="1">
<tbody>
<tr>
<th>Version</th>
<th>Release date</th>
<th>Equivalent to</th>
<th>Netscape<br />
Navigator</th>
<th>Mozilla<br />
Firefox</th>
<th>Internet<br />
Explorer</th>
<th>Opera</th>
<th>Safari</th>
<th>Google<br />
Chrome</th>
</tr>
<tr>
<td>1.0</td>
<td>March 1996</td>
<td></td>
<td>2.0</td>
<td></td>
<td>3.0</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>1.1</td>
<td>August 1996</td>
<td></td>
<td>3.0</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>1.2</td>
<td>June 1997</td>
<td></td>
<td>4.0-4.05</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>1.3</td>
<td>October 1998</td>
<td>ECMA-262 1st + 2nd edition</td>
<td>4.06-4.7x</td>
<td></td>
<td>4.0</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>1.4</td>
<td></td>
<td></td>
<td>Netscape<br />
Server</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>1.5</td>
<td>November 2000</td>
<td>ECMA-262 3rd edition</td>
<td>6.0</td>
<td>1.0</td>
<td>5.5 (JScript 5.5),<br />
6 (JScript 5.6),<br />
7 (JScript 5.7),<br />
8 (JScript 5.8)</td>
<td>6.0</td>
<td>3.0-5</td>
<td>1.0-10.0.666</td>
</tr>
<tr>
<td>1.6</td>
<td>November 2005</td>
<td>1.5 + array extras + array and string generics + E4X</td>
<td></td>
<td>1.5</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>1.7</td>
<td>October 2006</td>
<td>1.6 + Pythonic generators + iterators + let</td>
<td></td>
<td>2.0</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>1.8</td>
<td>June 2008</td>
<td>1.7 + generator expressions + expression closures</td>
<td></td>
<td>3.0</td>
<td></td>
<td>11.50</td>
<td></td>
<td></td>
</tr>
<tr>
<td>1.8.1</td>
<td></td>
<td>1.8 + native JSON support + minor updates</td>
<td></td>
<td>3.5</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>1.8.2</td>
<td>June 22, 2009</td>
<td>1.8.1 + minor updates</td>
<td></td>
<td>3.6</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>1.8.5</td>
<td>July 27, 2010</td>
<td>1.8.2 + ECMAScript 5 compliance</td>
<td></td>
<td>4</td>
<td>9</td>
<td>11.60</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h3>Related languages and features</h3>
<p>JSON, or JavaScript Object Notation, is a general-purpose data interchange format that is defined as a subset of JavaScript&#8217;s literal syntax.</p>
<p>jQuery and Prototype are popular JavaScript libraries designed to simplify DOM-oriented client-side HTML scripting.</p>
<p>Mozilla browsers currently support LiveConnect, a feature that allows JavaScript and Java to intercommunicate on the web. However, Mozilla-specific support for LiveConnect is scheduled to be phased out in the future in favor of passing on the LiveConnect handling via NPAPI to the Java 1.6+ plug-in (not yet supported on the Mac as of March 2010). Most browser inspection tools, such as Firebug in Firefox, include JavaScript interpreters that can act on the visible page&#8217;s DOM.</p>
<h3>Use as an intermediate language</h3>
<p>As JavaScript is typically the most widely supported programming language you can run within web browsers, it has become an intermediate language for other languages to target. This has included ports of existing languages, and the creation of new ones. Some of these include:</p>
<ul>
<li>Objective-J, a superset of JavaScript that compiles to standard JavaScript. It adds traditional inheritance and Smalltalk/Objective-C style dynamic dispatch and optional pseudo-static typing to JavaScript.</li>
<li>Processing.js, a JavaScript port of Processing, a programming language designed to write visualizations, images, and interactive content. It allows web browsers to display animations, visual applications, games and other graphical rich content without the need for a Java applet or Flash plugin.</li>
<li>CoffeeScript, an alternate syntax for JavaScript intended to be more concise and readable and adding features like array comprehensions and pattern matching. Like Objective-J, it compiles to JavaScript. Ruby and Python have been cited as influential on CoffeeScript syntax.</li>
<li>Quby, a proprietary sand-boxed Ruby-like language by PlayMyCode used for building browser games.</li>
<li>OMeta, a functional language featuring pattern matching.</li>
<li>Phype, an open source PHP to JavaScript compiler.</li>
<li>TIScript, a superset of JavaScript that adds classes, namespaces, and lambda expressions.</li>
<li>ClojureScript, a Clojure to JavaScript compiler which is compatible with the advanced compilation mode of the Google Closure optimizing compiler.</li>
<li>Parenscript, a Common Lisp library that can translate into JavaScript both well-circumscribed Common Lisp code, and JavaScript rendered as &#8220;inlined&#8221; S-expressions in Common Lisp source code.</li>
<li>Py2JS, a subset of Python</li>
<li>Dart (programming language) is supported by Google, and compiles to its own native language in addition to a Javascript based one</li>
</ul>
<h3>JavaScript and Java</h3>
<p>A common misconception is that JavaScript is similar or closely related to Java. It is true that both have a C-like syntax, the C language being their most immediate common ancestor language. They are both object-oriented, typically sandboxed (when used inside a browser), and are widely used in client-side Web applications. In addition, JavaScript was designed with Java&#8217;s syntax and standard library in mind. In particular, all Java keywords were reserved in original JavaScript, JavaScript&#8217;s standard library follows Java&#8217;s naming conventions, and JavaScript&#8217;s Math and Date objects are based on classes from Java 1.0.</p>
<table>
<tbody>
<tr>
<td valign="top" width="20">“</td>
<td valign="top">JS had to “look like Java” only less so, [it had to] be Java’s dumb kid brother or boy-hostage sidekick. Plus, I had to be done in ten days or something worse than JS would have happened</td>
<td valign="bottom" width="20">”</td>
</tr>
<tr>
<td colspan="3"><cite>—Brendan Eich</cite></td>
</tr>
</tbody>
</table>
<p>However, the similarities end there. Java has static typing; JavaScript&#8217;s typing is dynamic (meaning a variable can hold an object of any type and cannot be restricted). JavaScript is weakly typed (<tt>'0.0000' == 0</tt>, <tt>0 == ""</tt>, <tt>false == ""</tt>, etc.) while Java is more strongly typed. Java is loaded from compiled bytecode; JavaScript is loaded as human-readable source code. Java&#8217;s objects are class-based; JavaScript&#8217;s are prototype-based. JavaScript also has many functional features based on the Scheme language.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypernetstudio.com/2012/04/12/javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>XML</title>
		<link>http://www.hypernetstudio.com/2012/04/12/xml/</link>
		<comments>http://www.hypernetstudio.com/2012/04/12/xml/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 13:37:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[XML]]></category>
		<category><![CDATA[Extensible]]></category>
		<category><![CDATA[general]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[unicode]]></category>

		<guid isPermaLink="false">http://www.hypernetstudio.com/?p=71</guid>
		<description><![CDATA[Extensible Markup Language (XML) is a markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards. The design goals of XML emphasize simplicity, generality,]]></description>
			<content:encoded><![CDATA[<p><strong>Extensible Markup Language</strong> (<strong>XML</strong>) is a markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards.</p>
<p>The design goals of XML emphasize simplicity, generality, and usability over the Internet. It is a textual data format with strong support via Unicode for the languages of the world. Although the design of XML focuses on documents, it is widely used for the representation of arbitrary data structures, for example in web services.</p>
<p>Many application programming interfaces (APIs) have been developed for software developers to use to process XML data, and several schema systems exist to aid in the definition of XML-based languages.</p>
<p>As of 2009, hundreds of XML-based languages have been developed, including RSS, Atom, SOAP, and XHTML. XML-based formats have become the default for many office-productivity tools, including Microsoft Office (Office Open XML), OpenOffice.org (OpenDocument), and Apple&#8217;s iWork.<sup id="cite_ref-8">[9]</sup> XML has also been employed as the base language for communication protocols, such as XMPP.</p>
<h3>Key terminology</h3>
<p>The material in this section is based on the XML Specification. This is not an exhaustive list of all the constructs which appear in XML; it provides an introduction to the key constructs most often encountered in day-to-day use.</p>
<dl>
<dt>(Unicode) Character</dt>
<dd>By definition, an XML document is a string of characters. Almost every legal Unicode character may appear in an XML document.</dd>
</dl>
<dl>
<dt>Processor and Application</dt>
<dd>The <em>processor</em> analyzes the markup and passes structured information to an <em>application</em>. The specification places requirements on what an XML processor must do and not do, but the application is outside its scope. The processor (as the specification calls it) is often referred to colloquially as an <em>XML parser</em>.</dd>
</dl>
<dl>
<dt>Markup and Content</dt>
<dd>The characters which make up an XML document are divided into <em>markup</em> and <em>content</em>. Markup and content may be distinguished by the application of simple syntactic rules. All strings which constitute markup either begin with the character <code>&lt;</code> and end with a <code>&gt;</code>, or begin with the character <code>&amp;</code> and end with a <code>;</code>. Strings of characters which are not markup are content.</dd>
</dl>
<dl>
<dt>Tag</dt>
<dd>A markup construct that begins with <code>&lt;</code> and ends with <code>&gt;</code>. Tags come in three flavors:</p>
<ul>
<li><em>start-tags</em>; for example: <code>&lt;section&gt;</code></li>
<li><em>end-tags</em>; for example: <code>&lt;/section&gt;</code></li>
<li><em>empty-element tags</em>; for example: <code>&lt;line-break /&gt;</code></li>
</ul>
</dd>
</dl>
<dl>
<dt>Element</dt>
<dd>A logical document component either begins with a start-tag and ends with a matching end-tag or consists only of an empty-element tag. The characters between the start- and end-tags, if any, are the element&#8217;s <em>content</em>, and may contain markup, including other elements, which are called <em>child elements</em>. An example of an element is <code>&lt;Greeting&gt;Hello, world.&lt;/Greeting&gt;</code> (see hello world). Another is <code>&lt;line-break /&gt;</code>.</dd>
</dl>
<dl>
<dt>Attribute</dt>
<dd>A markup construct consisting of a name/value pair that exists within a start-tag or empty-element tag. In the example (below) the element <em>img</em> has two attributes, <em>src</em> and <em>alt</em>: <code>&lt;img src="madonna.jpg" alt='Foligno Madonna, by Raphael' /&gt;</code>. Another example would be <code>&lt;step number="3"&gt;Connect A to B.&lt;/step&gt;</code> where the name of the attribute is &#8220;number&#8221; and the value is &#8220;3&#8243;.</dd>
</dl>
<dl>
<dt>XML Declaration</dt>
<dd>XML documents may begin by declaring some information about themselves, as in the following example:</dd>
<dd>
<div dir="ltr">
<div>
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;</pre>
</div>
</div>
</dd>
</dl>
<h3>Characters and escaping</h3>
<p>XML documents consist entirely of characters from the Unicode repertoire. Except for a small number of specifically excluded control characters, any character defined by Unicode may appear within the content of an XML document. The selection of characters that may appear within markup is somewhat more limited but still large.</p>
<p>XML includes facilities for identifying the <em>encoding</em> of the Unicode characters that make up the document, and for expressing characters that, for one reason or another, cannot be used directly.</p>
<h3>Valid characters</h3>
<div>Main article: Valid characters in XML</div>
<p>Unicode code points in the following ranges are valid in XML 1.0 documents:</p>
<ul>
<li>U+0009, U+000A, U+000D: these are the only C0 controls accepted in XML 1.0;</li>
<li>U+0020–U+D7FF, U+E000–U+FFFD: this excludes <em>some</em> (not all) non-characters in the BMP (all surrogates, U+FFFE and U+FFFF are forbidden);</li>
<li>U+10000–U+10FFFF: this includes <em>all</em> code points in supplementary planes, including non-characters.</li>
</ul>
<p>XML 1.1 extends the set of allowed characters to include all the above, plus the remaining characters in the range U+0001–U+001F. At the same time, however, it restricts the use of C0 and C1 control characters other than U+0009, U+000A, U+000D, and U+0085 by requiring them to be written in escaped form (for example U+0001 must be written as &amp;#x01; or its equivalent). In the case of C1 characters, this restriction is a backwards incompatibility; it was introduced to allow common encoding errors to be detected.</p>
<p>The code point U+0000 is the only character that is not permitted in any XML 1.0 or 1.1 document.</p>
<h3>Encoding detection</h3>
<p>The Unicode character set can be encoded into bytes for storage or transmission in a variety of different ways, called &#8220;encodings&#8221;. Unicode itself defines encodings that cover the entire repertoire; well-known ones include UTF-8 and UTF-16. There are many other text encodings that pre-date Unicode, such as ASCII and ISO/IEC 8859; their character repertoires in almost every case are subsets of the Unicode character set.</p>
<p>XML allows the use of any of the Unicode-defined encodings, and any other encodings whose characters also appear in Unicode. XML also provides a mechanism whereby an XML processor can reliably, without any prior knowledge, determine which encoding is being used. Encodings other than UTF-8 and UTF-16 will not necessarily be recognized by every XML parser.</p>
<h3>Escaping</h3>
<p>XML provides <em>escape</em> facilities for including characters which are problematic to include directly. For example:</p>
<ul>
<li>The characters &#8220;&lt;&#8221; and &#8220;&amp;&#8221; are key syntax markers and may <em>never</em> appear in content outside of a CDATA section.</li>
<li>Some character encodings support only a subset of Unicode: for example, it is legal to encode an XML document in ASCII, but ASCII lacks code points for Unicode characters such as &#8220;é&#8221;.</li>
<li>It might not be possible to type the character on the author&#8217;s machine.</li>
<li>Some characters have glyphsthat cannot be visually distinguished from other characters: examples are
<ul>
<li>non-breaking-space (<code>&amp;#xa0;</code>) &#8220; &#8220;
<dl>
<dd>compare space (<code>&amp;#x20;</code>) &#8221; &#8220;</dd>
</dl>
</li>
<li>Cyrillic Capital Letter A (<code>&amp;#x410;</code>) &#8220;А&#8221;
<dl>
<dd>compare Latin Capital Letter A (<code>&amp;#x41;</code>) &#8220;A&#8221;</dd>
</dl>
</li>
</ul>
</li>
</ul>
<p>There are five <em>predefined entities</em>:</p>
<ul>
<li><code>&amp;lt;</code> represents &#8220;&lt;&#8221;</li>
<li><code>&amp;gt;</code> represents &#8220;&gt;&#8221;</li>
<li><code>&amp;amp;</code> represents &#8220;&amp;&#8221;</li>
<li><code>&amp;apos;</code> represents &#8216;</li>
<li><code>&amp;quot;</code> represents &#8220;</li>
</ul>
<p>All permitted Unicode characters may be represented with a <em>numeric character reference</em>. Consider the Chinese character &#8220;中&#8221;, whose numeric code in Unicode is hexadecimal 4E2D, or decimal 20,013. A user whose keyboard offers no method for entering this character could still insert it in an XML document encoded either as <code>&amp;#20013;</code> or <code>&amp;#x4e2d;</code>. Similarly, the string &#8220;<code>I &lt;3 Jörg</code>&#8221; could be encoded for inclusion in an XML document as &#8220;<code>I &amp;lt;3 J&amp;#xF6;rg</code>&#8220;.</p>
<p>&#8220;<code>&amp;#0;</code>&#8221; is not permitted, however, because the null character is one of the control characters excluded from XML, even when using a numeric character reference. An alternative encoding mechanism such as Base64 is needed to represent such characters.</p>
<h3>Comments</h3>
<p>Comments may appear anywhere in a document outside other markup. Comments cannot appear before the XML declaration. The string &#8220;<code>--</code>&#8221; (double-hyphen) is not allowed inside comments. Comments start with &#8220;<code>&lt;!--</code>&#8221; and end with &#8220;<code>--&gt;</code>&#8220;. The ampersand has no special significance within comments, so entity and character references are not recognized as such, and there is no way to represent characters outside the character set of the document encoding.</p>
<p>An example of a valid comment: &#8220;<code>&lt;!-- no need to escape &lt;code&gt; &amp; such in comments --&gt;</code>&#8221;</p>
<h3>International use</h3>
<p>XML 1.0 (Fifth Edition) and XML 1.1 support the direct use of almost any Unicode character in element names, attributes, comments, character data, and processing instructions (other than the ones that have special symbolic meaning in XML itself, such as the less-than sign, &#8220;&lt;&#8221;). The following is a well-formed XML document including both Chinese and Cyrillic characters:</p>
<div dir="ltr">
<div>
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;俄语&gt;данные&lt;/俄语&gt;</pre>
</div>
</div>
<h3>Well-formedness and error-handling</h3>
<p>The XML specification defines an XML document as a text that is well-formed, i.e. it satisfies a list of syntax rules provided in the specification. The list is fairly lengthy; some key points are:</p>
<ul>
<li>It contains only properly encoded legal Unicode characters.</li>
<li>None of the special syntax characters such as &#8220;&lt;&#8221; and &#8220;&amp;&#8221; appear except when performing their markup-delineation roles.</li>
<li>The begin, end, and empty-element tags that delimit the elements are correctly nested, with none missing and none overlapping.</li>
<li>The element tags are case-sensitive; the beginning and end tags must match exactly. Tag names cannot contain any of the characters !&#8221;#$%&amp;&#8217;()*+,/;&lt;=&gt;?@[\]^`{|}~, nor a space character, and cannot start with -, ., or a numeric digit.</li>
<li>There is a single &#8220;root&#8221; element that contains all the other elements.</li>
</ul>
<p>The definition of an <em>XML document</em> excludes texts that contain violations of well-formedness rules; they are simply not XML. An XML processor that encounters such a violation is required to report such errors and to cease normal processing. This policy, occasionally referred to as draconian, stands in notable contrast to the behavior of programs that process HTML, which are designed to produce a reasonable result even in the presence of severe markup errors.XML&#8217;s policy in this area has been criticized as a violation of Postel&#8217;s law (&#8220;Be conservative in what you send; be liberal in what you accept&#8221;).</p>
<h3>Schemas and validation</h3>
<p>In addition to being well-formed, an XML document may be <em>valid</em>. This means that it contains a reference to a Document Type Definition (DTD), and that its elements and attributes are declared in that DTD and follow the grammatical rules for them that the DTD specifies.</p>
<p>XML processors are classified as <em>validating</em> or <em>non-validating</em> depending on whether or not they check XML documents for validity. A processor that discovers a validity error must be able to report it, but may continue normal processing.</p>
<p>A DTD is an example of a <em>schema</em> or <em>grammar</em>. Since the initial publication of XML 1.0, there has been substantial work in the area of schema languages for XML. Such schema languages typically constrain the set of elements that may be used in a document, which attributes may be applied to them, the order in which they may appear, and the allowable parent/child relationships.</p>
<h3>Document Type Definition</h3>
<p>The oldest schema language for XML is the Document Type Definition (DTD), inherited from SGML.</p>
<p>DTDs have the following benefits:</p>
<ul>
<li>DTD support is ubiquitous due to its inclusion in the XML 1.0 standard.</li>
<li>DTDs are terse compared to element-based schema languages and consequently present more information in a single screen.</li>
<li>DTDs allow the declaration of standard public entity sets for publishing characters.</li>
<li>DTDs define a <em>document type</em> rather than the types used by a namespace, thus grouping all constraints for a document in a single collection.</li>
</ul>
<p>DTDs have the following limitations:</p>
<ul>
<li>They have no explicit support for newer features of XML, most importantly namespaces.</li>
<li>They lack expressiveness. XML DTDs are simpler than SGML DTDs and there are certain structures that cannot be expressed with regular grammars. DTDs only support rudimentary datatypes.</li>
<li>They lack readability. DTD designers typically make heavy use of parameter entities (which behave essentially as textual macros), which make it easier to define complex grammars, but at the expense of clarity.</li>
<li>They use a syntax based on regular expression syntax, inherited from SGML, to describe the schema. Typical XML APIs such as SAX do not attempt to offer applications a structured representation of the syntax, so it is less accessible to programmers than an element-based syntax may be.</li>
</ul>
<p>Two peculiar features that distinguish DTDs from other schema types are the syntactic support for embedding a DTD within XML documents and for defining <em>entities</em>, which are arbitrary fragments of text and/or markup that the XML processor inserts in the DTD itself and in the XML document wherever they are referenced, like character escapes.</p>
<p>DTD technology is still used in many applications because of its ubiquity.</p>
<h3>XML Schema</h3>
<p>A newer schema language, described by the W3C as the successor of DTDs, is XML Schema, often referred to by the initialism for XML Schema instances, XSD (XML Schema Definition). XSDs are far more powerful than DTDs in describing XML languages. They use a rich datatyping system and allow for more detailed constraints on an XML document&#8217;s logical structure. XSDs also use an XML-based format, which makes it possible to use ordinary XML tools to help process them.</p>
<h3>RELAX NG</h3>
<p>RELAX NG was initially specified by OASIS and is now also an ISO/IEC International Standard (as part of DSDL). RELAX NG schemas may be written in either an XML based syntax or a more compact non-XML syntax; the two syntaxes are isomorphic and James Clark&#8217;s Trang conversion tool can convert between them without loss of information. RELAX NG has a simpler definition and validation framework than XML Schema, making it easier to use and implement. It also has the ability to use datatype framework plug-ins; a RELAX NG schema author, for example, can require values in an XML document to conform to definitions in XML Schema Datatypes.</p>
<h3>Schematron</h3>
<p>Schematron is a language for making assertions about the presence or absence of patterns in an XML document. It typically uses XPath expressions.</p>
<h3>ISO DSDL and other schema languages</h3>
<p>The ISO DSDL (Document Schema Description Languages) standard brings together a comprehensive set of small schema languages, each targeted at specific problems. DSDL includes RELAX NG full and compact syntax, Schematron assertion language, and languages for defining datatypes, character repertoire constraints, renaming and entity expansion, and namespace-based routing of document fragments to different validators. DSDL schema languages do not have the vendor support of XML Schemas yet, and are to some extent a grassroots reaction of industrial publishers to the lack of utility of XML Schemas for publishing.</p>
<p>Some schema languages not only describe the structure of a particular XML format but also offer limited facilities to influence processing of individual XML files that conform to this format. DTDs and XSDs both have this ability; they can for instance provide the infoset augmentation facility and attribute defaults. RELAX NG and Schematron intentionally do not provide these.</p>
<h3>Related specifications</h3>
<p>A cluster of specifications closely related to XML have been developed, starting soon after the initial publication of XML 1.0. It is frequently the case that the term &#8220;XML&#8221; is used to refer to XML together with one or more of these other technologies which have come to be seen as part of the XML core.</p>
<ul>
<li>XML Namespaces enable the same document to contain XML elements and attributes taken from different vocabularies, without any naming collisions occurring. Although XML Namespaces are not part of the XML specification itself, virtually all XML software also supports XML Namespaces.</li>
<li>XML Base defines the <code>xml:base</code> attribute, which may be used to set the base for resolution of relative URI references within the scope of a single XML element.</li>
<li>The XML Information Set or <em>XML infoset</em> describes an abstract data model for XML documents in terms of <em>information items</em>. The infoset is commonly used in the specifications of XML languages, for convenience in describing constraints on the XML constructs those languages allow.</li>
<li>xml:id Version 1.0 asserts that an attribute named <code>xml:id</code> functions as an &#8220;ID attribute&#8221; in the sense used in a DTD.</li>
<li>XPath defines a syntax named <em>XPath expressions</em> which identifies one or more of the internal components (elements, attributes, and so on) included in an XML document. XPath is widely used in other core-XML specifications and in programming libraries for accessing XML-encoded data.</li>
<li>XSLT is a language with an XML-based syntax that is used to transform XML documents into other XML documents, HTML, or other, unstructured formats such as plain text or RTF. XSLT is very tightly coupled with XPath, which it uses to address components of the input XML document, mainly elements and attributes.</li>
<li>XSL Formatting Objects, or XSL-FO, is a markup language for XML document formatting which is most often used to generate PDFs.</li>
<li>XQuery is an XML-oriented query language strongly rooted in XPath and XML Schema. It provides methods to access, manipulate and return XML, and is mainly conceived as a query language for XML databases.</li>
<li>XML Signature defines syntax and processing rules for creating digital signatures on XML content.</li>
<li>XML Encryption defines syntax and processing rules for encrypting XML content.</li>
</ul>
<p>Some other specifications conceived as part of the &#8220;XML Core&#8221; have failed to find wide adoption, including XInclude, XLink, and XPointer.</p>
<h3>Use on the Internet</h3>
<p>XML has come into common use for the interchange of data over the Internet. RFC 3023 gives rules for the construction of Internet Media Types for use when sending XML. It also defines the media types <em>application/xml</em> and <em>text/xml</em>, which say only that the data are in XML, and nothing about its semantics. The use of <em>text/xml</em> has been criticized as a potential source of encoding problems and it has been suggested that it should be deprecated.<sup id="cite_ref-deprecate-text-xml_2-1">[3]</sup></p>
<p>RFC 3023 also recommends that XML-based languages be given media types ending in <em>+xml</em>; for example <em>image/svg+xml</em> for SVG.</p>
<p>Further guidelines for the use of XML in a networked context may be found in RFC 3470, also known as IETF BCP 70; this document is very wide-ranging and covers many aspects of designing and deploying an XML-based language.</p>
<h3>Programming interfaces</h3>
<p>The design goals of XML include, &#8220;It shall be easy to write programs which process XML documents.&#8221; Despite this, the XML specification contains almost no information about how programmers might go about doing such processing. The XML Infoset specification provides a vocabulary to refer to the constructs within an XML document, but also does not provide any guidance on how to access this information. A variety of APIs for accessing XML have been developed and used, and some have been standardized.</p>
<p>Existing APIs for XML processing tend to fall into these categories:</p>
<ul>
<li>Stream-oriented APIs accessible from a programming language, for example SAX and StAX.</li>
<li>Tree-traversal APIs accessible from a programming language, for example DOM.</li>
<li>XML data binding, which provides an automated translation between an XML document and programming-language objects.</li>
<li>Declarative transformation languages such as XSLT and XQuery.</li>
</ul>
<p>Stream-oriented facilities require less memory and, for certain tasks which are based on a linear traversal of an XML document, are faster and simpler than other alternatives. Tree-traversal and data-binding APIs typically require the use of much more memory, but are often found more convenient for use by programmers; some include declarative retrieval of document components via the use of XPath expressions.</p>
<p>XSLT is designed for declarative description of XML document transformations, and has been widely implemented both in server-side packages and Web browsers. XQuery overlaps XSLT in its functionality, but is designed more for searching of large XML databases.</p>
<h3>Simple API for XML</h3>
<p>Simple API for XML (SAX) is a lexical, event-driven interface in which a document is read serially and its contents are reported as callbacks to various methods on a handler object of the user&#8217;s design. SAX is fast and efficient to implement, but difficult to use for extracting information at random from the XML, since it tends to burden the application author with keeping track of what part of the document is being processed. It is better suited to situations in which certain types of information are always handled the same way, no matter where they occur in the document.</p>
<h3>Pull parsing</h3>
<p>Pull parsing treats the document as a series of items which are read in sequence using the Iterator design pattern. This allows for writing of recursive-descent parsers in which the structure of the code performing the parsing mirrors the structure of the XML being parsed, and intermediate parsed results can be used and accessed as local variables within the methods performing the parsing, or passed down (as method parameters) into lower-level methods, or returned (as method return values) to higher-level methods. Examples of pull parsers include StAX in the Java programming language, XMLReader in PHP and System.Xml.XmlReader in the .NET Framework.</p>
<p>A pull parser creates an iterator that sequentially visits the various elements, attributes, and data in an XML document. Code which uses this iterator can test the current item (to tell, for example, whether it is a start or end element, or text), and inspect its attributes (local name, namespace, values of XML attributes, value of text, etc.), and can also move the iterator to the next item. The code can thus extract information from the document as it traverses it. The recursive-descent approach tends to lend itself to keeping data as typed local variables in the code doing the parsing, while SAX, for instance, typically requires a parser to manually maintain intermediate data within a stack of elements which are parent elements of the element being parsed. Pull-parsing code can be more straightforward to understand and maintain than SAX parsing code.</p>
<h3>Document Object Model</h3>
<p>The Document Object Model (DOM) is an interface-oriented application programming interface that allows for navigation of the entire document as if it were a tree of node objects representing the document&#8217;s contents. A DOM document can be created by a parser, or can be generated manually by users (with limitations). Data types in DOM nodes are abstract; implementations provide their own programming language-specific bindings. DOM implementations tend to be memory intensive, as they generally require the entire document to be loaded into memory and constructed as a tree of objects before access is allowed.</p>
<h3>Data binding</h3>
<p>Another form of XML processing API is XML data binding, where XML data are made available as a hierarchy of custom, strongly typed classes, in contrast to the generic objects created by a Document Object Model parser. This approach simplifies code development, and in many cases allows problems to be identified at compile time rather than run-time. Example data binding systems include the Java Architecture for XML Binding (JAXB) and XML Serialization in .NET.</p>
<h3>XML as data type</h3>
<p>XML is beginning to appear as a first-class data type in other languages. The ECMAScript for XML (E4X) extension to the ECMAScript/JavaScript language explicitly defines two specific objects (XML and XMLList) for JavaScript, which support XML document nodes and XML node lists as distinct objects and use a dot-notation specifying parent-child relationships. E4X is supported by the Mozilla 2.5+ browsers and Adobe Actionscript, but has not been adopted more universally. Similar notations are used in Microsoft&#8217;s LINQ implementation for Microsoft .NET 3.5 and above, and in Scala (which uses the Java VM). The open-source xmlsh application, which provides a Linux-like shell with special features for XML manipulation, similarly treats XML as a data type, using the &lt;[ ]&gt; notation. The Resource Description Framework defines a data type <code>rdf:XMLLiteral</code> to hold wrapped, canonical XML.</p>
<h3>History</h3>
<p>XML is an application profile of SGML (ISO 8879).</p>
<p>The versatility of SGML for dynamic information display was understood by early digital media publishers in the late 1980s prior to the rise of the Internet. By the mid-1990s some practitioners of SGML had gained experience with the then-new World Wide Web, and believed that SGML offered solutions to some of the problems the Web was likely to face as it grew. Dan Connolly added SGML to the list of W3C&#8217;s activities when he joined the staff in 1995; work began in mid-1996 when Sun Microsystems engineer Jon Bosak developed a charter and recruited collaborators. Bosak was well connected in the small community of people who had experience both in SGML and the Web.</p>
<p>XML was compiled by a working group of eleven members, supported by a (roughly) 150-member Interest Group. Technical debate took place on the Interest Group mailing list and issues were resolved by consensus or, when that failed, majority vote of the Working Group. A record of design decisions and their rationales was compiled by Michael Sperberg-McQueen on December 4, 1997. James Clark served as Technical Lead of the Working Group, notably contributing the empty-element &#8220;&lt;empty /&gt;&#8221; syntax and the name &#8220;XML&#8221;. Other names that had been put forward for consideration included &#8220;MAGMA&#8221; (Minimal Architecture for Generalized Markup Applications), &#8220;SLIM&#8221; (Structured Language for Internet Markup) and &#8220;MGML&#8221; (Minimal Generalized Markup Language). The co-editors of the specification were originally Tim Bray and Michael Sperberg-McQueen. Halfway through the project Bray accepted a consulting engagement with Netscape, provoking vociferous protests from Microsoft. Bray was temporarily asked to resign the editorship. This led to intense dispute in the Working Group, eventually solved by the appointment of Microsoft&#8217;s Jean Paoli as a third co-editor.</p>
<p>The XML Working Group never met face-to-face; the design was accomplished using a combination of email and weekly teleconferences. The major design decisions were reached in a short burst of intense work between August and November 1996, when the first Working Draft of an XML specification was published. Further design work continued through 1997, and XML 1.0 became a W3C Recommendation on February 10, 1998.</p>
<h3>Sources</h3>
<p><strong>XML</strong> is a profile of an ISO standard SGML, and most of XML comes from SGML unchanged. From SGML comes the separation of logical and physical structures (elements and entities), the availability of grammar-based validation (DTDs), the separation of data and metadata (elements and attributes), mixed content, the separation of processing from representation (processing instructions), and the default angle-bracket syntax. Removed were the SGML Declaration (XML has a fixed delimiter set and adopts Unicode as the document character set).</p>
<p>Other sources of technology for XML were the Text Encoding Initiative (TEI), which defined a profile of SGML for use as a &#8220;transfer syntax&#8221;; and HTML, in which elements were synchronous with their resource, document character sets were separate from resource encoding, the xml:lang attribute was invented, and (like HTTP) metadata accompanied the resource rather than being needed at the declaration of a link. The Extended Reference Concrete Syntax (ERCS) project of the SPREAD (Standardization Project Regarding East Asian Documents) project of the ISO-related China/Japan/Korea Document Processing expert group was the basis of XML 1.0&#8242;s naming rules; SPREAD also introduced hexadecimal numeric character references and the concept of references to make available all Unicode characters. To support ERCS, XML and HTML better, the SGML standard IS 8879 was revised in 1996 and 1998 with WebSGML Adaptations. The XML header followed that of ISO HyTime.</p>
<p>Ideas that developed during discussion which were novel in XML included the algorithm for encoding detection and the encoding header, the processing instruction target, the xml:space attribute, and the new close delimiter for empty-element tags. The notion of well-formedness as opposed to validity (which enables parsing without a schema) was first formalized in XML, although it had been implemented successfully in the Electronic Book Technology &#8220;Dynatext&#8221; software; the software from the University of Waterloo New Oxford English Dictionary Project; the RISP LISP SGML text processor at Uniscope, Tokyo; the US Army Missile Command IADS hypertext system; Mentor Graphics Context; Interleaf and Xerox Publishing System.</p>
<h3>Versions</h3>
<p>There are two current versions of XML. The first (<em>XML 1.0</em>) was initially defined in 1998. It has undergone minor revisions since then, without being given a new version number, and is currently in its fifth edition, as published on November 26, 2008. It is widely implemented and still recommended for general use.</p>
<p>The second (<em>XML 1.1</em>) was initially published on February 4, 2004, the same day as XML 1.0 Third Edition, and is currently in its second edition, as published on August 16, 2006. It contains features (some contentious) that are intended to make XML easier to use in certain cases. The main changes are to enable the use of line-ending characters used on EBCDIC platforms, and the use of scripts and characters absent from Unicode 3.2. XML 1.1 is not very widely implemented and is recommended for use only by those who need its unique features.</p>
<p>Prior to its fifth edition release, XML 1.0 differed from XML 1.1 in having stricter requirements for characters available for use in element and attribute names and unique identifiers: in the first four editions of XML 1.0 the characters were exclusively enumerated using a specific version of the Unicode standard (Unicode 2.0 to Unicode 3.2.) The fifth edition substitutes the mechanism of XML 1.1, which is more future-proof but reduces redundancy. The approach taken in the fifth edition of XML 1.0 and in all editions of XML 1.1 is that only certain characters are forbidden in names, and everything else is allowed, in order to accommodate the use of suitable name characters in future versions of Unicode. In the fifth edition, XML names may contain characters in the Balinese, Cham, or Phoenician scripts among many others which have been added to Unicode since Unicode 3.2.</p>
<p>Almost any Unicode code point can be used in the character data and attribute values of an XML 1.0 or 1.1 document, even if the character corresponding to the code point is not defined in the current version of Unicode. In character data and attribute values, XML 1.1 allows the use of more control characters than XML 1.0, but, for &#8220;robustness&#8221;, most of the control characters introduced in XML 1.1 must be expressed as numeric character references (and #x7F through #x9F, which had been allowed in XML 1.0, are in XML 1.1 even required to be expressed as numeric character references). Among the supported control characters in XML 1.1 are two line break codes that must be treated as whitespace. Whitespace characters are the only control codes that can be written directly.</p>
<p>There has been discussion of an XML 2.0, although no organization has announced plans for work on such a project. XML-SW (SW for skunkworks), written by one of the original developers of XML, contains some proposals for what an XML 2.0 might look like: elimination of DTDs from syntax, integration of namespaces, XML Base and XML Information Set (<em>infoset</em>) into the base standard.</p>
<p>The World Wide Web Consortium also has an XML Binary Characterization Working Group doing preliminary research into use cases and properties for a binary encoding of the XML infoset. The working group is not chartered to produce any official standards. Since XML is by definition text-based, ITU-T and ISO are using the name <em>Fast Infoset</em> for their own binary infoset to avoid confusion (see ITU-T Rec. X.891 | ISO/IEC 24824-1).</p>
<h3>Criticism</h3>
<p>XML and its extensions have regularly been criticized for verbosity and complexity. Mapping the basic tree model of XML to type systems of programming languages or databases can be difficult, especially when XML is used for exchanging highly structured data between applications, which was not its primary design goal. Other criticisms attempt to refute the claim that XML is a self-describing language (though the XML specification itself makes no such claim). JSON and YAML are frequently proposed as alternatives; both focus on representing structured data, rather than narrative documents.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypernetstudio.com/2012/04/12/xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS</title>
		<link>http://www.hypernetstudio.com/2012/04/12/css/</link>
		<comments>http://www.hypernetstudio.com/2012/04/12/css/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 13:11:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Cascading]]></category>
		<category><![CDATA[general]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[Sheets]]></category>
		<category><![CDATA[Style]]></category>

		<guid isPermaLink="false">http://www.hypernetstudio.com/?p=66</guid>
		<description><![CDATA[Cascading Style Sheets (CSS) is a style sheet language used for describing the presentation semantics (the look and formatting) of a document written in a markup language. Its most common application is to style web pages written in HTML and XHTML, but the language can also be applied to any kind of XML document, including]]></description>
			<content:encoded><![CDATA[<p><strong>Cascading Style Sheets</strong> (<strong>CSS</strong>) is a style sheet language used for describing the presentation semantics (the look and formatting) of a document written in a markup language. Its most common application is to style web pages written in HTML and XHTML, but the language can also be applied to any kind of XML document, including plain XML, SVG and XUL.</p>
<p>CSS is designed primarily to enable the separation of document content (written in HTML or a similar markup language) from document presentation, including elements such as the layout, colors, and fonts. This separation can improve content accessibility, provide more flexibility and control in the specification of presentation characteristics, enable multiple pages to share formatting, and reduce complexity and repetition in the structural content (such as by allowing for tableless web design). CSS can also allow the same markup page to be presented in different styles for different rendering methods, such as on-screen, in print, by voice (when read out by a speech-based browser or screen reader) and on Braille-based, tactile devices. It can also be used to allow the web page to display differently depending on the screen size or device on which it is being viewed. While the author of a document typically links that document to a CSS style sheet, readers can use a different style sheet, perhaps one on their own computer, to override the one the author has specified.</p>
<p>CSS specifies a priority scheme to determine which style rules apply if more than one rule matches against a particular element. In this so-called <em>cascade</em>, priorities or <em>weights</em> are calculated and assigned to rules, so that the results are predictable.</p>
<p>The CSS specifications are maintained by the World Wide Web Consortium (W3C). Internet media type (MIME type) <code>text/css</code> is registered for use with CSS by RFC 2318 (March 1998).</p>
<h3>Syntax</h3>
<p>CSS has a simple syntax and uses a number of English keywords to specify the names of various style properties.</p>
<p>A style sheet consists of a list of <em>rules</em>. Each rule or rule-set consists of one or more <em>selectors</em> and a <em>declaration block</em>. A declaration-block consists of a list of <em>declarations</em> in braces. Each declaration itself consists of a <em>property</em>, a colon (<code>:</code>), and a <em>value</em>. If there are multiple declarations in a block, a semi-colon (<code>;</code>) must be inserted to separate each declaration.</p>
<p>In CSS, <em>selectors</em> are used to declare which of the markup elements a style applies to, a kind of match expression. Selectors may apply to all elements of a specific type, or only those elements that match a certain attribute; elements may be matched depending on how they are placed relative to each other in the markup code, or on how they are nested within the Document Object Model.</p>
<p><em>Pseudo-classes</em> are another form of specification used in CSS to identify markup elements, and in some cases, specific user actions to which a particular declaration block applies. An often-used example of a pseudo-class is <code>:hover</code>, which applies a style only when the user &#8216;points to&#8217; the visible element, usually by holding the mouse cursor over it. It is appended to a selector as in <code>a:hover</code> or <code>#elementid:hover</code>. Other pseudo-classes and <em>pseudo-elements</em> are, for example, <code>:first-line</code>, <code>:visited</code> or <code>:before</code>. A special pseudo-class is <code>:lang(c)</code>, &#8220;c&#8221;.<sup><em><br />
</em></sup></p>
<p>A <em>pseudo-class</em> selects entire elements, such as <code>:link</code> or <code>:visited</code>, whereas a <em>pseudo-element</em> makes a selection that may consist of partial elements, such as <code>:first-line</code> or <code>:first-letter</code>.</p>
<p>Selectors may be combined in other ways too, especially in CSS 2.1, to achieve greater specificity and flexibility.</p>
<p>Here is an example summing up the rules above:</p>
<div dir="ltr">
<div>
<pre>selector [, selector2, ...] [:pseudo-class] {
 property: value;
 [property2: value2;
 ...]
}
/* comment */</pre>
</div>
</div>
<h3>Use</h3>
<p>Prior to CSS, nearly all of the presentational attributes of HTML documents were contained within the HTML markup; all font colors, background styles, element alignments, borders and sizes had to be explicitly described, often repeatedly, within the HTML. CSS allows authors to move much of that information to another file, called a style sheet, resulting in considerably simpler HTML.</p>
<p>Headings (<code>h1</code> elements), sub-headings (<code>h2</code>), sub-sub-headings (<code>h3</code>), etc., are defined structurally using HTML. In print and on the screen, choice of font, size, color and emphasis for these elements is <em>presentational</em>.</p>
<p>Prior to CSS, document authors who wanted to assign such typographic characteristics to, say, all <code>h2</code> headings had to use the HTML <code>font</code> and other presentational elements for each occurrence of that heading type. The additional presentational markup in the HTML made documents more complex, and generally more difficult to maintain. In CSS, presentation is separated from structure. In print, CSS can define color, font, text alignment, size, borders, spacing, layout and many other typographic characteristics. It can do so independently for on-screen and printed views. CSS also defines non-visual styles such as the speed and emphasis with which text is read out by aural text readers. The W3C now considers the advantages of CSS for defining all aspects of the presentation of HTML pages to be superior to other methods. It has therefore deprecated the use of all the original presentational HTML markup.</p>
<p>CSS files are inserted into HTML documents using the following syntax:</p>
<div dir="ltr">
<div>
<pre>&lt;link rel="stylesheet" href="http://example.com/css/style.css" type="text/css" /&gt;</pre>
</div>
</div>
<h3>Sources</h3>
<p>CSS information can be provided by various sources. CSS style information can be either attached as a separate document or embedded in the HTML document. Multiple style sheets can be imported. Different styles can be applied depending on the output device being used; for example, the screen version can be quite different from the printed version, so that authors can tailor the presentation appropriately for each medium.</p>
<p>Priority scheme for CSS sources (from highest to lowest priority):</p>
<ul>
<li>Author styles (provided by the web page author), in the form of:
<ul>
<li><strong>Inline styles</strong>, inside the HTML document, style information on a single element, specified using the &#8220;style&#8221; attribute</li>
<li><strong>Embedded style</strong>, blocks of CSS information inside the HTML itself</li>
<li><strong>External style sheets</strong>, i.e., a separate CSS file referenced from the document</li>
</ul>
</li>
<li>User style:
<ul>
<li>A local CSS file the user specifies with a browser option, which acts as an override applied to all documents</li>
</ul>
</li>
<li>User agentstyle
<ul>
<li>Default styles applied by the user agent, i.e., the browser&#8217;s default settings for element presentation</li>
</ul>
</li>
</ul>
<p>The style sheet with the highest priority controls the content display. Declarations not set in the highest priority source are passed on to a source of lower priority, such as the user agent style. This process is called <em>cascading</em>.</p>
<p>One of the goals of CSS is also to allow <em>users</em> greater control over presentation. Someone who finds red italic headings difficult to read may apply a different style sheet. Depending on the browser and the web site, a user may choose from various style sheets provided by the designers, or may remove all added styles and view the site using the browser&#8217;s default styling, or may override just the red italic heading style without altering other attributes.</p>
<p>File <tt>highlightheaders.css</tt> containing:</p>
<div dir="ltr">
<div>
<pre>h1 { color: white; background-color: orange !important; }
h2 { color: white; background-color: green !important; }</pre>
</div>
</div>
<h3>History</h3>
<p>Style sheets have existed in one form or another since the beginnings of SGML in the 1980s. Cascading Style Sheets were developed as a means for creating a consistent approach to providing style information for web documents.</p>
<p>As HTML grew, it came to encompass a wider variety of stylistic capabilities to meet the demands of web developers. This evolution gave the designer more control over site appearance, at the cost of more complex HTML. Variations in web browser implementations, such as ViolaWWW and WorldWideWeb,<sup id="cite_ref-IEEE_3-0">[4]</sup> made consistent site appearance difficult, and users had less control over how web content was displayed. Robert Cailliau wanted to separate the structure from the presentation. The ideal way would be to give the user different options and transferring three different kinds of style sheets: one for printing, one for the presentation on the screen and one for the editor feature.</p>
<p>To improve web presentation capabilities, nine different style sheet languages were proposed to the World Wide Web Consortium&#8217;s (W3C) www-style mailing list. Of the nine proposals, two were chosen as the foundation for what became CSS: Cascading HTML Style Sheets (CHSS) and Stream-based Style Sheet Proposal (SSP). CHSS, a language that has some resemblance to today&#8217;s CSS, was proposed by Håkon Wium Lie in October 1994. Bert Bos was working on a browser called Argo, which used its own style sheet language called SSP.<sup id="cite_ref-WWW3_4-0">[5]</sup> Lie and Yves Lafon joined Dave Raggett to expand the Arena browser for supporting CSS as a testbed application for the W3C.<sup id="cite_ref-5">[6]</sup><sup id="cite_ref-6">[7]</sup><sup id="cite_ref-7">[8]</sup> Lie and Bos worked together to develop the CSS standard (the &#8216;H&#8217; was removed from the name because these style sheets could also be applied to other markup languages besides HTML).</p>
<p>Unlike existing style languages like DSSSL and FOSI, CSS allowed a document&#8217;s style to be influenced by multiple style sheets. One style sheet could inherit or &#8220;cascade&#8221; from another, permitting a mixture of stylistic preferences controlled equally by the site designer and user.</p>
<p>Lie&#8217;s proposal was presented at the &#8220;Mosaic and the Web&#8221; conference (later called WWW2) in Chicago, Illinois in 1994, and again with Bert Bos in 1995. Around this time the W3C was already being established, and took an interest in the development of CSS. It organized a workshop toward that end chaired by Steven Pemberton. This resulted in W3C adding work on CSS to the deliverables of the HTML editorial review board (ERB). Lie and Bos were the primary technical staff on this aspect of the project, with additional members, including Thomas Reardon of Microsoft, participating as well. In August 1996 Netscape Communication Corporation presented an alternative style sheet language called JavaScript Style Sheets (JSSS). The spec was never finished and is deprecated. By the end of 1996, CSS was ready to become official, and the CSS level 1 Recommendation was published in December.</p>
<p>Development of HTML, CSS, and the DOM had all been taking place in one group, the HTML Editorial Review Board (ERB). Early in 1997, the ERB was split into three working groups: HTML Working group, chaired by Dan Connolly of W3C; DOM Working group, chaired by Lauren Wood of SoftQuad; and CSS Working group, chaired by Chris Lilley of W3C.</p>
<p>The CSS Working Group began tackling issues that had not been addressed with CSS level 1, resulting in the creation of CSS level 2 on November 4, 1997. It was published as a W3C Recommendation on May 12, 1998. CSS level 3, which was started in 1998, is still under development as of 2009.</p>
<p>In 2005 the CSS Working Groups decided to enforce the requirements for standards more strictly. This meant that already published standards like CSS 2.1, CSS 3 Selectors and CSS 3 Text were pulled back from Candidate Recommendation to Working Draft level.</p>
<h3>Difficulty with adoption</h3>
<p>The CSS 1 specification was completed in 1996. Microsoft&#8217;s Internet Explorer 3 was released in that year, featuring some limited support for CSS. But it was more than three years before any web browser achieved near-full implementation of the specification. Internet Explorer 5.0 for the Macintosh, shipped in March 2000, was the first browser to have full (better than 99 percent) CSS 1 support, surpassing Opera, which had been the leader since its introduction of CSS support 15 months earlier. Other browsers followed soon afterwards, and many of them additionally implemented parts of CSS 2. As of August 2010, no (finished) browser has fully implemented CSS 2, with implementation levels varying (see Comparison of layout engines (CSS)).</p>
<p>Even though early browsers such as Internet Explorer 3<sup id="cite_ref-chapter20_8-4">[9]</sup> and 4, and Netscape 4.x had support for CSS, it was typically incomplete and had serious bugs. This was a serious obstacle for the adoption of CSS.</p>
<p>When later &#8216;version 5&#8242; browsers began to offer a fairly full implementation of CSS, they were still incorrect in certain areas and were fraught with inconsistencies, bugs and other quirks. The proliferation of such CSS-related inconsistencies and even the variation in feature support has made it difficult for designers to achieve a consistent appearance across browsers and platforms. Some authors resorted to workarounds such as CSS hacks and CSS filters.</p>
<p>Problems with browsers&#8217; patchy adoption of CSS, along with errata in the original specification, led the W3C to revise the CSS 2 standard into CSS 2.1, which moved nearer to a working snapshot of current CSS support in HTML browsers. Some CSS 2 properties that no browser successfully implemented were dropped, and in a few cases, defined behaviors were changed to bring the standard into line with the predominant existing implementations. CSS 2.1 became a Candidate Recommendation on February 25, 2004, but CSS 2.1 was pulled back to Working Draft status on June 13, 2005, and only returned to Candidate Recommendation status on July 19, 2007.</p>
<p>In the past, some web servers were configured to serve all documents with the filename extension <code>.css</code> as mime type <code>application/x-pointplus</code> rather than <code>text/css</code>. At the time, the Net-Scene company was selling PointPlus Maker to convert PowerPoint files into Compact Slide Show files (using a <code>.css</code> extension).</p>
<h3>Variations</h3>
<p>CSS has various levels and profiles. Each level of CSS builds upon the last, typically adding new features and typically denoted as CSS1, CSS2, CSS3, and CSS4. Profiles are typically a subset of one or more levels of CSS built for a particular device or user interface. Currently there are profiles for mobile devices, printers, and television sets. Profiles should not be confused with media types, which were added in CSS2.</p>
<h4>CSS1</h4>
<p>The first CSS specification to become an official W3C Recommendation is CSS level 1, published in December 1996.Among its capabilities are support for</p>
<ul>
<li>Font properties such as typeface and emphasis</li>
<li>Color of text, backgrounds, and other elements</li>
<li>Text attributes such as spacing between words, letters, and lines of text</li>
<li>Alignment of text, images, tables and other elements</li>
<li>Margin, border, padding, and positioning for most elements</li>
<li>Unique identification and generic classification of groups of attributes</li>
</ul>
<p>The W3C no longer maintains the CSS1 Recommendation.</p>
<h4>CSS2</h4>
<p>CSS level 2 specification was developed by the W3C and published as a Recommendation in May 1998. A superset of CSS1, CSS2 includes a number of new capabilities like absolute, relative, and fixed positioning of elements and z-index, the concept of media types, support for aural style sheets and bidirectional text, and new font properties such as shadows.</p>
<p>The W3C no longer maintains the CSS2 recommendation.</p>
<h4>CSS 2.1</h4>
<p>CSS level 2 revision 1, often referred to as &#8220;CSS 2.1&#8243;, fixes errors in CSS2, removes poorly-supported or not fully interoperable features and adds already-implemented browser extensions to the specification. In order to comply with the W3C Process for standardizing technical specifications, CSS 2.1 went back and forth between Working Draft status and Candidate Recommendation status for many years. CSS 2.1 first became a Candidate Recommendation on February 25, 2004, but it was reverted to a Working Draft on June 13, 2005 for further review. It returned to Candidate Recommendation on 19 July 2007 and then updated twice in 2009. However, since changes and clarifications were made, it again went back to Last Call Working Draft on 7 December 2010.</p>
<p>CSS 2.1 went to Proposed Recommendation on 12 April 2011. After being reviewed by the W3C Advisory Committee, it was finally published as a W3C Recommendation on 7 June 2011.<br />
Only Internet Explorer 8 supports the full CSS 2.1 spec.</p>
<h4>CSS3</h4>
<div>&#8220;CSS3&#8243; redirects here. For airport code <em>CSS3</em>, see Montréal/Les Cèdres Airport.</div>
<p>Unlike CSS2, which is a large single specification defining various features, CSS3 is divided into several separate documents called &#8220;modules&#8221;. Each module adds new capabilities or extends features defined in CSS2, over preserving backward compatibility. Work on CSS level 3 started around the time of publication of the original CSS2 recommendation. The earliest CSS3 drafts were published in June 1999.</p>
<p>Due to the modularization, different modules have different stability and statuses. As of November 2011, there are over fifty CSS modules published from the CSS Working Group. Three of them―Selectors Level 3, Namespaces and Color― became W3C Recommendations in 2011.</p>
<p>Some modules (including Backgrounds and Borders, Media Queries, and Multi-column Layout among others) have <em>Candidate Recommendation</em> (<em>CR</em>) status and are considered moderately stable. At <em>CR</em> stage, implementations are advised to drop vendor prefixes.</p>
<h4>CSS4</h4>
<p>W3C started drafting CSS4 on Sep 29, 2009. However, it is currently not supported by any web browser.</p>
<p>One of the new proposed selectors is <code>:matches()</code>. For which</p>
<div dir="ltr">
<div>
<pre>:matches(div, p, nav) span{
    font-size: 18px;
}</pre>
</div>
</div>
<p>is the same as:</p>
<div dir="ltr">
<div>
<pre>div span, p span, nav span{
    font-size: 18px;
}</pre>
</div>
</div>
<p>Although Firefox and Webkit already have similar functions:</p>
<div dir="ltr">
<div>
<pre>/*Firefox*/
-moz-any(div, p, nav) span{
  font-size: 18px;
}
/*Webkit*/
-webkit-any(div, p, nav) span{
  font-size: 18px;
}</pre>
</div>
</div>
<p>Another interesting and especially very usable way are <strong>reference combinators</strong>. Those allow you to select elements that are referenced by ID by another element, like an form element. The attendant label reference is the &#8220;for attribute&#8221;. You can define a reference combinator by the attribute with forward slashes (/). In case of an input element you wanted to style different (from grey to blue) when you hover its label, you could use the selector label:hover /for/ input. &lt;/ref&gt;</p>
<div dir="ltr">
<div>
<pre>label:hover /for/ input {
  border-color:blue;
}</pre>
</div>
</div>
<h3>Browser support</h3>
<div>Further information: Comparison of layout engines (Cascading Style Sheets)</div>
<p>Because not all browsers correctly parse CSS code, developed coding techniques known as CSS hacks can either filter specific browsers or target specific browsers (generally both are known as CSS filters). The former can be defined as CSS filtering hacks and the latter can be defined as CSS targeting hacks. Both can be used to hide or show parts of the CSS to different browsers. This is achieved either by exploiting CSS-handling quirks or bugs in the browser, or by taking advantage of lack of support for parts of the CSS specifications.<sup id="cite_ref-28">[29]</sup> Using CSS filters, some designers have gone as far as delivering different CSS to certain browsers to ensure designs render as expected. Because very early web browsers were either completely incapable of handling CSS, or rendered CSS very poorly, designers today often routinely use CSS filters that completely prevent these browsers from accessing any of the CSS. Internet Explorer support for CSS began with IE 3.0 and increased progressively with each version. By 2008, the first Beta of Internet Explorer 8 offered support for CSS 2.1 in its best web standards mode.</p>
<p>An example of a well-known CSS browser bug is the Internet Explorer box model bug, where box widths are interpreted incorrectly in several versions of the browser, resulting in blocks that are too narrow when viewed in Internet Explorer, but correct in standards-compliant browsers. The bug can be avoided in Internet Explorer 6 by using the correct doctype in (X)HTML documents. CSS hacks and CSS filters are used to compensate for bugs such as this, just one of hundreds of CSS bugs that have been documented in various versions of Netscape, Mozilla Firefox, Opera, and Internet Explorer (including Internet Explorer 7).</p>
<p>Even when the availability of CSS-capable browsers made CSS a viable technology, the adoption of CSS was still held back by designers&#8217; struggles with browsers&#8217; incorrect CSS implementation and patchy CSS support. Even today, these problems continue to make the business of CSS design more complex and costly than it was intended to be, and cross-browser testing remains a necessity. Other reasons for the continuing non-adoption of CSS are: its perceived complexity, authors&#8217; lack of familiarity with CSS syntax and required techniques, poor support from authoring tools, the risks posed by inconsistency between browsers and the increased costs of testing.</p>
<p>Currently there is strong competition between Mozilla&#8217;s Gecko layout engine used in Firefox, the WebKit layout engine used in Apple Safari and Google Chrome, the similar KHTML engine used in KDE&#8217;s Konqueror browser, and Opera&#8217;s Presto layout engine—each of them is leading in different aspects of CSS.As of August 2009, Internet Explorer 8, Firefox 2 and 3 have reasonably complete levels of implementation of CSS 2.1.</p>
<h3>Limitations</h3>
<p>Some noted limitations of the current capabilities of CSS include:</p>
<dl>
<dt>Poor controls for flexible layouts </dt>
<dd>While new additions to CSS 3 provide a stronger, more robust feature-set for layout, CSS is still at heart a styling language (for fonts, colours, borders and other decoration), not a layout language (for blocks with positions, sizes, margins, and so on). These limitations mean that creating fluid layouts generally requires hand-coding of CSS, and has held back the development of a standards-based WYSIWYG editor.</dd>
<dt>Selectors are unable to ascend</dt>
<dd>CSS offers no way to select a parent or ancestor of an element that satisfies certain criteria. A more advanced selector scheme (such as XPath) would enable more sophisticated style sheets. However, the major reasons for the CSS Working Group rejecting proposals for parent selectors are related to browser performance and incremental rendering issues.</dd>
<dt>Vertical control limitations </dt>
<dd>While horizontal placement of elements is generally easy to control, vertical placement is frequently unintuitive, convoluted, or impossible. Simple tasks, such as centering an element vertically or getting a footer to be placed no higher than bottom of viewport, either require complicated and unintuitive style rules, or simple but widely unsupported rules.</dd>
<dt>Absence of expressions </dt>
<dd>There is currently no ability to specify property values as simple expressions (such as <code>margin-left: 10% – 3em + 4px;</code>). This would be useful in a variety of cases, such as calculating the size of columns subject to a constraint on the sum of all columns. However, a working draft with a calc() value to address this limitation has been published by the CSS WG. Internet Explorer versions 5 to 7 support a proprietary expression() statement, with similar functionality. This proprietary expression() statement is no longer supported from Internet Explorer 8 onwards, except in compatibility modes. This decision was taken for &#8220;standards compliance, browser performance, and security reasons&#8221;.</dd>
<dt>Lack of column declaration </dt>
<dd>While possible in current CSS 3 (using the <code>column-count</code> module), layouts with multiple columns can be complex to implement in CSS 2.1. With CSS 2.1, the process is often done using floating elements, which are often rendered differently by different browsers, different computer screen shapes, and different screen ratios set on standard monitors.</dd>
<dt>Cannot explicitly declare new scope independently of position </dt>
<dd>Scoping rules for properties such as z-index look for the closest parent element with a position:absolute or position:relative attribute. This odd coupling has undesired effects. For example, it is impossible to avoid declaring a new scope when one is forced to adjust an element&#8217;s position, preventing one from using the desired scope of a parent element.</dd>
<dt>Pseudo-class dynamic behavior not controllable </dt>
<dd>CSS implements pseudo-classes that allow a degree of user feedback by conditional application of alternate styles. One CSS pseudo-class, &#8220;:hover&#8221;, is dynamic (equivalent of javascript &#8220;onmouseover&#8221;) and has potential for abuse (e.g., implementing cursor-proximity popups), but CSS has no ability for a client to disable it (no &#8220;disable&#8221;-like property) or limit its effects (no &#8220;nochange&#8221;-like values for each property).</dd>
</dl>
<h3>Advantages</h3>
<dl>
<dt>Separation of content from presentation</dt>
<dd>CSS facilitates publication of content in multiple presentation formats based on nominal parameters. Nominal parameters include explicit user preferences, different web browsers, the type of device being used to view the content (a desktop computer or mobile Internet device), the geographic location of the user and many other variables.</dd>
<dt>Site-wide consistency</dt>
<dd>
<div>Main articles: Separation of presentation and content and Style sheet (web development)</div>
<p>When CSS is used effectively, in terms of inheritance and &#8220;cascading,&#8221; a global style sheet can be used to affect and style elements site-wide. If the situation arises that the styling of the elements should need to be changed or adjusted, these changes can be made by editing rules in the global style sheet. Before CSS, this sort of maintenance was more difficult, expensive and time-consuming.</p>
</dd>
<dt>Bandwidth</dt>
<dd>A stylesheet, internal or external, will specify the style once for a range of HTML elements selected by <code>class</code>, type or relationship to others. This is much more efficient than repeating style information inline for each occurrence of the element. An external stylesheet is usually stored in the browser cache, and can therefore be used on multiple pages without being reloaded, further reducing data transfer over a network.</dd>
<dt>Page reformatting</dt>
<dd>
<div>Main article: Progressive enhancement</div>
<p>With a simple change of one line, a different style sheet can be used for the same page. This has advantages for accessibility, as well as providing the ability to tailor a page or site to different target devices. Furthermore, devices not able to understand the styling still display the content.</p>
</dd>
<dt>Accessibility</dt>
<dd>Without CSS, web designers must typically lay out their pages with techniques that hinder accessibility for vision-impaired users, like HTML tables (see Tableless web design#Accessibility).</dd>
</dl>
<h3>CSS frameworks</h3>
<p>CSS frameworks are pre-prepared libraries that are meant to allow for easier, more standards-compliant styling of web pages using the Cascading Style Sheets language. Layout-grid-related CSS frameworks include Blueprint, 960 grid, and YUI CSS grids. Like programming and scripting language libraries, CSS frameworks are usually incorporated as external .css sheets referenced in the HTML <code>&lt;head&gt;</code>. They provide a number of ready-made options for designing and laying out the web page. While many of these frameworks have been published, some authors use them mostly for rapid prototyping, or for learning from, and prefer to &#8216;handcraft&#8217; CSS that is appropriate to each published site without the design, maintenance and download overhead of having many unused features in the site&#8217;s styling.</p>
<h3>Positioning</h3>
<p>CSS 2.1 defines three positioning schemes:</p>
<dl>
<dt>Normal flow</dt>
<dd><em>Inline</em> items are laid out in the same way as the letters in words in text, one after the other across the available space until there is no more room, then starting a new line below. <em>Block</em> items stack vertically, like paragraphs and like the items in a bulleted list. Normal flow also includes relative positioning of block or inline items, and run-in boxes.</dd>
<dt>Floats</dt>
<dd>A floated item is taken out of the normal flow and shifted to the left or right as far as possible in the space available. Other content then flows alongside the floated item.</dd>
<dt>Absolute positioning</dt>
<dd>An absolutely positioned item has no place in, and no effect on, the normal flow of other items. It occupies its assigned position in its container independently of other items.</dd>
</dl>
<h3>Position: top, bottom, left, and right</h3>
<p>There are four possible values of the <code>position</code> property. If an item is positioned in any way other than <code>static</code>, then the further properties <code>top</code>, <code>bottom</code>, <code>left</code>, and <code>right</code> are used to specify offsets and positions.</p>
<dl>
<dt>Static</dt>
<dd>The default value places the item in the <em>normal flow</em></dd>
<dt>Relative</dt>
<dd>The item is placed in the <em>normal flow</em>, and then shifted or offset from that position. Subsequent flow items are laid out as if the item had not been moved.</dd>
<dt>Absolute</dt>
<dd>Specifies <em>absolute positioning</em></dd>
<dt>Fixed</dt>
<dd>The item is <em>absolutely positioned</em> in a fixed position on the screen even as the rest of the document is scrolled</dd>
</dl>
<h3>Float and clear</h3>
<p>The <code>float</code> property may have one of three values. <em>Absolutely</em> positioned or <em>fixed</em> items cannot be floated. Other elements normally flow around floated items, unless they are prevented from doing so by their <code>clear</code> property.</p>
<dl>
<dt>left</dt>
<dd><em>Floats</em> to the left of the line that it would have appeared in; other items may flow around its right side</dd>
<dt>right</dt>
<dd><em>Floats</em> to the right of the line that it would have appeared in; other items may flow around its left side</dd>
<dt>clear</dt>
<dd>Removes the <em>float</em> property from an item. It can be <code>clear:left</code>;, <code>clear:right;</code> or <code>clear:both;</code></dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://www.hypernetstudio.com/2012/04/12/css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML</title>
		<link>http://www.hypernetstudio.com/2012/04/12/html/</link>
		<comments>http://www.hypernetstudio.com/2012/04/12/html/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 12:08:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[general]]></category>
		<category><![CDATA[Hypertext]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[tags]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.hypernetstudio.com/?p=59</guid>
		<description><![CDATA[HyperText Markup Language (HTML) is the main markup language for web pages. HTML elements are the basic building-blocks of webpages. HTML is written in the form of HTML elements consisting of tags enclosed in angle brackets (like &#60;html&#62;), within the web page content. HTML tags most commonly come in pairs like &#60;h1&#62; and &#60;/h1&#62;, although]]></description>
			<content:encoded><![CDATA[<p><strong>HyperText Markup Language</strong> (<strong>HTML</strong>) is the main markup language for web pages. HTML elements are the basic building-blocks of webpages.</p>
<p>HTML is written in the form of HTML elements consisting of <em>tags</em> enclosed in angle brackets (like <code>&lt;html&gt;</code>), within the web page content. HTML tags most commonly come in pairs like <code>&lt;h1&gt;</code> and <code>&lt;/h1&gt;</code>, although some tags, known as <em>empty elements</em>, are unpaired, for example <code>&lt;img&gt;</code>. The first tag in a pair is the <em>start tag</em>, the second tag is the <em>end tag</em> (they are also called <em>opening tags</em> and <em>closing tags</em>). In between these tags web designers can add text, tags, comments and other types of text-based content.</p>
<p>The purpose of a web browser is to read HTML documents and compose them into visible or audible web pages. The browser does not display the HTML tags, but uses the tags to interpret the content of the page.</p>
<p>HTML elements form the building blocks of all websites. HTML allows images and objects to be embedded and can be used to create interactive forms. It provides a means to create structured documents by denoting structural semantics for text such as headings, paragraphs, lists, links, quotes and other items. It can embed scripts in languages such as JavaScript which affect the behavior of HTML webpages.</p>
<p>Web browsers can also refer to Cascading Style Sheets (CSS) to define the appearance and layout of text and other material. The W3C, maintainer of both the HTML and the CSS standards, encourages the use of CSS over explicitly presentational HTML markup.</p>
<h3>Origins</h3>
<p>In 1980, physicist Tim Berners-Lee, who was a contractor at CERN, proposed and prototyped ENQUIRE, a system for CERN researchers to use and share documents. In 1989, Berners-Lee wrote a memo proposing an Internet-based hypertext system. Berners-Lee specified HTML and wrote the browser and server software in the last part of 1990. In that year, Berners-Lee and CERN data systems engineer Robert Cailliau collaborated on a joint request for funding, but the project was not formally adopted by CERN. In his personal notes from 1990 he lists &#8220;some of the many areas in which hypertext is used&#8221; and puts an encyclopedia first.</p>
<h3>First specifications</h3>
<p>The first publicly available description of HTML was a document called &#8220;HTML Tags&#8221;, first mentioned on the Internet by Berners-Lee in late 1991. It describes 18 elements comprising the initial, relatively simple design of HTML. Except for the hyperlink tag, these were strongly influenced by SGMLguid, an in-house SGML based documentation format at CERN. Eleven of these elements still exist in HTML 4.</p>
<p>Hypertext markup language is a markup language that web browsers use to interpret and compose text, images and other material into visual or audible web pages. Default characteristics for every item of HTML markup are defined in the browser, and these characteristics can be altered or enhanced by the web page designer&#8217;s additional use of CSS. Many of the text elements are found in the 1988 ISO technical report TR 9537 <em>Techniques for using SGML</em>, which in turn covers the features of early text formatting languages such as that used by the RUNOFF command developed in the early 1960s for the CTSS (Compatible Time-Sharing System) operating system: these formatting commands were derived from the commands used by typesetters to manually format documents. However, the SGML concept of generalized markup is based on elements (nested annotated ranges with attributes) rather than merely print effects, with also the separation of structure and processing; HTML has been progressively moved in this direction with CSS.</p>
<p>Berners-Lee considered HTML to be an application of SGML. It was formally defined as such by the Internet Engineering Task Force (IETF) with the mid-1993 publication of the first proposal for an HTML specification: &#8220;Hypertext Markup Language (HTML)&#8221; Internet-Draft by Berners-Lee and Dan Connolly, which included an SGML Document Type Definition to define the grammar. The draft expired after six months, but was notable for its acknowledgement of the NCSA Mosaic browser&#8217;s custom tag for embedding in-line images, reflecting the IETF&#8217;s philosophy of basing standards on successful prototypes. Similarly, Dave Raggett&#8217;s competing Internet-Draft, &#8220;HTML+ (Hypertext Markup Format)&#8221;, from late 1993, suggested standardizing already-implemented features like tables and fill-out forms.</p>
<p>After the HTML and HTML+ drafts expired in early 1994, the IETF created an HTML Working Group, which in 1995 completed &#8220;HTML 2.0&#8243;, the first HTML specification intended to be treated as a standard against which future implementations should be based. Published as Request for Comments 1866, HTML 2.0 included ideas from the HTML and HTML+ drafts. The 2.0 designation was intended to distinguish the new edition from previous drafts.</p>
<p>Further development under the auspices of the IETF was stalled by competing interests. Since 1996, the HTML specifications have been maintained, with input from commercial software vendors, by the World Wide Web Consortium (W3C). However, in 2000, HTML also became an international standard (ISO/IEC 15445:2000). HTML 4.01 was published in late 1999, with further errata published through 2001. In 2004 development began on HTML5 in the Web Hypertext Application Technology Working Group (WHATWG), which became a joint deliverable with the W3C in 2008.</p>
<h3>Version history of the standard</h3>
<h4>HTML version timeline</h4>
<dl>
<dt>November 24, 1995</dt>
<dd>HTML 2.0 was published as IETF RFC 1866. Supplemental RFCsadded capabilities:</p>
<ul>
<li>November 25, 1995: RFC 1867 (form-based file upload)</li>
<li>May 1996: RFC 1942 (tables)</li>
<li>August 1996: RFC 1980 (client-side image maps)</li>
<li>January 1997: RFC 2070 (internationalization)</li>
</ul>
</dd>
</dl>
<dl>
<dt>January 1997</dt>
<dd>HTML 3.2 was published as a W3C Recommendation. It was the first version developed and standardized exclusively by the W3C, as the IETF had closed its HTML Working Group in September 1996.</dd>
<dd>HTML 3.2 dropped math formulas entirely, reconciled overlap among various proprietary extensions and adopted most of Netscape&#8217;s visual markup tags. Netscape&#8217;s blink element and Microsoft&#8217;s marquee element were omitted due to a mutual agreement between the two companies. A markup for mathematical formulas similar to that in HTML was not standardized until 14 months later in MathML.</dd>
<dt>December 1997</dt>
<dd>HTML 4.0was published as a W3C Recommendation. It offers three variations:</p>
<ul>
<li>Strict, in which deprecated elements are forbidden,</li>
<li>Transitional, in which deprecated elements are allowed,</li>
<li>Frameset, in which mostly only frame related elements are allowed;</li>
</ul>
</dd>
<dd>Initially code-named &#8220;Cougar&#8221;, HTML 4.0 adopted many browser-specific element types and attributes, but at the same time sought to phase out Netscape&#8217;s visual markup features by marking them as deprecated in favor of style sheets. HTML 4 is an SGML application conforming to ISO 8879 – SGML.</dd>
<dt>April 1998</dt>
<dd>HTML 4.0 was reissued with minor edits without incrementing the version number.</dd>
<dt>December 1999</dt>
<dd>HTML 4.01 was published as a W3C Recommendation. It offers the same three variations as HTML 4.0 and its last errata were published May 12, 2001.</dd>
<dt>May 2000</dt>
<dd>ISO/IEC 15445:2000 (&#8220;ISO HTML&#8221;, based on HTML 4.01 Strict) was published as an ISO/IEC international standard. In the ISO this standard falls in the domain of the ISO/IEC JTC1/SC34 (ISO/IEC Joint Technical Committee 1, Subcommittee 34 – Document description and processing languages). ajmal</dd>
<dd>As of mid-2008, HTML 4.01 and ISO/IEC 15445:2000 are the most recent versions of HTML. Development of the parallel, XML-based language XHTML occupied the W3C&#8217;s HTML Working Group through the early and mid-2000s.</dd>
</dl>
<h4>HTML draft version timeline</h4>
<dl>
<dt>October 1991</dt>
<dd><em>HTML Tags</em>, an informal CERN document listing eighteen HTML tags, was first mentioned in public.</dd>
<dt>June 1992</dt>
<dd>First informal draft of the HTML DTD, with seven subsequent revisions (July 15, August 6, August 18, November 17, November 19, November 20, November 22)</dd>
<dt>November 1992</dt>
<dd>HTML DTD 1.1 (the first with a version number, based on RCS revisions, which start with 1.1 rather than 1.0), an informal draft</dd>
<dt>June 1993</dt>
<dd>Hypertext Markup Language was published by the IETF IIIR Working Group as an Internet-Draft (a rough proposal for a standard). It was replaced by a second version one month later, followed by six further drafts published by IETF itself that finally led to HTML 2.0 in RFC1866</dd>
<dt>November 1993</dt>
<dd>HTML+ was published by the IETF as an Internet-Draft and was a competing proposal to the Hypertext Markup Language draft. It expired in May 1994.</dd>
<dt>April 1995 (authored March 1995)</dt>
<dd>HTML 3.0 was proposed as a standard to the IETF, but the proposal expired five months later without further action. It included many of the capabilities that were in Raggett&#8217;s HTML+ proposal, such as support for tables, text flow around figures and the display of complex mathematical formulas.</dd>
<dd>W3C began development of its own Arena browser as a test bed for HTML 3 and Cascading Style Sheets,but HTML 3.0 did not succeed for several reasons. The draft was considered very large at 150 pages and the pace of browser development, as well as the number of interested parties, had outstripped the resources of the IETF. Browser vendors, including Microsoft and Netscape at the time, chose to implement different subsets of HTML 3&#8242;s draft features as well as to introduce their own extensions to it. (See Browser wars) These included extensions to control stylistic aspects of documents, contrary to the &#8220;belief [of the academic engineering community] that such things as text color, background texture, font size and font face were definitely outside the scope of a language when their only intent was to specify how a document would be organized.&#8221; Dave Raggett, who has been a W3C Fellow for many years has commented for example, &#8220;To a certain extent, Microsoft built its business on the Web by extending HTML features.&#8221;</dd>
<dt>January 2008</dt>
<dd>HTML5 was published as a Working Draft (link) by the W3C.</dd>
<dd>Although its syntax closely resembles that of SGML, HTML5 has abandoned any attempt to be an SGML application and has explicitly defined its own &#8220;html&#8221; serialization, in addition to an alternative XML-based XHTML5 serialization.</dd>
</dl>
<h4>XHTML versions</h4>
<p>XHTML is a separate language that began as a reformulation of HTML 4.01 using XML 1.0. It continues to be developed:</p>
<ul>
<li>XHTML 1.0, published January 26, 2000, as a W3C Recommendation, later revised and republished August 1, 2002. It offers the same three variations as HTML 4.0 and 4.01, reformulated in XML, with minor restrictions.</li>
<li>XHTML 1.1, published May 31, 2001, as a W3C Recommendation. It is based on XHTML 1.0 Strict, but includes minor changes, can be customized, is reformulated using modules from Modularization of XHTML, which was published April 10, 2001, as a W3C Recommendation.</li>
<li>XHTML 2.0,.<sup> </sup> There is no XHTML 2.0 standard. XHTML 2.0 is only a draft document and it is inappropriate to cite this document as other than work in progress. XHTML 2.0 is incompatible with XHTML 1.x and, therefore, would be more accurately characterized as an XHTML-inspired new language than an update to XHTML 1.x.</li>
<li>XHTML5, which is an update to XHTML 1.x, is being defined alongside HTML5 in the HTML5 draft.</li>
</ul>
<h3>Markup</h3>
<p>HTML markup consists of several key components, including <em>elements</em> (and their <em>attributes</em>), character-based <em>data types</em>, <em>character references</em> and <em>entity references</em>. Another important component is the <em>document type declaration</em>, which triggers standards mode rendering.</p>
<p>The following is an example of the classic Hello world program, a common test employed for comparing programming languages, scripting languages and markup languages. This example is made using 9 lines of code:</p>
<div dir="ltr">
<div>
<pre>&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;Hello HTML&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;p&gt;Hello World!&lt;/p&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre>
</div>
</div>
<p><em>(The text between &lt;html&gt; and &lt;/html&gt; describes the web page, and the text between &lt;body&gt; and &lt;/body&gt; is the visible page content. The markup text &#8216;&lt;title&gt;Hello HTML&lt;/title&gt;&#8217; defines the browser tab title.)</em></p>
<p>This Document Type Declaration is for HTML5. If the <code>&lt;!DOCTYPE html&gt;</code> declaration is not included, various browsers will revert to &#8220;quirks mode&#8221; for rendering.</p>
<h3>Elements</h3>
<p>HTML documents are composed entirely of <strong>HTML elements</strong> that, in their most general form have three components: a pair of <em><strong>tags</strong></em>, a &#8220;start tag&#8221; and &#8220;end tag&#8221;; some <em><strong>attributes</strong></em> within the start tag; and finally, any textual and graphical <em>content</em> between the start and end tags, perhaps including other nested elements. The <strong>HTML element</strong> is everything between and including the start and end tags. Each <strong>tag</strong> is enclosed in angle brackets.</p>
<p>The general form of an <strong>HTML element</strong> is therefore: <code>&lt;tag attribute1="value1" attribute2="value2"&gt;<em>content</em>&lt;/tag&gt;</code>. Some HTML elements are defined as <em>empty elements</em> and take the form <code>&lt;tag attribute1="value1" attribute2="value2" &gt;</code>. Empty elements may enclose no content, for instance, the BR tag or the inline IMG tag. The name of an HTML element is the name used in the tags. Note that the end tag&#8217;s name is preceded by a slash character, &#8220;/&#8221;, and that in empty elements the end tag is neither required nor allowed. If attributes are not mentioned, default values are used in each case.</p>
<h4>Element examples</h4>
<p>Header of the HTML document:&lt;head&gt;&#8230;&lt;/head&gt;. Usually the title should be included in the head, for example:</p>
<div dir="ltr">
<div>
<pre>&lt;head&gt;
  &lt;title&gt;The Title&lt;/title&gt;
&lt;/head&gt;</pre>
</div>
</div>
<p>Headings: HTML headings are defined with the &lt;h1&gt; to &lt;h6&gt; tags:</p>
<div dir="ltr">
<div>
<pre>&lt;h1&gt;Heading1&lt;/h1&gt;
&lt;h2&gt;Heading2&lt;/h2&gt;
&lt;h3&gt;Heading3&lt;/h3&gt;
&lt;h4&gt;Heading4&lt;/h4&gt;
&lt;h5&gt;Heading5&lt;/h5&gt;
&lt;h6&gt;Heading6&lt;/h6&gt;</pre>
</div>
</div>
<p>Paragraphs:</p>
<div dir="ltr">
<div>
<pre>&lt;p&gt;Paragraph 1&lt;/p&gt;  &lt;p&gt;Paragraph 2&lt;/p&gt;</pre>
</div>
</div>
<p>Line breaks:&lt;br&gt;. The difference between &lt;br&gt; and &lt;p&gt; is that &#8216;br&#8217; breaks a line without altering the semantic structure of the page, whereas &#8216;p&#8217; sections the page into paragraphs. Note also that &#8216;br&#8217; is an <em>empty element</em> in that, while it may have attributes, it can take no content and it may not have an end tag.</p>
<div dir="ltr">
<div>
<pre>&lt;p&gt;This &lt;br&gt; is a paragraph &lt;br&gt; with &lt;br&gt; line breaks&lt;/p&gt;</pre>
</div>
</div>
<p>Comments:</p>
<div dir="ltr">
<div>
<pre>&lt;!-- This is a comment --&gt;</pre>
</div>
</div>
<p>Comments can help understanding of the markup and do not display in the webpage.</p>
<p>There are several types of markup elements used in HTML.</p>
<dl>
<dt>Structural markup describes the purpose of text</dt>
<dd>For example, <code>&lt;h2&gt;Golf&lt;/h2&gt;</code> establishes &#8220;Golf&#8221; as a second-level heading. Structural markup does not denote any specific rendering, but most web browsers have default styles for element formatting. Content may be further styled using Cascading Style Sheets (CSS).</dd>
<dt>Presentational markup describes the appearance of the text, regardless of its purpose</dt>
<dd>For example <code>&lt;b&gt;boldface&lt;/b&gt;</code> indicates that visual output devices should render &#8220;boldface&#8221; in bold text, but gives little indication what devices that are unable to do this (such as aural devices that read the text aloud) should do. In the case of both <code>&lt;b&gt;bold&lt;/b&gt;</code> and <code>&lt;i&gt;italic&lt;/i&gt;</code>, there are other elements that may have equivalent visual renderings but which are more semantic in nature, such as <code>&lt;strong&gt;strong text&lt;/strong&gt;</code> and <code>&lt;em&gt;emphasised text&lt;/em&gt;</code> respectively. It is easier to see how an aural user agent should interpret the latter two elements. However, they are not equivalent to their presentational counterparts: it would be undesirable for a screen-reader to emphasize the name of a book, for instance, but on a screen such a name would be italicized. Most presentational markup elements have become deprecated under the HTML 4.0 specification, in favor of using CSS for styling.</dd>
<dt>Hypertext markup makes parts of a document into links to other documents</dt>
<dd>An anchor element creates a hyperlink in the document and its <code>href</code> attribute sets the link&#8217;s target URL. For example the HTML markup, <code>&lt;a href="http://www.google.com/"&gt;Wikipedia&lt;/a&gt;</code>, will render the word &#8220;Wikipedia&#8221; as a hyperlink. To render an image as a hyperlink, an &#8216;img&#8217; element is inserted as content into the &#8216;a&#8217; element. Like &#8216;br&#8217;, &#8216;img&#8217; is an empty element with attributes but no content or closing tag. <code>&lt;a href="http://example.org"&gt;&lt;img src="image.gif" alt="descriptive text" width="50" height="50" border="0"&gt;&lt;/a&gt;</code>.</dd>
</dl>
<h4>Attributes</h4>
<p>Most of the attributes of an element are name-value pairs, separated by &#8220;=&#8221; and written within the start tag of an element after the element&#8217;s name. The value may be enclosed in single or double quotes, although values consisting of certain characters can be left unquoted in HTML (but not XHTML). Leaving attribute values unquoted is considered unsafe. In contrast with name-value pair attributes, there are some attributes that affect the element simply by their presence in the start tag of the element, like the <code>ismap</code> attribute for the <code>img</code> element.</p>
<p>There are several common attributes that may appear in many elements:</p>
<ul>
<li>The <code>id</code> attribute provides a document-wide unique identifier for an element. This is used to identify the element so that stylesheets can alter its presentational properties, and scripts may alter, animate or delete its contents or presentation. Appended to the URL of the page, it provides a globally unique identifier for the element, typically a sub-section of the page. For example, the ID &#8220;Attributes&#8221; in <code>http://en.wikipedia.org/wiki/HTML#Attributes</code></li>
<li>The <code>class</code> attribute provides a way of classifying similar elements. This can be used for semantic or presentation purposes. For example, an HTML document might semantically use the designation <code>class="notation"</code> to indicate that all elements with this class value are subordinate to the main text of the document. In presentation, such elements might be gathered together and presented as footnotes on a page instead of appearing in the place where they occur in the HTML source. Class attributes are used semantically in microformats. Multiple class values may be specified; for example <code>class="notation important"</code> puts the element into both the &#8216;notation&#8217; and the &#8216;important&#8217; classes.</li>
<li>An author may use the <code>style</code> attribute to assign presentational properties to a particular element. It is considered better practice to use an element&#8217;s <code>id</code> or <code>class</code> attributes to select the element from within a stylesheet, though sometimes this can be too cumbersome for a simple, specific, or ad hoc styling.</li>
<li>The <code>title</code> attribute is used to attach subtextual explanation to an element. In most browsers this attribute is displayed as a tooltip.</li>
<li>The <code>lang</code>attribute identifies the natural language of the element&#8217;s contents, which may be different from that of the rest of the document. For example, in an English-language document:
<div dir="ltr">
<div>
<pre>&lt;p&gt;Oh well, &lt;span lang="fr"&gt;c'est la vie&lt;/span&gt;, as they say in France.&lt;/p&gt;</pre>
</div>
</div>
</li>
</ul>
<p>The abbreviation element, <code>abbr</code>, can be used to demonstrate some of these attributes:</p>
<div dir="ltr">
<div>
<pre>&lt;abbr id="anId" class="jargon" style="color:purple;" title="Hypertext Markup Language"&gt;HTML&lt;/abbr&gt;</pre>
</div>
</div>
<p>This example displays as <abbr id="anId" title="Hypertext Markup Language">HTML</abbr>; in most browsers, pointing the cursor at the abbreviation should display the title text &#8220;Hypertext Markup Language.&#8221;</p>
<p>Most elements also take the language-related attribute <code>dir</code> to specify text direction, such as with &#8220;rtl&#8221; for right-to-left text in, for examples, Arabic, Persian or Hebrew.</p>
<h3>Character and entity references</h3>
<div>See also: List of XML and HTML character entity references and Unicode and HTML</div>
<p>As of version 4.0, HTML defines a set of 252 character entity references and a set of 1,114,050 numeric character references, both of which allow individual characters to be written via simple markup, rather than literally. A literal character and its markup counterpart are considered equivalent and are rendered identically.</p>
<p>The ability to &#8220;escape&#8221; characters in this way allows for the characters <code>&lt;</code> and <code>&amp;</code> (when written as <code>&amp;lt;</code> and <code>&amp;amp;</code>, respectively) to be interpreted as character data, rather than markup. For example, a literal <code>&lt;</code> normally indicates the start of a tag, and <code>&amp;</code> normally indicates the start of a character entity reference or numeric character reference; writing it as <code>&amp;amp;</code> or <code>&amp;#x26;</code> or <code>&amp;#38;</code> allows <code>&amp;</code> to be included in the content of an element or in the value of an attribute. The double-quote character (<code>"</code>), when not used to quote an attribute value, must also be escaped as <code>&amp;quot;</code> or <code>&amp;#x22;</code> or <code>&amp;#34;</code> when it appears within the attribute value itself. Equivalently, the single-quote character (<code>'</code>), when used to quote an attribute value, must also be escaped as <code>&amp;#x27;</code> or <code>&amp;#39;</code> (not as <code>&amp;apos;</code> except in XHTML documents) when it appears within the attribute value itself. If document authors overlook the need to escape such characters, some browsers can be very forgiving and try to use context to guess their intent. The result is still invalid markup, which makes the document less accessible to other browsers and to other user agents that may try to parse the document for search and indexing purposes for example.</p>
<p>Escaping also allows for characters that are not easily typed, or that are not available in the document&#8217;s character encoding, to be represented within element and attribute content. For example, the acute-accented <code>e</code> (<code>é</code>), a character typically found only on Western European keyboards, can be written in any HTML document as the entity reference <code>&amp;eacute;</code> or as the numeric references <code>&amp;#233;</code> or <code>&amp;#xE9;</code>, using characters that are available on all keyboards and are supported in all character encodings. Unicode character encodings such as UTF-8 are compatible with all modern browsers and allow direct access to almost all the characters of the world&#8217;s writing systems.</p>
<h3>Data types</h3>
<p>HTML defines several data types for element content, such as script data and stylesheet data, and a plethora of types for attribute values, including IDs, names, URIs, numbers, units of length, languages, media descriptors, colors, character encodings, dates and times, and so on. All of these data types are specializations of character data.</p>
<h3>Document type declaration</h3>
<p>HTML documents are required to start with a Document Type Declaration (informally, a &#8220;doctype&#8221;). In browsers, the doctype helps to define the rendering mode—particularly whether to use quirks mode.</p>
<p>The original purpose of the doctype was to enable parsing and validation of HTML documents by SGML tools based on the Document Type Definition (DTD). The DTD to which the DOCTYPE refers contains a machine-readable grammar specifying the permitted and prohibited content for a document conforming to such a DTD. Browsers, on the other hand, do not implement HTML as an application of SGML and by consequence do not read the DTD. HTML5 does not define a DTD, because of the technology&#8217;s inherent limitations, so in HTML5 the doctype declaration, <code>&lt;!doctype html&gt;</code>, does not refer to a DTD.</p>
<p>An example of an HTML 4 doctype is</p>
<div dir="ltr">
<div>
<pre>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;</pre>
</div>
</div>
<p>This declaration references the DTD for the &#8216;strict&#8217; version of HTML 4.01. SGML-based validators read the DTD in order to properly parse the document and to perform validation. In modern browsers, a valid doctype activates standards mode as opposed to quirks mode.</p>
<p>In addition, HTML 4.01 provides Transitional and Frameset DTDs, as explained below.</p>
<h3>Semantic HTML</h3>
<p>Semantic HTML is a way of writing HTML that emphasizes the meaning of the encoded information over its presentation (look). HTML has included semantic markup from its inception, but has also included presentational markup such as <code>&lt;font&gt;</code>, <code>&lt;i&gt;</code> and <code>&lt;center&gt;</code> tags. There are also the semantically neutral span and div tags. Since the late 1990s when Cascading Style Sheets were beginning to work in most browsers, web authors have been encouraged to avoid the use of presentational HTML markup with a view to the separation of presentation and content.</p>
<p>In a 2001 discussion of the Semantic Web, Tim Berners-Lee and others gave examples of ways in which intelligent software &#8216;agents&#8217; may one day automatically trawl the Web and find, filter and correlate previously unrelated, published facts for the benefit of human users. Such agents are not commonplace even now, but some of the ideas of Web 2.0, mashups and price comparison websites may be coming close. The main difference between these web application hybrids and Berners-Lee&#8217;s semantic agents lies in the fact that the current aggregation and hybridisation of information is usually designed in by web developers, who already know the web locations and the API semantics of the specific data they wish to mash, compare and combine.</p>
<p>An important type of web agent that does trawl and read web pages automatically, without prior knowledge of what it might find, is the Web crawler or search-engine spider. These software agents are dependent on the semantic clarity of web pages they find as they use various techniques and algorithms to read and index millions of web pages a day and provide web users with search facilities without which the World Wide Web would be only a fraction of its current usefulness.</p>
<p>In order for search-engine spiders to be able to rate the significance of pieces of text they find in HTML documents, and also for those creating mashups and other hybrids as well as for more automated agents as they are developed, the semantic structures that exist in HTML need to be widely and uniformly applied to bring out the meaning of published text.</p>
<p>Presentational markup tags are deprecated in current HTML and XHTML recommendations and are illegal in HTML5.</p>
<p>Good semantic HTML also improves the accessibility of web documents (see also Web Content Accessibility Guidelines). For example, when a screen reader or audio browser can correctly ascertain the structure of a document, it will not waste the visually impaired user&#8217;s time by reading out repeated or irrelevant information when it has been marked up correctly.</p>
<h3>Delivery</h3>
<p>HTML documents can be delivered by the same means as any other computer file. However, they are most often delivered either by HTTP from a web server or by email.</p>
<h3>HTTP</h3>
<p>The World Wide Web is composed primarily of HTML documents transmitted from web servers to web browsers using the Hypertext Transfer Protocol (HTTP). However, HTTP is used to serve images, sound, and other content, in addition to HTML. To allow the Web browser to know how to handle each document it receives, other information is transmitted along with the document. This meta data usually includes the MIME type (e.g. <tt>text/html</tt> or <tt>application/xhtml+xml</tt>) and the character encoding (see Character encoding in HTML).</p>
<p>In modern browsers, the MIME type that is sent with the HTML document may affect how the document is initially interpreted. A document sent with the XHTML MIME type is expected to be well-formed XML; syntax errors may cause the browser to fail to render it. The same document sent with the HTML MIME type might be displayed successfully, since some browsers are more lenient with HTML.</p>
<p>The W3C recommendations state that XHTML 1.0 documents that follow guidelines set forth in the recommendation&#8217;s Appendix C may be labeled with either MIME Type. The current XHTML 1.1 Working Draft also states that XHTML 1.1 documents should be labeled with either MIME type.</p>
<h3>HTML e-mail</h3>
<p>Most graphical email clients allow the use of a subset of HTML (often ill-defined) to provide formatting and semantic markup not available with plain text. This may include typographic information like coloured headings, emphasized and quoted text, inline images and diagrams. Many such clients include both a GUI editor for composing HTML e-mail messages and a rendering engine for displaying them. Use of HTML in e-mail is controversial because of compatibility issues, because it can help disguise phishing attacks, because it can confuse spam filters and because the message size is larger than plain text.</p>
<h3>Naming conventions</h3>
<p>The most common filename extension for files containing HTML is <tt>.html</tt>. A common abbreviation of this is <tt>.htm</tt>, which originated because some early operating systems and file systems, such as DOS and FAT, limited file extensions to three letters.</p>
<h3>HTML Application</h3>
<p>An HTML Application (HTA; file extension &#8220;.hta&#8221;) is a Microsoft Windows application that uses HTML and Dynamic HTML in a browser to provide the application&#8217;s graphical interface. A regular HTML file is confined to the security model of the web browser&#8217;s security, communicating only to web servers and manipulating only webpage objects and site cookies. An HTA runs as a fully trusted application and therefore has more privileges, like creation/editing/removal of files and Windows Registry entries. Because they operate outside the browser&#8217;s security model, HTAs cannot be executed via HTTP, but must be downloaded (just like an EXE file) and executed from local file system.</p>
<h3>Current variations</h3>
<div>
<div>
<div>
<p>HTML is precisely what we were trying to PREVENT— ever-breaking links, links going outward only, quotes you can&#8217;t follow to their origins, no version management, no rights management.</p>
</div>
</div>
</div>
<p>Since its inception, HTML and its associated protocols gained acceptance relatively quickly. However, no clear standards existed in the early years of the language. Though its creators originally conceived of HTML as a semantic language devoid of presentation details, practical uses pushed many presentational elements and attributes into the language, driven largely by the various browser vendors. The latest standards surrounding HTML reflect efforts to overcome the sometimes chaotic development of the language and to create a rational foundation for building both meaningful and well-presented documents. To return HTML to its role as a semantic language, the W3C has developed style languages such as CSS and XSL to shoulder the burden of presentation. In conjunction, the HTML specification has slowly reined in the presentational elements.</p>
<p>There are two axes differentiating various variations of HTML as currently specified: SGML-based HTML versus XML-based HTML (referred to as XHTML) on one axis, and strict versus transitional (loose) versus frameset on the other axis.</p>
<h3>SGML-based versus XML-based HTML</h3>
<p>One difference in the latest HTML specifications lies in the distinction between the SGML-based specification and the XML-based specification. The XML-based specification is usually called XHTML to distinguish it clearly from the more traditional definition. However, the root element name continues to be &#8216;html&#8217; even in the XHTML-specified HTML. The W3C intended XHTML 1.0 to be identical to HTML 4.01 except where limitations of XML over the more complex SGML require workarounds. Because XHTML and HTML are closely related, they are sometimes documented in parallel. In such circumstances, some authors conflate the two names as (X)HTML or X(HTML).</p>
<p>Like HTML 4.01, XHTML 1.0 has three sub-specifications: strict, transitional and frameset.</p>
<p>Aside from the different opening declarations for a document, the differences between an HTML 4.01 and XHTML 1.0 document—in each of the corresponding DTDs—are largely syntactic. The underlying syntax of HTML allows many shortcuts that XHTML does not, such as elements with optional opening or closing tags, and even EMPTY elements which must not have an end tag. By contrast, XHTML requires all elements to have an opening tag and a closing tag. XHTML, however, also introduces a new shortcut: an XHTML tag may be opened and closed within the same tag, by including a slash before the end of the tag like this: <code>&lt;br/&gt;</code>. The introduction of this shorthand, which is not used in the SGML declaration for HTML 4.01, may confuse earlier software unfamiliar with this new convention. A fix for this is to include a space before closing the tag, as such: <code>&lt;br /&gt;</code>.</p>
<p>To understand the subtle differences between HTML and XHTML, consider the transformation of a valid and well-formed XHTML 1.0 document that adheres to Appendix C (see below) into a valid HTML 4.01 document. To make this translation requires the following steps:</p>
<ol>
<li><strong>The language for an element should be specified with a <code>lang</code> attribute rather than the XHTML <code>xml:lang</code> attribute.</strong> XHTML uses XML&#8217;s built in language-defining functionality attribute.</li>
<li><strong>Remove the XML namespace (<code>xmlns=URI</code>).</strong> HTML has no facilities for namespaces.</li>
<li><strong>Change the document type declaration</strong> from XHTML 1.0 to HTML 4.01. (see DTD section for further explanation).</li>
<li>If present, <strong>remove the XML declaration.</strong> (Typically this is: <code>&lt;?xml version="1.0" encoding="utf-8"?&gt;</code>).</li>
<li><strong>Ensure that the document&#8217;s MIME type is set to <code>text/html</code>.</strong> For both HTML and XHTML, this comes from the HTTP <code>Content-Type</code> header sent by the server.</li>
<li><strong>Change the XML empty-element syntax to an HTML style empty element</strong> (<code>&lt;br/&gt;</code> to <code>&lt;br&gt;</code>).</li>
</ol>
<p>Those are the main changes necessary to translate a document from XHTML 1.0 to HTML 4.01. To translate from HTML to XHTML would also require the addition of any omitted opening or closing tags. Whether coding in HTML or XHTML it may just be best to always include the optional tags within an HTML document rather than remembering which tags can be omitted.</p>
<p>A well-formed XHTML document adheres to all the syntax requirements of XML. A valid document adheres to the content specification for XHTML, which describes the document structure.</p>
<p>The W3C recommends several conventions to ensure an easy migration between HTML and XHTML (see HTML Compatibility Guidelines). The following steps can be applied to XHTML 1.0 documents only:</p>
<ul>
<li>Include both <code>xml:lang</code> and <code>lang</code> attributes on any elements assigning language.</li>
<li>Use the empty-element syntax only for elements specified as empty in HTML.</li>
<li>Include an extra space in empty-element tags: for example <code>&lt;br /&gt;</code> instead of <code>&lt;br/&gt;</code>.</li>
<li>Include explicit close tags for elements that permit content but are left empty (for example, <code>&lt;div&gt;</code><code>&lt;/div&gt;</code>, not <code>&lt;div /&gt;</code>).</li>
<li>Omit the XML declaration.</li>
</ul>
<p>By carefully following the W3C&#8217;s compatibility guidelines, a user agent should be able to interpret the document equally as HTML or XHTML. For documents that are XHTML 1.0 and have been made compatible in this way, the W3C permits them to be served either as HTML (with a <code>text/html</code> MIME type), or as XHTML (with an <code>application/xhtml+xml</code> or <code>application/xml</code> MIME type). When delivered as XHTML, browsers should use an XML parser, which adheres strictly to the XML specifications for parsing the document&#8217;s contents.</p>
<h3>Transitional versus strict</h3>
<p>HTML 4 defined three different versions of the language: Strict, Transitional (once called Loose) and Frameset. The Strict version is intended for new documents and is considered best practice, while the Transitional and Frameset versions were developed to make it easier to transition documents that conformed to older HTML specification or didn&#8217;t conform to any specification to a version of HTML 4. The Transitional and Frameset versions allow for presentational markup, which is omitted in the Strict version. Instead, cascading style sheets are encouraged to improve the presentation of HTML documents. Because XHTML 1 only defines an XML syntax for the language defined by HTML 4, the same differences apply to XHTML 1 as well. The Transitional version allows the following parts of the vocabulary, which are not included in the Strict version:</p>
<ul>
<li><strong>A looser content model</strong>
<ul>
<li>Inline elements and plain text are allowed directly in: <code>body</code>, <code>blockquote</code>, <code>form</code>, <code>noscript</code> and <code>noframes</code></li>
</ul>
</li>
<li><strong>Presentation related elements</strong>
<ul>
<li>underline (<code>u</code>)(Deprecated. can confuse a visitor with a hyperlink.)</li>
<li>strike-through (<code>s</code>)</li>
<li><code>center</code>(Deprecated. use CSS instead.)</li>
<li><code>font</code>(Deprecated. use CSS instead.)</li>
<li><code>basefont</code>(Deprecated. use CSS instead.)</li>
</ul>
</li>
<li><strong>Presentation related attributes</strong>
<ul>
<li><code>background</code>(Deprecated. use CSS instead.) and <code>bgcolor</code>(Deprecated. use CSS instead.) attributes for <code>body</code>(required element according to the W3C.) element.</li>
<li><code>align</code>(Deprecated. use CSS instead.) attribute on <code>div</code>, <code>form</code>, paragraph (<code>p</code>) and heading (<code>h1</code>&#8230;<code>h6</code>) elements</li>
<li><code>align</code>(Deprecated. use CSS instead.), <code>noshade</code>(Deprecated. use CSS instead.), <code>size</code>(Deprecated. use CSS instead.) and <code>width</code>(Deprecated. use CSS instead.) attributes on <code>hr</code> element</li>
<li><code>align</code>(Deprecated. use CSS instead.), <code>border</code>, <code>vspace</code> and <code>hspace</code> attributes on <code>img</code> and <code>object</code>(caution: the <code>object</code> element is only supported in Internet Explorer(from the major browsers)) elements</li>
<li><code>align</code>(Deprecated. use CSS instead.) attribute on <code>legend</code> and <code>caption</code> elements</li>
<li><code>align</code>(Deprecated. use CSS instead.) and <code>bgcolor</code>(Deprecated. use CSS instead.) on <code>table</code> element</li>
<li><code>nowrap</code>(Obsolete), <code>bgcolor</code>(Deprecated. use CSS instead.), <code>width</code>, <code>height</code> on <code>td</code> and <code>th</code> elements</li>
<li><code>bgcolor</code>(Deprecated. use CSS instead.) attribute on <code>tr</code> element</li>
<li><code>clear</code>(Obsolete) attribute on <code>br</code> element</li>
<li><code>compact</code> attribute on <code>dl</code>, <code>dir</code> and <code>menu</code> elements</li>
<li><code>type</code>(Deprecated. use CSS instead.), <code>compact</code>(Deprecated. use CSS instead.) and <code>start</code>(Deprecated. use CSS instead.) attributes on <code>ol</code> and <code>ul</code> elements</li>
<li><code>type</code> and <code>value</code> attributes on <code>li</code> element</li>
<li><code>width</code> attribute on <code>pre</code> element</li>
</ul>
</li>
<li><strong>Additional elements in Transitional specification</strong>
<ul>
<li><code>menu</code>(Deprecated. use CSS instead.) list (no substitute, though unordered list is recommended)</li>
<li><code>dir</code>(Deprecated. use CSS instead.) list (no substitute, though unordered list is recommended)</li>
<li><code>isindex</code>(Deprecated.) (element requires server-side support and is typically added to documents server-side, <code>form</code> and <code>input</code> elements can be used as a substitute)</li>
<li><code>applet</code> (Deprecated. use the <code>object</code> element instead.)</li>
</ul>
</li>
<li><strong>The <code>language</code>(Obsolete) attribute on script element</strong> (redundant with the <code>type</code> attribute).</li>
<li><strong>Frame related entities</strong>
<ul>
<li><code>iframe</code></li>
<li><code>noframes</code></li>
<li><code>target</code>(Deprecated in the <code>map</code>, <code>link</code> and <code>form</code> elements.) attribute on <code>a</code>, client-side image-map (<code>map</code>), <code>link</code>, <code>form</code> and <code>base</code> elements</li>
</ul>
</li>
</ul>
<p>The Frameset version includes everything in the Transitional version, as well as the <code>frameset</code> element (used instead of <code>body</code>) and the <code>frame</code> element.</p>
<h3>Frameset versus transitional</h3>
<p>In addition to the above transitional differences, the frameset specifications (whether XHTML 1.0 or HTML 4.01) specifies a different content model, with <code>frameset</code> replacing <code>body</code>, that contains either <code>frame</code> elements, or optionally <code>noframes</code> with a <code>body</code>.</p>
<h3>Summary of specification versions</h3>
<p>As this list demonstrates, the loose versions of the specification are maintained for legacy support. However, contrary to popular misconceptions, the move to XHTML does not imply a removal of this legacy support. Rather the X in XML stands for extensible and the W3C is modularizing the entire specification and opening it up to independent extensions. The primary achievement in the move from XHTML 1.0 to XHTML 1.1 is the modularization of the entire specification. The strict version of HTML is deployed in XHTML 1.1 through a set of modular extensions to the base XHTML 1.1 specification. Likewise, someone looking for the loose (transitional) or frameset specifications will find similar extended XHTML 1.1 support (much of it is contained in the legacy or frame modules). The modularization also allows for separate features to develop on their own timetable. So for example, XHTML 1.1 will allow quicker migration to emerging XML standards such as MathML (a presentational and semantic math language based on XML) and XForms—a new highly advanced web-form technology to replace the existing HTML forms.</p>
<p>In summary, the HTML 4.01 specification primarily reined in all the various HTML implementations into a single clearly written specification based on SGML. XHTML 1.0, ported this specification, as is, to the new XML defined specification. Next, XHTML 1.1 takes advantage of the extensible nature of XML and modularizes the whole specification. XHTML 2.0 will be the first step in adding new features to the specification in a standards-body-based approach.</p>
<h3>Hypertext features not in HTML</h3>
<p>HTML lacks some of the features found in earlier hypertext systems, such as typed links, source tracking, fat links and others. Even some hypertext features that were in early versions of HTML have been ignored by most popular web browsers until recently, such as the link element and in-browser Web page editing.</p>
<p>Sometimes Web services or browser manufacturers remedy these shortcomings. For instance, wikis and content management systems allow surfers to edit the Web pages they visit.</p>
<h3>WYSIWYG editors</h3>
<p>There are some WYSIWYG editors (What You See Is What You Get), in which the user lays out everything as it is to appear in the HTML document using a graphical user interface (GUI), where the editor renders this as an HTML document, no longer requiring the author to have extensive knowledge of HTML.</p>
<p>The WYSIWYG editing model has been criticized, primarily because of the low quality of the generated code; there are voices advocating a change to the WYSIWYM model (What You See Is What You Mean).</p>
<p>WYSIWYG editors remains a controversial topic because of their perceived flaws such as:</p>
<ul>
<li>Relying mainly on layout as opposed to meaning, often using markup that does not convey the intended meaning but simply copies the layout.<sup id="cite_ref-63">[64]</sup></li>
<li>Often producing extremely verbose and redundant code that fails to make use of the cascading nature of HTML and CSS.</li>
<li>Often producing ungrammatical markup often called tag soup.</li>
<li>As a great deal of the information in HTML documents is not in the layout, the model has been criticized for its &#8216;what you see is all you get&#8217;-nature.</li>
</ul>
<p>Nevertheless, since WYSIWYG editors offer convenience over hand-coded pages as well as not requiring the author to know the finer details of HTML, they still dominate web authoring.<sup><em><br />
</em></sup></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypernetstudio.com/2012/04/12/html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hyper NET Studio</title>
		<link>http://www.hypernetstudio.com/2011/10/05/hyper-net-studio/</link>
		<comments>http://www.hypernetstudio.com/2011/10/05/hyper-net-studio/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 19:45:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[A News]]></category>
		<category><![CDATA[company]]></category>
		<category><![CDATA[design studio]]></category>
		<category><![CDATA[Hyper NET]]></category>
		<category><![CDATA[Studio]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[web studio]]></category>

		<guid isPermaLink="false">http://www.hypernetstudio.com/?p=1</guid>
		<description><![CDATA[Hello, and welcome to Hyper NET Studio! We are is a IT company that specialized  in software and web developments, also  IT consulting and internet promotion. we are based in Georgia. Hyper NET Studio is a group of professional programmers, designers, and IT experts that is specialized on three main sectors: Development of corporate websites,]]></description>
			<content:encoded><![CDATA[<p><!--:en-->Hello, and welcome to Hyper NET Studio!</p>
<p style="text-align: left;">We are is a IT company that specialized  in software and web developments, also  IT consulting and internet promotion. we are based in Georgia.</p>
<p style="text-align: left;">Hyper NET Studio is a group of professional programmers, designers, and IT experts that is specialized on three main sectors:</p>
<p style="text-align: left;">Development of corporate websites, informational portals and online markets, their hosting, technical support, advancement, and promotion;</p>
<p style="text-align: left;">Development of informational systems and special software products in order to simplify or automatize various business processes;</p>
<p style="text-align: left;">IT consulting– planning, management, and audition of various types and difficulties of IT projects. Elaboration of IT development strategy formations and recommendations.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hypernetstudio.com/2011/10/05/hyper-net-studio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

