Fix for bug #193167.
diff --git a/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/design-time_tag_metadata_operations.html b/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/design-time_tag_metadata_operations.html
new file mode 100644
index 0000000..6c8e8ba
--- /dev/null
+++ b/plugins/org.eclipse.jst.jsf.doc.dev/html/programmersguide/design-time_tag_metadata_operations.html
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+	<title>Design-Time Tag Metadata Operations</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+	<meta http-equiv="Content-Style-Type" content="text/css"/>
+	<meta http-equiv="Content-Script-Type" content="text/javascript"/>
+	<link rel="stylesheet" href="../../book.css" type="text/css"/>
+</head>
+
+<body>
+
+<h1>Design-Time Tag Metadata Operations</h1>
+
+<h2>Overview</h2>
+This document provides a reference of the operations that are available to
+"design-time" ("DT") metadata for JSP tags. DT metadata is consumed by the DT
+tag conversion / decoration framework to produce close-to-runtime visuals in
+the Web Page Editor.<br/>
+<br/>
+Please see <a href="../tutorials/Providing_Design-Time_Tag_Metadata.html">Providing Design-Time Tag Metadata</a>
+for a tutorial on how to provide DT tag metadata.
+
+<h2>Operations</h2>
+<table border="2" cellspacing="1" cellpadding="2">
+	<tr>
+		<th>Operation</th>
+		<th>Parameters</th>
+		<th>Purpose</th>
+	</tr>
+	<tr valign="top">
+		<td>AppendChildElementOperation</td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="2">
+				<tr>
+					<td nowrap="nowrap"><b>0:</b></td>
+					<td nowrap="nowrap">Element name</td>
+				</tr>
+				<tr>
+					<td nowrap="nowrap"><b>1 (optional):</b></td>
+					<td nowrap="nowrap">Make child Element current</td>
+				</tr>
+			</table>
+		</td>
+		<td>Appends a new child Element to the current Element, and optionally makes the new child Element current.</td>
+	</tr>
+	<tr valign="top">
+		<td>AppendChildTextFromXPathOperation</td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="2">
+				<tr>
+					<td nowrap="nowrap"><b>0:</b></td>
+					<td nowrap="nowrap">XPath expression</td>
+				</tr>
+			</table>
+		</td>
+		<td>Appends child Text node containing the value of the evaluated XPath expression.</td>
+	</tr>
+	<tr valign="top">
+		<td>AppendChildTextOperation</td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="2">
+				<tr>
+					<td nowrap="nowrap"><b>0:</b></td>
+					<td nowrap="nowrap">Text node content</td>
+				</tr>
+			</table>
+		</td>
+		<td>Appends child Text node containing the content specified by the parameter.</td>
+	</tr>
+	<tr valign="top">
+		<td>ConvertAttributeToTextOperation</td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="2">
+				<tr>
+					<td nowrap="nowrap"><b>0:</b></td>
+					<td nowrap="nowrap">Attribute name</td>
+				</tr>
+				<tr>
+					<td nowrap="nowrap"><b>1 (optional):</b></td>
+					<td nowrap="nowrap">Remove attribute</td>
+				</tr>
+			</table>
+		</td>
+		<td>Creates a new child Text node where the content is the specified attribute's value, and optionally removes the specified attribute.</td>
+	</tr>
+	<tr valign="top">
+		<td>CopyAllAttributesOperation</td>
+		<td>(None)</td>
+		<td>Copies all source Element's attributes to the current Element.</td>
+	</tr>
+	<tr valign="top">
+		<td>CopyAttributeOperation</td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="2">
+				<tr>
+					<td nowrap="nowrap"><b>0:</b></td>
+					<td nowrap="nowrap">Attribute name</td>
+				</tr>
+				<tr>
+					<td nowrap="nowrap"><b>1 (optional):</b></td>
+					<td nowrap="nowrap">Create if not present</td>
+				</tr>
+				<tr>
+					<td nowrap="nowrap"><b>2 (optional):</b></td>
+					<td nowrap="nowrap">New value if not present</td>
+				</tr>
+			</table>
+		</td>
+		<td>Copies a single source Element's attribute to the current Element, optionally creating a new attribute with the specified new value if not present on the source Element.</td>
+	</tr>
+	<tr valign="top">
+		<td>CopyChildrenOperation</td>
+		<td>(None)</td>
+		<td>Copies all child Elements to be further processed by the framework.</td>
+	</tr>
+	<tr valign="top">
+		<td>CreateAttributeFromXPathOperation</td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="2">
+				<tr>
+					<td nowrap="nowrap"><b>0:</b></td>
+					<td nowrap="nowrap">Attribute name</td>
+				</tr>
+				<tr>
+					<td nowrap="nowrap"><b>1:</b></td>
+					<td nowrap="nowrap">XPath expression</td>
+				</tr>
+			</table>
+		</td>
+		<td>Creates an attribute on the current Element where the value is the value of the evaluated XPath expression.</td>
+	</tr>
+	<tr valign="top">
+		<td>CreateAttributeOperation</td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="2">
+				<tr>
+					<td nowrap="nowrap"><b>0:</b></td>
+					<td nowrap="nowrap">Attribute name</td>
+				</tr>
+				<tr>
+					<td nowrap="nowrap"><b>1:</b></td>
+					<td nowrap="nowrap">Attribute value</td>
+				</tr>
+			</table>
+		</td>
+		<td>Creates an attribute with the specified value on the current Element.</td>
+	</tr>
+	<tr valign="top">
+		<td>CreateElementOperation</td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="2">
+				<tr>
+					<td nowrap="nowrap"><b>0:</b></td>
+					<td nowrap="nowrap">Element name</td>
+				</tr>
+			</table>
+		</td>
+		<td>Creates a new Element in the Document and makes it the current Element.</td>
+	</tr>
+	<tr valign="top">
+		<td>CustomTransformOperation</td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="2">
+				<tr>
+					<td nowrap="nowrap"><b>0:</b></td>
+					<td nowrap="nowrap">Fully-qualified classname</td>
+				</tr>
+			</table>
+		</td>
+		<td>Instantiates custom class (assumed to be in same plug-in as the metadata file in which it is referenced) that must implement ITransformOperation. This allows custom code to handle transformation operations for which there is currently no adequate pre-defined operation.</td>
+	</tr>
+	<tr valign="top">
+		<td>IfNotOperation</td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="2">
+				<tr>
+					<td nowrap="nowrap"><b>0:</b></td>
+					<td nowrap="nowrap">XPath expression</td>
+				</tr>
+			</table>
+		</td>
+		<td>Processes child operations only if the XPath expression does not evaluate to "true". IfNotOperation and IfOperation can be nested arbitrarily deep.</td>
+	</tr>
+	<tr valign="top">
+		<td>IfOperation</td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="2">
+				<tr>
+					<td nowrap="nowrap"><b>0:</b></td>
+					<td nowrap="nowrap">XPath expression</td>
+				</tr>
+			</table>
+		</td>
+		<td>Processes child operations only if the XPath expression evaluates to "true". IfNotOperation and IfOperation can be nested arbitrarily deep.</td>
+	</tr>
+	<tr valign="top">
+		<td>IterateOverElementsOperation</td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="2">
+				<tr>
+					<td nowrap="nowrap"><b>0:</b></td>
+					<td nowrap="nowrap">XPath expression</td>
+				</tr>
+			</table>
+		</td>
+		<td>Processes child operations for each Element in the set returned by the evaluated XPath expression.</td>
+	</tr>
+	<tr valign="top">
+		<td>MakeParentElementCurrentOperation</td>
+		<td>(None)</td>
+		<td>Makes the current Element's parent Element current.</td>
+	</tr>
+	<tr valign="top">
+		<td>RemoveAttributeOperation</td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="2">
+				<tr>
+					<td nowrap="nowrap"><b>0:</b></td>
+					<td nowrap="nowrap">Attribute name</td>
+				</tr>
+			</table>
+		</td>
+		<td>Removes the specified attribute from the current Element.</td>
+	</tr>
+	<tr valign="top">
+		<td>RenameAttributeOperation</td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="2">
+				<tr>
+					<td nowrap="nowrap"><b>0:</b></td>
+					<td nowrap="nowrap">Old attribute name</td>
+				</tr>
+				<tr>
+					<td nowrap="nowrap"><b>1:</b></td>
+					<td nowrap="nowrap">New attribute name</td>
+				</tr>
+			</table>
+		</td>
+		<td>Renames the specified attribute of the current Element.</td>
+	</tr>
+</table>
+
+<h2>References</h2>
+<ul>
+	<li><a href="../tutorials/Providing_Design-Time_Tag_Metadata.html">Providing Design-Time Tag Metadata</a></li>
+</ul>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.jsf.doc.dev/html/tutorials/Providing_Design-Time_Tag_Metadata.html b/plugins/org.eclipse.jst.jsf.doc.dev/html/tutorials/Providing_Design-Time_Tag_Metadata.html
new file mode 100644
index 0000000..1cc16c0
--- /dev/null
+++ b/plugins/org.eclipse.jst.jsf.doc.dev/html/tutorials/Providing_Design-Time_Tag_Metadata.html
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+	<title>Providing Design-Time Tag Metadata</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+	<meta http-equiv="Content-Style-Type" content="text/css"/>
+	<meta http-equiv="Content-Script-Type" content="text/javascript"/>
+	<link rel="stylesheet" href="../../book.css" type="text/css"/>
+</head>
+
+<body>
+
+<h1>Providing Design-Time Tag Metadata</h1>
+
+<h2>Overview</h2>
+This document provides an overview of what is required to provide "design-time"
+("DT") metadata for JSP tags. DT metadata is consumed by the DT tag conversion / decoration
+framework to produce close-to-runtime visuals in the Web Page Editor.<br/>
+<br/>
+This note assumes the following user knowledge:
+<ul>
+	<li>How to create plugin projects</li>
+	<li>How to declare dependencies in plugin projects</li>
+	<li>How to use extension points</li>
+	<li>How to package and deploy plugins</li>
+</ul>
+
+<h2>Setup Steps</h2>
+The following setup steps are described in more details in the sections that follow:
+<ol>
+	<li>Create a Plug-in Project</li>
+	<li>Specify plug-in's dependencies</li>
+	<li>Configure "standardMetaDataFiles" extension point</li>
+	<li>Create DT metadata XML file</li>
+</ol>
+
+<h3>Create a Plug-in Project</h3>
+A plug-in project is required to use the "standardMetaDataFiles" extension point and to contain the DT metadata file.
+<ol>
+	<li>Select menu items, "File" > "New" > "Project..."</li>
+	<li>Select "Plug-in Project" and click "Next >"</li>
+	<li>Provide a reasonable value for "Project name" and click "Next >"</li>
+	<li>Provide reasonable values for "Plug-in Properties"</li>
+	<li>Uncheck "This plug-in will make contributions to the UI"</li>
+	<li>Click "Finish"</li>
+</ol>
+
+<h3>Specify Plug-in's Dependencies</h3>
+<ol>
+	<li>Open the new project's "META-INF/MANIFEST.MF" file in the "Plug-in Manifest Editor"</li>
+	<li>Select the "Dependencies" tab</li>
+	<li>Add "org.eclipse.jst.jsf.common" under "Required Plug-ins"</li>
+</ol>
+
+<h3>Configure "standardMetaDataFiles" Extension Point</h3>
+<ol>
+	<li>Open the new project's "META-INF/MANIFEST.MF" file in the "Plug-in Manifest Editor"</li>
+	<li>Select the "Extensions" tab</li>
+	<li>Add "org.eclipse.jst.jsf.common.standardMetaDataFiles" under "All Extensions"</li>
+	<li>Right-click the new extension and select "New" > "standardMetaDataFile"</li>
+	<li>Select "(standardMetaDataFile)"</li>
+	<li>Under "Extension Element Details", set appropriate values:</li>
+	<ol>
+		<li>For "uri", value should match the URI value as set in the tag library</li>
+		<li>The "location" value is a plugin-relative path and filename (file has not been created yet - value entered will be required in subsequent steps)</li>
+		<li>No value is required for "locator" (leave blank)</li>
+	</ol>
+</ol>
+<img src="images/DTTagMD_1.png" border="0" alt="Extension Details"/>
+
+<h3>Create DT Metadata XML File</h3>
+<ol>
+	<li>Create necessary folder(s) and file, to match value specified for "location" of the "standardMetaDataFile" (e.g. "metadata/jsf_tomahawk_dti.xml")</li>
+</ol>
+
+<h2>Writing the DT Metadata</h2>
+<h3>Document Node</h3>
+Copy the following XML into the DT metadata file as a starting point:<br/>
+<br/>
+<pre>
+&lt;?xml version="1.0" encoding="UTF-8"?>
+&lt;md:metadatamodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" 
+	xmlns:md="http://org.eclipse.jst.jsf.common.metadata/metadata.ecore"
+	xmlns:dti="http://org.eclipse.jsf.pagedesigner/dtinfo.ecore"
+	id="http://myfaces.apache.org/tomahawk"
+	type="tagFile">
+
+
+
+&lt;/md:metadatamodel>
+</pre>
+Note that the "id" attribute of the document node matches the "uri" as specified previously in the plug-in manifest.
+
+<h3>Entity (Tag) Node</h3>
+Insert the following XML inside the previously created document node:<br/>
+<br/>
+<pre>
+	&lt;entity id="inputText" type="tag">
+		&lt;trait id="dt-info">
+			&lt;value xsi:type="dti:DTInfo">
+				&lt;tag-convert-info>
+					&lt;operation id="CreateElementOperation">
+						&lt;parameter value="input"/>
+					&lt;/operation>
+					&lt;operation id="CopyAllAttributesOperation"/>
+					&lt;operation id="RenameAttributeOperation">
+						&lt;parameter value="styleClass"/>
+						&lt;parameter value="class"/>
+					&lt;/operation>
+					&lt;operation id="CreateAttributeOperation">
+						&lt;parameter value="type"/>
+						&lt;parameter value="text"/>
+					&lt;/operation>
+				&lt;/tag-convert-info>
+				&lt;tag-decorate-info id="vpd-decorate-design"
+					multiLevel="true"
+					widget="true"
+					setNonVisualChildElements="true"
+				/>
+				&lt;tag-decorate-info id="vpd-decorate-preview">
+					&lt;resolve-attribute-value attributeName="value"/>
+				&lt;/tag-decorate-info>
+			&lt;/value>
+		&lt;/trait>
+	&lt;/entity>
+</pre>
+Note the following:
+<ul>
+	<li>The "entity" node's "id" attribute specifies the name of the tag for which metadata is being provided (in this example, "inputText")</li>
+	<li>The "entity" node must have a "type" attribute with the value "tag"</li>
+	<li>The "trait" node must have an "id" attribute with the value "dt-info"</li>
+	<li>The "value" node must have an "xsi:type" attribute with the value "dti:DTInfo"</li>
+	<li>A single DT metadata file will typically contain one "entity" node per tag for which metadata is being provided - generally there will be one such file per tag library</li>
+</ul>
+
+<h3>Child Nodes</h3>
+The child nodes specify the tag conversion and decoration operations that will
+be performed to translate the source JSP node into HTML that is rendered in the
+Web Page Editor. Full discussion of the operations available is outside the
+scope of this document. The listings above serve to demonstrate the form of the
+metadata.<br/>
+<br/>
+(Suggested study materials for interested readers are the metadata files
+located in the "org.eclipse.jst.pagedesigner.jsf.ui" plug-in, which provide the
+metadata for JSF core and JSF HTML tag libraries.)
+
+<h2>References</h2>
+<ul>
+	<li><a href="../programmersguide/design-time_tag_metadata_operations.html">Design-Time Tag Metadata Operations</a></li>
+</ul>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.jsf.doc.dev/html/tutorials/images/DTTagMD_1.png b/plugins/org.eclipse.jst.jsf.doc.dev/html/tutorials/images/DTTagMD_1.png
new file mode 100644
index 0000000..af7aa75
--- /dev/null
+++ b/plugins/org.eclipse.jst.jsf.doc.dev/html/tutorials/images/DTTagMD_1.png
Binary files differ
diff --git a/plugins/org.eclipse.jst.jsf.doc.dev/tocprogrammersguide.xml b/plugins/org.eclipse.jst.jsf.doc.dev/tocprogrammersguide.xml
index ec175c7..fad450c 100644
--- a/plugins/org.eclipse.jst.jsf.doc.dev/tocprogrammersguide.xml
+++ b/plugins/org.eclipse.jst.jsf.doc.dev/tocprogrammersguide.xml
@@ -12,4 +12,5 @@
 		<topic label="Contributing EL Variables" href="html/programmersguide/contributing_el_variables.html"/>
 		<topic label="The Design Time Application Manager" href="html/programmersguide/the_design_time_application_manager.html"/>
 	</topic>
+	<topic label="Design-Time Tag Metadata Operations" href="html/programmersguide/design-time_tag_metadata_operations.html"/>
 </toc>
diff --git a/plugins/org.eclipse.jst.jsf.doc.dev/toctutorials.xml b/plugins/org.eclipse.jst.jsf.doc.dev/toctutorials.xml
index 47a0f1b..0c54dd2 100644
--- a/plugins/org.eclipse.jst.jsf.doc.dev/toctutorials.xml
+++ b/plugins/org.eclipse.jst.jsf.doc.dev/toctutorials.xml
@@ -4,4 +4,5 @@
 <toc label="Tutorials" link_to="toc.xml#jsf_dev_tutorials">
 	<topic label="Supplying Tag Library Metadata for Apache MyFaces Tomahawk" href="html/tutorials/supplying_tag_library_metadata_for_apache_myfaces_tomahawk.html"/>
 	<topic label="Implementing a New Tag-Based EL Variable Contributor for JSP" href="html/tutorials/implementing_a_new_tag_based_el_variable_contributor_for_jsp.html"/>
+	<topic label="Providing Design-Time Tag Metadata" href="html/tutorials/Providing_Design-Time_Tag_Metadata.html"/>
 </toc>