<html>
<body>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.core</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.core</strong></font>
<br>
            Class XPathCorePlugin</h2>
<br>
<hr>
<pre>public class <strong>XPathCorePlugin</strong>
extends Plugin</pre>The activator class controls the plug-in life cycle<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>PLUGIN_ID</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathCorePlugin</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath.core.XPathCorePlugin</code></td><td width="" align="left"><code>getDefault()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the shared instance</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>start(BundleContext context)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>stop(BundleContext context)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>PLUGIN_ID</h2>
<p>
<code>public static  java.lang.String <strong>PLUGIN_ID</strong></code>
</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathCorePlugin</h2>
<p>
<code>public <strong>XPathCorePlugin</strong>()</code>
</p>
<p>The constructor</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>getDefault</h2>
<p>
<code>public org.eclipse.wst.xml.xpath.core.XPathCorePlugin <strong>getDefault</strong>()</code>
</p>
<p>Returns the shared instance</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.wst.xml.xpath.core.XPathCorePlugin</code> - the shared instance</p>
<hr>
<h2>start</h2>
<p>
<code>public void <strong>start</strong>(BundleContext context)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>context</code>
</p>
<h3>Throws:</h3>
<p>
<code>java.lang.Exception</code>
</p>
<hr>
<h2>stop</h2>
<p>
<code>public void <strong>stop</strong>(BundleContext context)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>context</code>
</p>
<h3>Throws:</h3>
<p>
<code>java.lang.Exception</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.core.internal.parser</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.core.internal.parser</strong></font>
<br>
            Class XPathParser</h2>
<br>
<hr>
<pre>public class <strong>XPathParser</strong>
extends java.lang.Object</pre>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected Token</code></td><td width="80%" align="left"><code>currentToken</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected org.apache.commons.jxpath.ri.parser.XPathParser</code></td><td width="80%" align="left"><code>parser</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected Token</code></td><td width="80%" align="left"><code>previousToken</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathParser</strong>(java.lang.String xpath)</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public Token</code></td><td width="" align="left"><code>getCurrentToken()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public Token</code></td><td width="" align="left"><code>getPreviousToken()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code>getTokenStartOffset(int offsetLine
         ,
      int offsetColumn)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Given a line number and a column number, return the starting
 offset of the last known token.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected boolean</code></td><td width="" align="left"><code>locatedColumn(Token token
         ,
      int offsetColumn)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Checks to see if the token is in the range of the column offset</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected boolean</code></td><td width="" align="left"><code>locatedLine(Token token
         ,
      int offsetLine)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Checks to see if the token is in the range of the line offset</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>currentToken</h2>
<p>
<code>protected Token <strong>currentToken</strong></code>
</p>
<hr>
<h2>parser</h2>
<p>
<code>protected org.apache.commons.jxpath.ri.parser.XPathParser <strong>parser</strong></code>
</p>
<hr>
<h2>previousToken</h2>
<p>
<code>protected Token <strong>previousToken</strong></code>
</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathParser</h2>
<p>
<code>public <strong>XPathParser</strong>(java.lang.String xpath)</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>getCurrentToken</h2>
<p>
<code>public Token <strong>getCurrentToken</strong>()</code>
</p>
<p></p>
<h3>Returns</h3>
<p>
<code>Token</code>
</p>
<hr>
<h2>getPreviousToken</h2>
<p>
<code>public Token <strong>getPreviousToken</strong>()</code>
</p>
<p></p>
<h3>Returns</h3>
<p>
<code>Token</code>
</p>
<hr>
<h2>getTokenStartOffset</h2>
<p>
<code>public int <strong>getTokenStartOffset</strong>(int offsetLine
         ,
      int offsetColumn)</code>
</p>
<p>Given a line number and a column number, return the starting
 offset of the last known token.</p>
<h3>Parameters</h3>
<p>
<code>offsetLine</code>
</p>
<p>
<code>offsetColumn</code>
</p>
<h3>Returns</h3>
<p>
<code>int</code>
</p>
<hr>
<h2>locatedColumn</h2>
<p>
<code>protected boolean <strong>locatedColumn</strong>(Token token
         ,
      int offsetColumn)</code>
</p>
<p>Checks to see if the token is in the range of the column offset</p>
<h3>Parameters</h3>
<p>
<code>token</code>
</p>
<p>
<code>offsetColumn</code>
</p>
<h3>Returns</h3>
<p>
<code>boolean</code> - true if found, false otherwise</p>
<hr>
<h2>locatedLine</h2>
<p>
<code>protected boolean <strong>locatedLine</strong>(Token token
         ,
      int offsetLine)</code>
</p>
<p>Checks to see if the token is in the range of the line offset</p>
<h3>Parameters</h3>
<p>
<code>token</code> - An XPath Token.</p>
<p>
<code>offsetLine</code> - Line number offset of a region.</p>
<h3>Returns</h3>
<p>
<code>boolean</code> - true if found, false otherwise.</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.core.util</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.core.util</strong></font>
<br>
            Class XSLTXPathHelper</h2>
<br>
<hr>
<pre>public class <strong>XSLTXPathHelper</strong>
extends java.lang.Object</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XSLTXPathHelper</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static void</code></td><td width="" align="left"><code>compile(java.lang.String expression)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static org.apache.xpath.objects.XObject</code></td><td width="" align="left"><code>eval(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Evaluate XPath string to an XObject. Using this method, XPath namespace
 prefixes will be resolved from the namespaceNode.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static org.apache.xpath.objects.XObject</code></td><td width="" align="left"><code>eval(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Evaluate XPath string to an XObject. XPath namespace prefixes are
 resolved from the namespaceNode. The implementation of this is a little
 slow, since it creates a number of objects each time it is called. This
 could be optimized to keep the same objects around, but then
 thread-safety issues would arise.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static org.apache.xpath.objects.XObject</code></td><td width="" align="left"><code>eval(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.apache.xml.utils.PrefixResolver prefixResolver)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Evaluate XPath string to an XObject. XPath namespace prefixes are
 resolved from the namespaceNode. The implementation of this is a little
 slow, since it creates a number of objects each time it is called. This
 could be optimized to keep the same objects around, but then
 thread-safety issues would arise.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected static org.apache.xpath.compiler.FunctionTable</code></td><td width="" align="left"><code>getFunctionTable()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static org.w3c.dom.traversal.NodeIterator</code></td><td width="" align="left"><code>selectNodeIterator(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the contextNode.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static org.w3c.dom.traversal.NodeIterator</code></td><td width="" align="left"><code>selectNodeIterator(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the namespaceNode.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static org.w3c.dom.NodeList</code></td><td width="" align="left"><code>selectNodeList(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the contextNode.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static org.w3c.dom.NodeList</code></td><td width="" align="left"><code>selectNodeList(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the namespaceNode.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static org.w3c.dom.Node</code></td><td width="" align="left"><code>selectSingleNode(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Use an XPath string to select a single node. XPath namespace prefixes are
 resolved from the context node, which may not be what you want (see the
 next method).</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static org.w3c.dom.Node</code></td><td width="" align="left"><code>selectSingleNode(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Use an XPath string to select a single node. XPath namespace prefixes are
 resolved from the namespaceNode.</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XSLTXPathHelper</h2>
<p>
<code>public <strong>XSLTXPathHelper</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>compile</h2>
<p>
<code>public void <strong>compile</strong>(java.lang.String expression)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>expression</code>
</p>
<h3>Throws:</h3>
<p>
<code>javax.xml.xpath.XPathExpressionException</code>
</p>
<hr>
<h2>eval</h2>
<p>
<code>public org.apache.xpath.objects.XObject <strong>eval</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code>
</p>
<p>Evaluate XPath string to an XObject. Using this method, XPath namespace
 prefixes will be resolved from the namespaceNode.</p>
<h3>Parameters</h3>
<p>
<code>contextNode</code> - The node to start searching from.</p>
<p>
<code>str</code> - A valid XPath string.</p>
<h3>Returns</h3>
<p>
<code>org.apache.xpath.objects.XObject</code> - An XObject, which can be used to obtain a string, number,          nodelist, etc, should never be null.</p>
<h3>Throws:</h3>
<p>
<code>javax.xml.transform.TransformerException</code>
</p>
<hr>
<h2>eval</h2>
<p>
<code>public org.apache.xpath.objects.XObject <strong>eval</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code>
</p>
<p>Evaluate XPath string to an XObject. XPath namespace prefixes are
 resolved from the namespaceNode. The implementation of this is a little
 slow, since it creates a number of objects each time it is called. This
 could be optimized to keep the same objects around, but then
 thread-safety issues would arise.</p>
<h3>Parameters</h3>
<p>
<code>contextNode</code> - The node to start searching from.</p>
<p>
<code>str</code> - A valid XPath string.</p>
<p>
<code>namespaceNode</code> - The node from which prefixes in the XPath will be resolved to             namespaces.</p>
<h3>Returns</h3>
<p>
<code>org.apache.xpath.objects.XObject</code> - An XObject, which can be used to obtain a string, number,          nodelist, etc, should never be null.</p>
<h3>Throws:</h3>
<p>
<code>javax.xml.transform.TransformerException</code>
</p>
<hr>
<h2>eval</h2>
<p>
<code>public org.apache.xpath.objects.XObject <strong>eval</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.apache.xml.utils.PrefixResolver prefixResolver)</code>
</p>
<p>Evaluate XPath string to an XObject. XPath namespace prefixes are
 resolved from the namespaceNode. The implementation of this is a little
 slow, since it creates a number of objects each time it is called. This
 could be optimized to keep the same objects around, but then
 thread-safety issues would arise.</p>
<h3>Parameters</h3>
<p>
<code>contextNode</code> - The node to start searching from.</p>
<p>
<code>str</code> - A valid XPath string.</p>
<p>
<code>prefixResolver</code> - Will be called if the parser encounters namespace prefixes, to             resolve the prefixes to URLs.</p>
<h3>Returns</h3>
<p>
<code>org.apache.xpath.objects.XObject</code> - An XObject, which can be used to obtain a string, number,          nodelist, etc, should never be null.</p>
<h3>Throws:</h3>
<p>
<code>javax.xml.transform.TransformerException</code>
</p>
<hr>
<h2>getFunctionTable</h2>
<p>
<code>protected org.apache.xpath.compiler.FunctionTable <strong>getFunctionTable</strong>()</code>
</p>
<p></p>
<h3>Returns</h3>
<p>
<code>org.apache.xpath.compiler.FunctionTable</code>
</p>
<hr>
<h2>selectNodeIterator</h2>
<p>
<code>public org.w3c.dom.traversal.NodeIterator <strong>selectNodeIterator</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code>
</p>
<p>Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the contextNode.</p>
<h3>Parameters</h3>
<p>
<code>contextNode</code> - The node to start searching from.</p>
<p>
<code>str</code> - A valid XPath string.</p>
<h3>Returns</h3>
<p>
<code>org.w3c.dom.traversal.NodeIterator</code> - A NodeIterator, should never be null.</p>
<h3>Throws:</h3>
<p>
<code>javax.xml.transform.TransformerException</code>
</p>
<hr>
<h2>selectNodeIterator</h2>
<p>
<code>public org.w3c.dom.traversal.NodeIterator <strong>selectNodeIterator</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code>
</p>
<p>Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the namespaceNode.</p>
<h3>Parameters</h3>
<p>
<code>contextNode</code> - The node to start searching from.</p>
<p>
<code>str</code> - A valid XPath string.</p>
<p>
<code>namespaceNode</code> - The node from which prefixes in the XPath will be resolved to             namespaces.</p>
<h3>Returns</h3>
<p>
<code>org.w3c.dom.traversal.NodeIterator</code> - A NodeIterator, should never be null.</p>
<h3>Throws:</h3>
<p>
<code>javax.xml.transform.TransformerException</code>
</p>
<hr>
<h2>selectNodeList</h2>
<p>
<code>public org.w3c.dom.NodeList <strong>selectNodeList</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code>
</p>
<p>Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the contextNode.</p>
<h3>Parameters</h3>
<p>
<code>contextNode</code> - The node to start searching from.</p>
<p>
<code>str</code> - A valid XPath string.</p>
<h3>Returns</h3>
<p>
<code>org.w3c.dom.NodeList</code> - A NodeIterator, should never be null.</p>
<h3>Throws:</h3>
<p>
<code>javax.xml.transform.TransformerException</code>
</p>
<hr>
<h2>selectNodeList</h2>
<p>
<code>public org.w3c.dom.NodeList <strong>selectNodeList</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code>
</p>
<p>Use an XPath string to select a nodelist. XPath namespace prefixes are
 resolved from the namespaceNode.</p>
<h3>Parameters</h3>
<p>
<code>contextNode</code> - The node to start searching from.</p>
<p>
<code>str</code> - A valid XPath string.</p>
<p>
<code>namespaceNode</code> - The node from which prefixes in the XPath will be resolved to             namespaces.</p>
<h3>Returns</h3>
<p>
<code>org.w3c.dom.NodeList</code> - A NodeIterator, should never be null.</p>
<h3>Throws:</h3>
<p>
<code>javax.xml.transform.TransformerException</code>
</p>
<hr>
<h2>selectSingleNode</h2>
<p>
<code>public org.w3c.dom.Node <strong>selectSingleNode</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str)</code>
</p>
<p>Use an XPath string to select a single node. XPath namespace prefixes are
 resolved from the context node, which may not be what you want (see the
 next method).</p>
<h3>Parameters</h3>
<p>
<code>contextNode</code> - The node to start searching from.</p>
<p>
<code>str</code> - A valid XPath string.</p>
<h3>Returns</h3>
<p>
<code>org.w3c.dom.Node</code> - The first node found that matches the XPath, or null.</p>
<h3>Throws:</h3>
<p>
<code>javax.xml.transform.TransformerException</code>
</p>
<hr>
<h2>selectSingleNode</h2>
<p>
<code>public org.w3c.dom.Node <strong>selectSingleNode</strong>(org.w3c.dom.Node contextNode
         ,
      java.lang.String str
         ,
      org.w3c.dom.Node namespaceNode)</code>
</p>
<p>Use an XPath string to select a single node. XPath namespace prefixes are
 resolved from the namespaceNode.</p>
<h3>Parameters</h3>
<p>
<code>contextNode</code> - The node to start searching from.</p>
<p>
<code>str</code> - A valid XPath string.</p>
<p>
<code>namespaceNode</code> - The node from which prefixes in the XPath will be resolved to             namespaces.</p>
<h3>Returns</h3>
<p>
<code>org.w3c.dom.Node</code> - The first node found that matches the XPath, or null.</p>
<h3>Throws:</h3>
<p>
<code>javax.xml.transform.TransformerException</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui</strong></font>
<br>
            Class XPathUIMessages</h2>
<br>
<hr>
<pre>public class <strong>XPathUIMessages</strong>
extends NLS</pre>Strings used by XPath UI<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Context</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Document</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_DOM_Tree</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Expression</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Namespace_Prefixes</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Namespaces</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Namespaces_Tip</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Node_could_not_be_selected</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Nothing_selected</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Refresh_Source_Docs</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Refresh_Source_Docs_Tip</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Run_on_selected</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Run_XPath_Query</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Select_source_first</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Selection</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Show_In_Source</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Show_In_Source_Tip</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_Text</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_XML_Source_Document</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_XPath_Eval_Failed</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_XPath_Navigator</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathNavigator_XPath_Show_In_Source_Failed</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static java.util.ResourceBundle</code></td><td width="" align="left"><code>getResourceBundle()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathNavigator_Context</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Context</strong></code>
</p>
<hr>
<h2>XPathNavigator_Document</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Document</strong></code>
</p>
<hr>
<h2>XPathNavigator_DOM_Tree</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_DOM_Tree</strong></code>
</p>
<hr>
<h2>XPathNavigator_Expression</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Expression</strong></code>
</p>
<hr>
<h2>XPathNavigator_Namespace_Prefixes</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Namespace_Prefixes</strong></code>
</p>
<hr>
<h2>XPathNavigator_Namespaces</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Namespaces</strong></code>
</p>
<hr>
<h2>XPathNavigator_Namespaces_Tip</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Namespaces_Tip</strong></code>
</p>
<hr>
<h2>XPathNavigator_Node_could_not_be_selected</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Node_could_not_be_selected</strong></code>
</p>
<hr>
<h2>XPathNavigator_Nothing_selected</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Nothing_selected</strong></code>
</p>
<hr>
<h2>XPathNavigator_Refresh_Source_Docs</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Refresh_Source_Docs</strong></code>
</p>
<hr>
<h2>XPathNavigator_Refresh_Source_Docs_Tip</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Refresh_Source_Docs_Tip</strong></code>
</p>
<hr>
<h2>XPathNavigator_Run_on_selected</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Run_on_selected</strong></code>
</p>
<hr>
<h2>XPathNavigator_Run_XPath_Query</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Run_XPath_Query</strong></code>
</p>
<hr>
<h2>XPathNavigator_Select_source_first</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Select_source_first</strong></code>
</p>
<hr>
<h2>XPathNavigator_Selection</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Selection</strong></code>
</p>
<hr>
<h2>XPathNavigator_Show_In_Source</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Show_In_Source</strong></code>
</p>
<hr>
<h2>XPathNavigator_Show_In_Source_Tip</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Show_In_Source_Tip</strong></code>
</p>
<hr>
<h2>XPathNavigator_Text</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_Text</strong></code>
</p>
<hr>
<h2>XPathNavigator_XML_Source_Document</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_XML_Source_Document</strong></code>
</p>
<hr>
<h2>XPathNavigator_XPath_Eval_Failed</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_XPath_Eval_Failed</strong></code>
</p>
<hr>
<h2>XPathNavigator_XPath_Navigator</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_XPath_Navigator</strong></code>
</p>
<hr>
<h2>XPathNavigator_XPath_Show_In_Source_Failed</h2>
<p>
<code>public static  java.lang.String <strong>XPathNavigator_XPath_Show_In_Source_Failed</strong></code>
</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>getResourceBundle</h2>
<p>
<code>public java.util.ResourceBundle <strong>getResourceBundle</strong>()</code>
</p>
<p></p>
<h3>Returns</h3>
<p>
<code>java.util.ResourceBundle</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui</strong></font>
<br>
            Class XPathViewPlugin</h2>
<br>
<hr>
<pre>public class <strong>XPathViewPlugin</strong>
extends AbstractUIPlugin</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathViewPlugin</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath.ui.XPathViewPlugin</code></td><td width="" align="left"><code>getDefault()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the shared instance.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static java.lang.String</code></td><td width="" align="left"><code>getPluginId()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.util.ResourceBundle</code></td><td width="" align="left"><code>getResourceBundle()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the plugin's resource bundle</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static java.lang.String</code></td><td width="" align="left"><code>getResourceString(java.lang.String key)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the string from the plugin's resource bundle,
 or 'key' if not found.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public ContextTypeRegistry</code></td><td width="" align="left"><code>getXPathTemplateContextRegistry()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the template context type registry for xpath</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public TemplateStore</code></td><td width="" align="left"><code>getXPathTemplateStore()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the template store for the xpath templates.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>info(java.lang.String message)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected void</code></td><td width="" align="left"><code>initializeImageRegistry(ImageRegistry reg)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>log(java.lang.String message
         ,
      java.lang.Throwable ex)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>log(java.lang.Throwable ex)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>partActivated(IWorkbenchPartReference partRef)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>partBroughtToTop(IWorkbenchPartReference partRef)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>partClosed(IWorkbenchPartReference partRef)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>partDeactivated(IWorkbenchPartReference partRef)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>partHidden(IWorkbenchPartReference partRef)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>partInputChanged(IWorkbenchPartReference partRef)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>partOpened(IWorkbenchPartReference partRef)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>partVisible(IWorkbenchPartReference partRef)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>start(BundleContext context)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               This method is called upon plug-in activation</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>stop(BundleContext context)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               This method is called when the plug-in is stopped</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static void</code></td><td width="" align="left"><code>throwCoreException(java.lang.String message
         ,
      java.lang.Throwable t)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected void</code></td><td width="" align="left"><code>updateXPathNavigatorView(IWorkbenchPartReference partRef)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>warn(java.lang.String message)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathViewPlugin</h2>
<p>
<code>public <strong>XPathViewPlugin</strong>()</code>
</p>
<p>The constructor.</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>getDefault</h2>
<p>
<code>public org.eclipse.wst.xml.xpath.ui.XPathViewPlugin <strong>getDefault</strong>()</code>
</p>
<p>Returns the shared instance.</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.wst.xml.xpath.ui.XPathViewPlugin</code>
</p>
<hr>
<h2>getPluginId</h2>
<p>
<code>public java.lang.String <strong>getPluginId</strong>()</code>
</p>
<p></p>
<h3>Returns</h3>
<p>
<code>java.lang.String</code>
</p>
<hr>
<h2>getResourceBundle</h2>
<p>
<code>public java.util.ResourceBundle <strong>getResourceBundle</strong>()</code>
</p>
<p>Returns the plugin's resource bundle</p>
<h3>Returns</h3>
<p>
<code>java.util.ResourceBundle</code>
</p>
<hr>
<h2>getResourceString</h2>
<p>
<code>public java.lang.String <strong>getResourceString</strong>(java.lang.String key)</code>
</p>
<p>Returns the string from the plugin's resource bundle,
 or 'key' if not found.</p>
<h3>Parameters</h3>
<p>
<code>key</code>
</p>
<h3>Returns</h3>
<p>
<code>java.lang.String</code>
</p>
<hr>
<h2>getXPathTemplateContextRegistry</h2>
<p>
<code>public ContextTypeRegistry <strong>getXPathTemplateContextRegistry</strong>()</code>
</p>
<p>Returns the template context type registry for xpath</p>
<h3>Returns</h3>
<p>
<code>ContextTypeRegistry</code> - the template context type registry for xpath</p>
<hr>
<h2>getXPathTemplateStore</h2>
<p>
<code>public TemplateStore <strong>getXPathTemplateStore</strong>()</code>
</p>
<p>Returns the template store for the xpath templates.</p>
<h3>Returns</h3>
<p>
<code>TemplateStore</code> - the template store for the xpath templates</p>
<hr>
<h2>info</h2>
<p>
<code>public void <strong>info</strong>(java.lang.String message)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>message</code>
</p>
<hr>
<h2>initializeImageRegistry</h2>
<p>
<code>protected void <strong>initializeImageRegistry</strong>(ImageRegistry reg)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>reg</code>
</p>
<hr>
<h2>log</h2>
<p>
<code>public void <strong>log</strong>(java.lang.String message
         ,
      java.lang.Throwable ex)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>message</code>
</p>
<p>
<code>ex</code>
</p>
<hr>
<h2>log</h2>
<p>
<code>public void <strong>log</strong>(java.lang.Throwable ex)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>ex</code>
</p>
<hr>
<h2>partActivated</h2>
<p>
<code>public void <strong>partActivated</strong>(IWorkbenchPartReference partRef)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>partRef</code>
</p>
<hr>
<h2>partBroughtToTop</h2>
<p>
<code>public void <strong>partBroughtToTop</strong>(IWorkbenchPartReference partRef)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>partRef</code>
</p>
<hr>
<h2>partClosed</h2>
<p>
<code>public void <strong>partClosed</strong>(IWorkbenchPartReference partRef)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>partRef</code>
</p>
<hr>
<h2>partDeactivated</h2>
<p>
<code>public void <strong>partDeactivated</strong>(IWorkbenchPartReference partRef)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>partRef</code>
</p>
<hr>
<h2>partHidden</h2>
<p>
<code>public void <strong>partHidden</strong>(IWorkbenchPartReference partRef)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>partRef</code>
</p>
<hr>
<h2>partInputChanged</h2>
<p>
<code>public void <strong>partInputChanged</strong>(IWorkbenchPartReference partRef)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>partRef</code>
</p>
<hr>
<h2>partOpened</h2>
<p>
<code>public void <strong>partOpened</strong>(IWorkbenchPartReference partRef)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>partRef</code>
</p>
<hr>
<h2>partVisible</h2>
<p>
<code>public void <strong>partVisible</strong>(IWorkbenchPartReference partRef)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>partRef</code>
</p>
<hr>
<h2>start</h2>
<p>
<code>public void <strong>start</strong>(BundleContext context)</code>
</p>
<p>This method is called upon plug-in activation</p>
<h3>Parameters</h3>
<p>
<code>context</code>
</p>
<h3>Throws:</h3>
<p>
<code>java.lang.Exception</code>
</p>
<hr>
<h2>stop</h2>
<p>
<code>public void <strong>stop</strong>(BundleContext context)</code>
</p>
<p>This method is called when the plug-in is stopped</p>
<h3>Parameters</h3>
<p>
<code>context</code>
</p>
<h3>Throws:</h3>
<p>
<code>java.lang.Exception</code>
</p>
<hr>
<h2>throwCoreException</h2>
<p>
<code>public void <strong>throwCoreException</strong>(java.lang.String message
         ,
      java.lang.Throwable t)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>message</code>
</p>
<p>
<code>t</code>
</p>
<h3>Throws:</h3>
<p>
<code>CoreException</code>
</p>
<hr>
<h2>updateXPathNavigatorView</h2>
<p>
<code>protected void <strong>updateXPathNavigatorView</strong>(IWorkbenchPartReference partRef)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>partRef</code>
</p>
<hr>
<h2>warn</h2>
<p>
<code>public void <strong>warn</strong>(java.lang.String message)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>message</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.internal</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.internal</strong></font>
<br>
            Class XPathUIMessages</h2>
<br>
<hr>
<pre>public class <strong>XPathUIMessages</strong>
extends NLS</pre>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathPrefencePage_0</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<br>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathPrefencePage_0</h2>
<p>
<code>public static  java.lang.String <strong>XPathPrefencePage_0</strong></code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.internal.preferences</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.internal.preferences</strong></font>
<br>
            Class XPathPrefencePage</h2>
<br>
<hr>
<pre>public class <strong>XPathPrefencePage</strong>
extends AbstractPreferencePage</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathPrefencePage</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected org.eclipse.swt.widgets.Control</code></td><td width="" align="left"><code>createContents(org.eclipse.swt.widgets.Composite parent)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathPrefencePage</h2>
<p>
<code>public <strong>XPathPrefencePage</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>createContents</h2>
<p>
<code>protected org.eclipse.swt.widgets.Control <strong>createContents</strong>(org.eclipse.swt.widgets.Composite parent)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>parent</code>
</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.swt.widgets.Control</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.internal.preferences</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.internal.preferences</strong></font>
<br>
            Class XPathTemplatePreferencePage</h2>
<br>
<hr>
<pre>public class <strong>XPathTemplatePreferencePage</strong>
extends XMLTemplatePreferencePage</pre>XSLTemplatePreferencePage sets up the template preference page that
 contains the templates for xpath, xpath 2.0, axis, operators, and 
 exslt functions.<p></p>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathTemplatePreferencePage</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code>performOk()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               (non-Javadoc)</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathTemplatePreferencePage</h2>
<p>
<code>public <strong>XPathTemplatePreferencePage</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>performOk</h2>
<p>
<code>public boolean <strong>performOk</strong>()</code>
</p>
<p>(non-Javadoc)</p>
<h3>Returns</h3>
<p>
<code>boolean</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.views</strong></font>
<br>
            Class DOMNodeLabelProvider</h2>
<br>
<hr>
<pre>public class <strong>DOMNodeLabelProvider</strong>
extends LabelProvider</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>DOMNodeLabelProvider</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public org.eclipse.swt.graphics.Image</code></td><td width="" align="left"><code>getImage(java.lang.Object element)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code>getText(java.lang.Object element)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>DOMNodeLabelProvider</h2>
<p>
<code>public <strong>DOMNodeLabelProvider</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>getImage</h2>
<p>
<code>public org.eclipse.swt.graphics.Image <strong>getImage</strong>(java.lang.Object element)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>element</code>
</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.swt.graphics.Image</code>
</p>
<hr>
<h2>getText</h2>
<p>
<code>public java.lang.String <strong>getText</strong>(java.lang.Object element)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>element</code>
</p>
<h3>Returns</h3>
<p>
<code>java.lang.String</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.views</strong></font>
<br>
            Class DOMTreeContentProvider</h2>
<br>
<hr>
<pre>public class <strong>DOMTreeContentProvider</strong>
extends java.lang.Object</pre>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private org.w3c.dom.Node</code></td><td width="80%" align="left"><code>node</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private static  java.lang.Object[]</code></td><td width="80%" align="left"><code>NOTHING</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>DOMTreeContentProvider</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>dispose()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.Object[]</code></td><td width="" align="left"><code>getChildren(java.lang.Object parentElement)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.Object[]</code></td><td width="" align="left"><code>getElements(java.lang.Object inputElement)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.Object</code></td><td width="" align="left"><code>getParent(java.lang.Object element)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code>hasChildren(java.lang.Object element)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>inputChanged(Viewer viewer
         ,
      java.lang.Object oldInput
         ,
      java.lang.Object newInput)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>node</h2>
<p>
<code>package-private org.w3c.dom.Node <strong>node</strong></code>
</p>
<hr>
<h2>NOTHING</h2>
<p>
<code>package-private static  java.lang.Object[] <strong>NOTHING</strong></code>
</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>DOMTreeContentProvider</h2>
<p>
<code>public <strong>DOMTreeContentProvider</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>dispose</h2>
<p>
<code>public void <strong>dispose</strong>()</code>
</p>
<p></p>
<hr>
<h2>getChildren</h2>
<p>
<code>public java.lang.Object[] <strong>getChildren</strong>(java.lang.Object parentElement)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>parentElement</code>
</p>
<h3>Returns</h3>
<p>
<code>java.lang.Object[]</code>
</p>
<hr>
<h2>getElements</h2>
<p>
<code>public java.lang.Object[] <strong>getElements</strong>(java.lang.Object inputElement)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>inputElement</code>
</p>
<h3>Returns</h3>
<p>
<code>java.lang.Object[]</code>
</p>
<hr>
<h2>getParent</h2>
<p>
<code>public java.lang.Object <strong>getParent</strong>(java.lang.Object element)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>element</code>
</p>
<h3>Returns</h3>
<p>
<code>java.lang.Object</code>
</p>
<hr>
<h2>hasChildren</h2>
<p>
<code>public boolean <strong>hasChildren</strong>(java.lang.Object element)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>element</code>
</p>
<h3>Returns</h3>
<p>
<code>boolean</code>
</p>
<hr>
<h2>inputChanged</h2>
<p>
<code>public void <strong>inputChanged</strong>(Viewer viewer
         ,
      java.lang.Object oldInput
         ,
      java.lang.Object newInput)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>viewer</code>
</p>
<p>
<code>oldInput</code>
</p>
<p>
<code>newInput</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.views</strong></font>
<br>
            Class DOMViewerFilter</h2>
<br>
<hr>
<pre>public class <strong>DOMViewerFilter</strong>
extends ViewerFilter</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>DOMViewerFilter</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code>select(Viewer viewer
         ,
      java.lang.Object parentElement
         ,
      java.lang.Object element)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>DOMViewerFilter</h2>
<p>
<code>public <strong>DOMViewerFilter</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>select</h2>
<p>
<code>public boolean <strong>select</strong>(Viewer viewer
         ,
      java.lang.Object parentElement
         ,
      java.lang.Object element)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>viewer</code>
</p>
<p>
<code>parentElement</code>
</p>
<p>
<code>element</code>
</p>
<h3>Returns</h3>
<p>
<code>boolean</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.views</strong></font>
<br>
            Class EditNamespacePrefixDialog</h2>
<br>
<hr>
<pre>public class <strong>EditNamespacePrefixDialog</strong>
extends Dialog</pre>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected org.eclipse.swt.widgets.Label</code></td><td width="80%" align="left"><code>errorMessageLabel</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected java.util.List</code></td><td width="80%" align="left"><code>namespaceInfoList</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected IPath</code></td><td width="80%" align="left"><code>resourceLocation</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>EditNamespacePrefixDialog</strong>(org.eclipse.swt.widgets.Shell parentShell
         ,
      IPath resourceLocation)</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected void</code></td><td width="" align="left"><code>createButtonsForButtonBar(org.eclipse.swt.widgets.Composite parent)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected org.eclipse.swt.widgets.Control</code></td><td width="" align="left"><code>createDialogArea(org.eclipse.swt.widgets.Composite parent)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected org.eclipse.swt.widgets.Control</code></td><td width="" align="left"><code>getDialogArea(org.eclipse.swt.widgets.Composite parent)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.util.List</code></td><td width="" align="left"><code>getNamespaceInfoList()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>setNamespaceInfoList(java.util.List list)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>updateErrorMessage(java.util.List namespaceInfoList)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>updateOccured(java.lang.Object object
         ,
      java.lang.Object arg)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>errorMessageLabel</h2>
<p>
<code>protected org.eclipse.swt.widgets.Label <strong>errorMessageLabel</strong></code>
</p>
<hr>
<h2>namespaceInfoList</h2>
<p>
<code>protected java.util.List <strong>namespaceInfoList</strong></code>
</p>
<hr>
<h2>resourceLocation</h2>
<p>
<code>protected IPath <strong>resourceLocation</strong></code>
</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>EditNamespacePrefixDialog</h2>
<p>
<code>public <strong>EditNamespacePrefixDialog</strong>(org.eclipse.swt.widgets.Shell parentShell
         ,
      IPath resourceLocation)</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>createButtonsForButtonBar</h2>
<p>
<code>protected void <strong>createButtonsForButtonBar</strong>(org.eclipse.swt.widgets.Composite parent)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>parent</code>
</p>
<hr>
<h2>createDialogArea</h2>
<p>
<code>protected org.eclipse.swt.widgets.Control <strong>createDialogArea</strong>(org.eclipse.swt.widgets.Composite parent)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>parent</code>
</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.swt.widgets.Control</code>
</p>
<hr>
<h2>getDialogArea</h2>
<p>
<code>protected org.eclipse.swt.widgets.Control <strong>getDialogArea</strong>(org.eclipse.swt.widgets.Composite parent)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>parent</code>
</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.swt.widgets.Control</code>
</p>
<hr>
<h2>getNamespaceInfoList</h2>
<p>
<code>public java.util.List <strong>getNamespaceInfoList</strong>()</code>
</p>
<p></p>
<h3>Returns</h3>
<p>
<code>java.util.List</code>
</p>
<hr>
<h2>setNamespaceInfoList</h2>
<p>
<code>public void <strong>setNamespaceInfoList</strong>(java.util.List list)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>list</code>
</p>
<hr>
<h2>updateErrorMessage</h2>
<p>
<code>public void <strong>updateErrorMessage</strong>(java.util.List namespaceInfoList)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>namespaceInfoList</code>
</p>
<hr>
<h2>updateOccured</h2>
<p>
<code>public void <strong>updateOccured</strong>(java.lang.Object object
         ,
      java.lang.Object arg)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>object</code>
</p>
<p>
<code>arg</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.views</strong></font>
<br>
            Class XPathNavigator</h2>
<br>
<hr>
<pre>public class <strong>XPathNavigator</strong>
extends ViewPart</pre>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected IMemento</code></td><td width="80%" align="left"><code>memento</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>MEMENTO_QUERYCONTEXT_DOCUMENT</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>MEMENTO_QUERYCONTEXT_KEY</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>MEMENTO_QUERYCONTEXT_SELECTION</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>MEMENTO_XPATHNAVIGATOR_SECTION</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>MEMENTO_XPATHQUERY_KEY</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected java.util.WeakHashMap</code></td><td width="80%" align="left"><code>namespaceInfo</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathNavigator</strong>()</code></td>
</tr>
<tr>
<td><code><strong>XPathNavigator.EditorReferenceLabelProvider</strong>()</code></td>
</tr>
<tr>
<td><code><strong>XPathNavigator.RefreshAction</strong>()</code></td>
</tr>
<tr>
<td><code><strong>XPathNavigator.ShowInSourceAction</strong>()</code></td>
</tr>
<tr>
<td><code><strong>XPathNavigator.XMLEditorsContentProvider</strong>()</code></td>
</tr>
<tr>
<td><code><strong>XPathNavigator.XPathAction</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>createPartControl(org.eclipse.swt.widgets.Composite parent)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               This is a callback that will allow us to create the viewer and initialize
 it.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected org.w3c.dom.Element</code></td><td width="" align="left"><code>getQueryContext()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected org.w3c.dom.Document</code></td><td width="" align="left"><code>getSelectedDocument()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>init(IViewSite site
         ,
      IMemento memento)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected void</code></td><td width="" align="left"><code>restoreState()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>saveState(IMemento memento)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>setFocus()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Passing the focus request to the viewer's control.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>update()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>memento</h2>
<p>
<code>protected IMemento <strong>memento</strong></code>
</p>
<hr>
<h2>MEMENTO_QUERYCONTEXT_DOCUMENT</h2>
<p>
<code>public static  java.lang.String <strong>MEMENTO_QUERYCONTEXT_DOCUMENT</strong></code>
</p>
<hr>
<h2>MEMENTO_QUERYCONTEXT_KEY</h2>
<p>
<code>public static  java.lang.String <strong>MEMENTO_QUERYCONTEXT_KEY</strong></code>
</p>
<hr>
<h2>MEMENTO_QUERYCONTEXT_SELECTION</h2>
<p>
<code>public static  java.lang.String <strong>MEMENTO_QUERYCONTEXT_SELECTION</strong></code>
</p>
<hr>
<h2>MEMENTO_XPATHNAVIGATOR_SECTION</h2>
<p>
<code>public static  java.lang.String <strong>MEMENTO_XPATHNAVIGATOR_SECTION</strong></code>
</p>
<hr>
<h2>MEMENTO_XPATHQUERY_KEY</h2>
<p>
<code>public static  java.lang.String <strong>MEMENTO_XPATHQUERY_KEY</strong></code>
</p>
<hr>
<h2>namespaceInfo</h2>
<p>
<code>protected java.util.WeakHashMap <strong>namespaceInfo</strong></code>
</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathNavigator</h2>
<p>
<code>public <strong>XPathNavigator</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>createPartControl</h2>
<p>
<code>public void <strong>createPartControl</strong>(org.eclipse.swt.widgets.Composite parent)</code>
</p>
<p>This is a callback that will allow us to create the viewer and initialize
 it.</p>
<h3>Parameters</h3>
<p>
<code>parent</code>
</p>
<hr>
<h2>getQueryContext</h2>
<p>
<code>protected org.w3c.dom.Element <strong>getQueryContext</strong>()</code>
</p>
<p></p>
<h3>Returns</h3>
<p>
<code>org.w3c.dom.Element</code>
</p>
<hr>
<h2>getSelectedDocument</h2>
<p>
<code>protected org.w3c.dom.Document <strong>getSelectedDocument</strong>()</code>
</p>
<p></p>
<h3>Returns</h3>
<p>
<code>org.w3c.dom.Document</code>
</p>
<hr>
<h2>init</h2>
<p>
<code>public void <strong>init</strong>(IViewSite site
         ,
      IMemento memento)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>site</code>
</p>
<p>
<code>memento</code>
</p>
<h3>Throws:</h3>
<p>
<code>PartInitException</code>
</p>
<hr>
<h2>restoreState</h2>
<p>
<code>protected void <strong>restoreState</strong>()</code>
</p>
<p></p>
<hr>
<h2>saveState</h2>
<p>
<code>public void <strong>saveState</strong>(IMemento memento)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>memento</code>
</p>
<hr>
<h2>setFocus</h2>
<p>
<code>public void <strong>setFocus</strong>()</code>
</p>
<p>Passing the focus request to the viewer's control.</p>
<hr>
<h2>update</h2>
<p>
<code>public void <strong>update</strong>()</code>
</p>
<p></p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.views</strong></font>
<br>
            Class XPathNavigator.XPathAction</h2>
<br>
<hr>
<pre>package-private class <strong>XPathNavigator.XPathAction</strong>
extends Action</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathNavigator.XPathAction</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>run()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathNavigator.XPathAction</h2>
<p>
<code>package-private <strong>XPathNavigator.XPathAction</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>run</h2>
<p>
<code>public void <strong>run</strong>()</code>
</p>
<p></p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.views</strong></font>
<br>
            Class XPathNavigator.RefreshAction</h2>
<br>
<hr>
<pre>package-private class <strong>XPathNavigator.RefreshAction</strong>
extends Action</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathNavigator.RefreshAction</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>run()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathNavigator.RefreshAction</h2>
<p>
<code>package-private <strong>XPathNavigator.RefreshAction</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>run</h2>
<p>
<code>public void <strong>run</strong>()</code>
</p>
<p></p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.views</strong></font>
<br>
            Class XPathNavigator.ShowInSourceAction</h2>
<br>
<hr>
<pre>package-private class <strong>XPathNavigator.ShowInSourceAction</strong>
extends Action</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathNavigator.ShowInSourceAction</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>run()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathNavigator.ShowInSourceAction</h2>
<p>
<code>package-private <strong>XPathNavigator.ShowInSourceAction</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>run</h2>
<p>
<code>public void <strong>run</strong>()</code>
</p>
<p></p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.views</strong></font>
<br>
            Class XPathNavigator.XMLEditorsContentProvider</h2>
<br>
<hr>
<pre>package-private class <strong>XPathNavigator.XMLEditorsContentProvider</strong>
extends java.lang.Object</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathNavigator.XMLEditorsContentProvider</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>dispose()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.Object[]</code></td><td width="" align="left"><code>getElements(java.lang.Object inputElement)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>inputChanged(Viewer viewer
         ,
      java.lang.Object oldInput
         ,
      java.lang.Object newInput)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathNavigator.XMLEditorsContentProvider</h2>
<p>
<code>package-private <strong>XPathNavigator.XMLEditorsContentProvider</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>dispose</h2>
<p>
<code>public void <strong>dispose</strong>()</code>
</p>
<p></p>
<hr>
<h2>getElements</h2>
<p>
<code>public java.lang.Object[] <strong>getElements</strong>(java.lang.Object inputElement)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>inputElement</code>
</p>
<h3>Returns</h3>
<p>
<code>java.lang.Object[]</code>
</p>
<hr>
<h2>inputChanged</h2>
<p>
<code>public void <strong>inputChanged</strong>(Viewer viewer
         ,
      java.lang.Object oldInput
         ,
      java.lang.Object newInput)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>viewer</code>
</p>
<p>
<code>oldInput</code>
</p>
<p>
<code>newInput</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.views</strong></font>
<br>
            Class XPathNavigator.EditorReferenceLabelProvider</h2>
<br>
<hr>
<pre>package-private class <strong>XPathNavigator.EditorReferenceLabelProvider</strong>
extends LabelProvider</pre>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  char</code></td><td width="80%" align="left"><code>DIRTY_INDICATOR</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               A string used to indicate that an editor is dirty</td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathNavigator.EditorReferenceLabelProvider</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public org.eclipse.swt.graphics.Image</code></td><td width="" align="left"><code>getImage(java.lang.Object element)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code>getText(java.lang.Object element)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>DIRTY_INDICATOR</h2>
<p>
<code>public static  char <strong>DIRTY_INDICATOR</strong></code>
</p>
<table>
<tr>
<td>A string used to indicate that an editor is dirty</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathNavigator.EditorReferenceLabelProvider</h2>
<p>
<code>package-private <strong>XPathNavigator.EditorReferenceLabelProvider</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>getImage</h2>
<p>
<code>public org.eclipse.swt.graphics.Image <strong>getImage</strong>(java.lang.Object element)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>element</code>
</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.swt.graphics.Image</code>
</p>
<hr>
<h2>getText</h2>
<p>
<code>public java.lang.String <strong>getText</strong>(java.lang.Object element)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>element</code>
</p>
<h3>Returns</h3>
<p>
<code>java.lang.String</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.views</strong></font>
<br>
            Class XPathNavigator.XPathAction</h2>
<br>
<hr>
<pre>package-private class <strong>XPathNavigator.XPathAction</strong>
extends Action</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathNavigator.XPathAction</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>run()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathNavigator.XPathAction</h2>
<p>
<code>package-private <strong>XPathNavigator.XPathAction</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>run</h2>
<p>
<code>public void <strong>run</strong>()</code>
</p>
<p></p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.views</strong></font>
<br>
            Class XPathNavigator.RefreshAction</h2>
<br>
<hr>
<pre>package-private class <strong>XPathNavigator.RefreshAction</strong>
extends Action</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathNavigator.RefreshAction</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>run()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathNavigator.RefreshAction</h2>
<p>
<code>package-private <strong>XPathNavigator.RefreshAction</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>run</h2>
<p>
<code>public void <strong>run</strong>()</code>
</p>
<p></p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.views</strong></font>
<br>
            Class XPathNavigator.ShowInSourceAction</h2>
<br>
<hr>
<pre>package-private class <strong>XPathNavigator.ShowInSourceAction</strong>
extends Action</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathNavigator.ShowInSourceAction</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>run()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathNavigator.ShowInSourceAction</h2>
<p>
<code>package-private <strong>XPathNavigator.ShowInSourceAction</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>run</h2>
<p>
<code>public void <strong>run</strong>()</code>
</p>
<p></p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.views</strong></font>
<br>
            Class XPathNavigator.XMLEditorsContentProvider</h2>
<br>
<hr>
<pre>package-private class <strong>XPathNavigator.XMLEditorsContentProvider</strong>
extends java.lang.Object</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathNavigator.XMLEditorsContentProvider</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>dispose()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.Object[]</code></td><td width="" align="left"><code>getElements(java.lang.Object inputElement)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>inputChanged(Viewer viewer
         ,
      java.lang.Object oldInput
         ,
      java.lang.Object newInput)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathNavigator.XMLEditorsContentProvider</h2>
<p>
<code>package-private <strong>XPathNavigator.XMLEditorsContentProvider</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>dispose</h2>
<p>
<code>public void <strong>dispose</strong>()</code>
</p>
<p></p>
<hr>
<h2>getElements</h2>
<p>
<code>public java.lang.Object[] <strong>getElements</strong>(java.lang.Object inputElement)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>inputElement</code>
</p>
<h3>Returns</h3>
<p>
<code>java.lang.Object[]</code>
</p>
<hr>
<h2>inputChanged</h2>
<p>
<code>public void <strong>inputChanged</strong>(Viewer viewer
         ,
      java.lang.Object oldInput
         ,
      java.lang.Object newInput)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>viewer</code>
</p>
<p>
<code>oldInput</code>
</p>
<p>
<code>newInput</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.views</strong></font>
<br>
            Class XPathNavigator.EditorReferenceLabelProvider</h2>
<br>
<hr>
<pre>package-private class <strong>XPathNavigator.EditorReferenceLabelProvider</strong>
extends LabelProvider</pre>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  char</code></td><td width="80%" align="left"><code>DIRTY_INDICATOR</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               A string used to indicate that an editor is dirty</td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathNavigator.EditorReferenceLabelProvider</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public org.eclipse.swt.graphics.Image</code></td><td width="" align="left"><code>getImage(java.lang.Object element)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code>getText(java.lang.Object element)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>DIRTY_INDICATOR</h2>
<p>
<code>public static  char <strong>DIRTY_INDICATOR</strong></code>
</p>
<table>
<tr>
<td>A string used to indicate that an editor is dirty</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathNavigator.EditorReferenceLabelProvider</h2>
<p>
<code>package-private <strong>XPathNavigator.EditorReferenceLabelProvider</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>getImage</h2>
<p>
<code>public org.eclipse.swt.graphics.Image <strong>getImage</strong>(java.lang.Object element)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>element</code>
</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.swt.graphics.Image</code>
</p>
<hr>
<h2>getText</h2>
<p>
<code>public java.lang.String <strong>getText</strong>(java.lang.Object element)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>element</code>
</p>
<h3>Returns</h3>
<p>
<code>java.lang.String</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.internal.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.internal.ui.views</strong></font>
<br>
            Class JFaceNodeContentProviderXPath</h2>
<br>
<hr>
<pre>public class <strong>JFaceNodeContentProviderXPath</strong>
extends java.lang.Object</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>JFaceNodeContentProviderXPath</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>dispose()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected IJFaceNodeAdapter</code></td><td width="" align="left"><code>getAdapter(java.lang.Object adaptable)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.Object[]</code></td><td width="" align="left"><code>getChildren(java.lang.Object object)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.Object[]</code></td><td width="" align="left"><code>getElements(java.lang.Object object)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.Object</code></td><td width="" align="left"><code>getParent(java.lang.Object object)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code>hasChildren(java.lang.Object object)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>inputChanged(Viewer viewer
         ,
      java.lang.Object oldInput
         ,
      java.lang.Object newInput)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>JFaceNodeContentProviderXPath</h2>
<p>
<code>public <strong>JFaceNodeContentProviderXPath</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>dispose</h2>
<p>
<code>public void <strong>dispose</strong>()</code>
</p>
<p></p>
<hr>
<h2>getAdapter</h2>
<p>
<code>protected IJFaceNodeAdapter <strong>getAdapter</strong>(java.lang.Object adaptable)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>adaptable</code>
</p>
<h3>Returns</h3>
<p>
<code>IJFaceNodeAdapter</code>
</p>
<hr>
<h2>getChildren</h2>
<p>
<code>public java.lang.Object[] <strong>getChildren</strong>(java.lang.Object object)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>object</code>
</p>
<h3>Returns</h3>
<p>
<code>java.lang.Object[]</code>
</p>
<hr>
<h2>getElements</h2>
<p>
<code>public java.lang.Object[] <strong>getElements</strong>(java.lang.Object object)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>object</code>
</p>
<h3>Returns</h3>
<p>
<code>java.lang.Object[]</code>
</p>
<hr>
<h2>getParent</h2>
<p>
<code>public java.lang.Object <strong>getParent</strong>(java.lang.Object object)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>object</code>
</p>
<h3>Returns</h3>
<p>
<code>java.lang.Object</code>
</p>
<hr>
<h2>hasChildren</h2>
<p>
<code>public boolean <strong>hasChildren</strong>(java.lang.Object object)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>object</code>
</p>
<h3>Returns</h3>
<p>
<code>boolean</code>
</p>
<hr>
<h2>inputChanged</h2>
<p>
<code>public void <strong>inputChanged</strong>(Viewer viewer
         ,
      java.lang.Object oldInput
         ,
      java.lang.Object newInput)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>viewer</code>
</p>
<p>
<code>oldInput</code>
</p>
<p>
<code>newInput</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.internal.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.internal.ui.views</strong></font>
<br>
            Class JFaceNodeLabelProviderXPath</h2>
<br>
<hr>
<pre>public class <strong>JFaceNodeLabelProviderXPath</strong>
extends LabelProvider</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>JFaceNodeLabelProviderXPath</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected IJFaceNodeAdapter</code></td><td width="" align="left"><code>getAdapter(java.lang.Object adaptable)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public org.eclipse.swt.graphics.Image</code></td><td width="" align="left"><code>getImage(java.lang.Object element)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code>getText(java.lang.Object element)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code>isLabelProperty(java.lang.Object element
         ,
      java.lang.String property)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>JFaceNodeLabelProviderXPath</h2>
<p>
<code>public <strong>JFaceNodeLabelProviderXPath</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>getAdapter</h2>
<p>
<code>protected IJFaceNodeAdapter <strong>getAdapter</strong>(java.lang.Object adaptable)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>adaptable</code>
</p>
<h3>Returns</h3>
<p>
<code>IJFaceNodeAdapter</code>
</p>
<hr>
<h2>getImage</h2>
<p>
<code>public org.eclipse.swt.graphics.Image <strong>getImage</strong>(java.lang.Object element)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>element</code>
</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.swt.graphics.Image</code>
</p>
<hr>
<h2>getText</h2>
<p>
<code>public java.lang.String <strong>getText</strong>(java.lang.Object element)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>element</code>
</p>
<h3>Returns</h3>
<p>
<code>java.lang.String</code>
</p>
<hr>
<h2>isLabelProperty</h2>
<p>
<code>public boolean <strong>isLabelProperty</strong>(java.lang.Object element
         ,
      java.lang.String property)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>element</code>
</p>
<p>
<code>property</code>
</p>
<h3>Returns</h3>
<p>
<code>boolean</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.internal.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.internal.ui.views</strong></font>
<br>
            Class Messages</h2>
<br>
<hr>
<pre>public class <strong>Messages</strong>
extends NLS</pre>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathComputer_0</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathComputer_5</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathView_0</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathView_1</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathView_2</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathView_8</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathViewActions_0</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPathViewActions_1</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<br>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathComputer_0</h2>
<p>
<code>public static  java.lang.String <strong>XPathComputer_0</strong></code>
</p>
<hr>
<h2>XPathComputer_5</h2>
<p>
<code>public static  java.lang.String <strong>XPathComputer_5</strong></code>
</p>
<hr>
<h2>XPathView_0</h2>
<p>
<code>public static  java.lang.String <strong>XPathView_0</strong></code>
</p>
<hr>
<h2>XPathView_1</h2>
<p>
<code>public static  java.lang.String <strong>XPathView_1</strong></code>
</p>
<hr>
<h2>XPathView_2</h2>
<p>
<code>public static  java.lang.String <strong>XPathView_2</strong></code>
</p>
<hr>
<h2>XPathView_8</h2>
<p>
<code>public static  java.lang.String <strong>XPathView_8</strong></code>
</p>
<hr>
<h2>XPathViewActions_0</h2>
<p>
<code>public static  java.lang.String <strong>XPathViewActions_0</strong></code>
</p>
<hr>
<h2>XPathViewActions_1</h2>
<p>
<code>public static  java.lang.String <strong>XPathViewActions_1</strong></code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.internal.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.internal.ui.views</strong></font>
<br>
            Class XPathComputer</h2>
<br>
<hr>
<pre>public class <strong>XPathComputer</strong>
extends java.lang.Object</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathComputer</strong>(org.eclipse.wst.xml.xpath.internal.ui.views.XPathView xpathView)</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>compute()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>dispose()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>setModel(IStructuredModel model)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>setSelectedNode(org.w3c.dom.Node node)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>setText(java.lang.String text)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathComputer</h2>
<p>
<code>public <strong>XPathComputer</strong>(org.eclipse.wst.xml.xpath.internal.ui.views.XPathView xpathView)</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>compute</h2>
<p>
<code>public void <strong>compute</strong>()</code>
</p>
<p></p>
<hr>
<h2>dispose</h2>
<p>
<code>public void <strong>dispose</strong>()</code>
</p>
<p></p>
<hr>
<h2>setModel</h2>
<p>
<code>public void <strong>setModel</strong>(IStructuredModel model)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>model</code>
</p>
<hr>
<h2>setSelectedNode</h2>
<p>
<code>public void <strong>setSelectedNode</strong>(org.w3c.dom.Node node)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>node</code>
</p>
<hr>
<h2>setText</h2>
<p>
<code>public void <strong>setText</strong>(java.lang.String text)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>text</code>
</p>
<h3>Throws:</h3>
<p>
<code>javax.xml.xpath.XPathExpressionException</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.internal.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.internal.ui.views</strong></font>
<br>
            Class XPathView</h2>
<br>
<hr>
<pre>public class <strong>XPathView</strong>
extends ViewPart</pre>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathView</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>createPartControl(org.eclipse.swt.widgets.Composite parent)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>dispose()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.Object</code></td><td width="" align="left"><code>getAdapter(java.lang.Class key)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>init(IViewSite site
         ,
      IMemento memento)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>saveState(IMemento memento)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>setFocus()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private void</code></td><td width="" align="left"><code>xpathRecomputed(org.w3c.dom.NodeList nodeList)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathView</h2>
<p>
<code>public <strong>XPathView</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>createPartControl</h2>
<p>
<code>public void <strong>createPartControl</strong>(org.eclipse.swt.widgets.Composite parent)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>parent</code>
</p>
<hr>
<h2>dispose</h2>
<p>
<code>public void <strong>dispose</strong>()</code>
</p>
<p></p>
<hr>
<h2>getAdapter</h2>
<p>
<code>public java.lang.Object <strong>getAdapter</strong>(java.lang.Class key)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>key</code>
</p>
<h3>Returns</h3>
<p>
<code>java.lang.Object</code>
</p>
<hr>
<h2>init</h2>
<p>
<code>public void <strong>init</strong>(IViewSite site
         ,
      IMemento memento)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>site</code>
</p>
<p>
<code>memento</code>
</p>
<h3>Throws:</h3>
<p>
<code>PartInitException</code>
</p>
<hr>
<h2>saveState</h2>
<p>
<code>public void <strong>saveState</strong>(IMemento memento)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>memento</code>
</p>
<hr>
<h2>setFocus</h2>
<p>
<code>public void <strong>setFocus</strong>()</code>
</p>
<p></p>
<hr>
<h2>xpathRecomputed</h2>
<p>
<code>package-private void <strong>xpathRecomputed</strong>(org.w3c.dom.NodeList nodeList)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>nodeList</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.internal.ui.views</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.internal.ui.views</strong></font>
<br>
            Class XPathViewActions</h2>
<br>
<hr>
<pre>package-private class <strong>XPathViewActions</strong>
extends java.lang.Object</pre>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private boolean</code></td><td width="80%" align="left"><code>linkWithEditor</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathViewActions</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected IAction[]</code></td><td width="" align="left"><code>createMenuContributions(TreeViewer viewer)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected IAction[]</code></td><td width="" align="left"><code>createToolbarContributions(TreeViewer viewer)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private void</code></td><td width="" align="left"><code>fillContextMenu(IMenuManager manager)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public ISelection</code></td><td width="" align="left"><code>getSelection(TreeViewer viewer
         ,
      ISelection selection)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code>isLinkedWithEditor(TreeViewer treeViewer)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private void</code></td><td width="" align="left"><code>setLinkWithEditor(boolean isLinkWithEditor)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>linkWithEditor</h2>
<p>
<code>package-private boolean <strong>linkWithEditor</strong></code>
</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathViewActions</h2>
<p>
<code>package-private <strong>XPathViewActions</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>createMenuContributions</h2>
<p>
<code>protected IAction[] <strong>createMenuContributions</strong>(TreeViewer viewer)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>viewer</code>
</p>
<h3>Returns</h3>
<p>
<code>IAction[]</code>
</p>
<hr>
<h2>createToolbarContributions</h2>
<p>
<code>protected IAction[] <strong>createToolbarContributions</strong>(TreeViewer viewer)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>viewer</code>
</p>
<h3>Returns</h3>
<p>
<code>IAction[]</code>
</p>
<hr>
<h2>fillContextMenu</h2>
<p>
<code>package-private void <strong>fillContextMenu</strong>(IMenuManager manager)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>manager</code>
</p>
<hr>
<h2>getSelection</h2>
<p>
<code>public ISelection <strong>getSelection</strong>(TreeViewer viewer
         ,
      ISelection selection)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>viewer</code>
</p>
<p>
<code>selection</code>
</p>
<h3>Returns</h3>
<p>
<code>ISelection</code>
</p>
<hr>
<h2>isLinkedWithEditor</h2>
<p>
<code>public boolean <strong>isLinkedWithEditor</strong>(TreeViewer treeViewer)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>treeViewer</code>
</p>
<h3>Returns</h3>
<p>
<code>boolean</code>
</p>
<hr>
<h2>setLinkWithEditor</h2>
<p>
<code>package-private void <strong>setLinkWithEditor</strong>(boolean isLinkWithEditor)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>isLinkWithEditor</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.internal.contentassist</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.internal.contentassist</strong></font>
<br>
            Class CustomTemplateProposal</h2>
<br>
<hr>
<pre>public class <strong>CustomTemplateProposal</strong>
extends TemplateProposal</pre>Purpose of this class is to make the additional proposal info into content
 fit for an HTML viewer (by escaping characters)<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>CustomTemplateProposal</strong>(Template template
         ,
      TemplateContext context
         ,
      IRegion region
         ,
      org.eclipse.swt.graphics.Image image
         ,
      int relevance)</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code>getAdditionalProposalInfo()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code>getDisplayString()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>CustomTemplateProposal</h2>
<p>
<code>public <strong>CustomTemplateProposal</strong>(Template template
         ,
      TemplateContext context
         ,
      IRegion region
         ,
      org.eclipse.swt.graphics.Image image
         ,
      int relevance)</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>getAdditionalProposalInfo</h2>
<p>
<code>public java.lang.String <strong>getAdditionalProposalInfo</strong>()</code>
</p>
<p></p>
<h3>Returns</h3>
<p>
<code>java.lang.String</code>
</p>
<hr>
<h2>getDisplayString</h2>
<p>
<code>public java.lang.String <strong>getDisplayString</strong>()</code>
</p>
<p></p>
<h3>Returns</h3>
<p>
<code>java.lang.String</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.internal.contentassist</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.internal.contentassist</strong></font>
<br>
            Class XPathTemplateCompletionProcessor</h2>
<br>
<hr>
<pre>public class <strong>XPathTemplateCompletionProcessor</strong>
extends TemplateCompletionProcessor</pre>Completion processor for XML Templates. Most of the work is already done by
 the XML Content Assist processor, so by the time the
 XMLTemplateCompletionProcessor is asked for content assist proposals, the
 XML content assist processor has already set the context type for
 templates.<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathTemplateCompletionProcessor</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public ICompletionProposal[]</code></td><td width="" align="left"><code>computeCompletionProposals(ITextViewer viewer
         ,
      int offset)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected ICompletionProposal</code></td><td width="" align="left"><code>createProposal(Template template
         ,
      TemplateContext context
         ,
      IRegion region
         ,
      int relevance)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected TemplateContextType</code></td><td width="" align="left"><code>getContextType(ITextViewer viewer
         ,
      IRegion region)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected org.eclipse.swt.graphics.Image</code></td><td width="" align="left"><code>getImage(Template template)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>protected Template[]</code></td><td width="" align="left"><code>getTemplates(java.lang.String contextTypeId)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>setContextType(java.lang.String contextTypeId)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathTemplateCompletionProcessor</h2>
<p>
<code>public <strong>XPathTemplateCompletionProcessor</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>computeCompletionProposals</h2>
<p>
<code>public ICompletionProposal[] <strong>computeCompletionProposals</strong>(ITextViewer viewer
         ,
      int offset)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>viewer</code>
</p>
<p>
<code>offset</code>
</p>
<h3>Returns</h3>
<p>
<code>ICompletionProposal[]</code>
</p>
<hr>
<h2>createProposal</h2>
<p>
<code>protected ICompletionProposal <strong>createProposal</strong>(Template template
         ,
      TemplateContext context
         ,
      IRegion region
         ,
      int relevance)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>template</code>
</p>
<p>
<code>context</code>
</p>
<p>
<code>region</code>
</p>
<p>
<code>relevance</code>
</p>
<h3>Returns</h3>
<p>
<code>ICompletionProposal</code>
</p>
<hr>
<h2>getContextType</h2>
<p>
<code>protected TemplateContextType <strong>getContextType</strong>(ITextViewer viewer
         ,
      IRegion region)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>viewer</code>
</p>
<p>
<code>region</code>
</p>
<h3>Returns</h3>
<p>
<code>TemplateContextType</code>
</p>
<hr>
<h2>getImage</h2>
<p>
<code>protected org.eclipse.swt.graphics.Image <strong>getImage</strong>(Template template)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>template</code>
</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.swt.graphics.Image</code>
</p>
<hr>
<h2>getTemplates</h2>
<p>
<code>protected Template[] <strong>getTemplates</strong>(java.lang.String contextTypeId)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>contextTypeId</code>
</p>
<h3>Returns</h3>
<p>
<code>Template[]</code>
</p>
<hr>
<h2>setContextType</h2>
<p>
<code>public void <strong>setContextType</strong>(java.lang.String contextTypeId)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>contextTypeId</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.internal.templates</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.internal.templates</strong></font>
<br>
            Class TemplateContextTypeIdsXPath</h2>
<br>
<hr>
<pre>public class <strong>TemplateContextTypeIdsXPath</strong>
extends java.lang.Object</pre>This class contains the names and values for the XSL ContenxtTypes for
 the XPath completion proposals.<p></p>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>AXIS</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add Javadoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>CUSTOM</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add Javadoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>EXSLT</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add Javadoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>OPERATOR</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add Javadoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPATH</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add Javadoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPATH2</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add Javadoc</td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>TemplateContextTypeIdsXPath</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>AXIS</h2>
<p>
<code>public static  java.lang.String <strong>AXIS</strong></code>
</p>
<table>
<tr>
<td>TODO: Add Javadoc</td>
</tr>
</table>
<hr>
<h2>CUSTOM</h2>
<p>
<code>public static  java.lang.String <strong>CUSTOM</strong></code>
</p>
<table>
<tr>
<td>TODO: Add Javadoc</td>
</tr>
</table>
<hr>
<h2>EXSLT</h2>
<p>
<code>public static  java.lang.String <strong>EXSLT</strong></code>
</p>
<table>
<tr>
<td>TODO: Add Javadoc</td>
</tr>
</table>
<hr>
<h2>OPERATOR</h2>
<p>
<code>public static  java.lang.String <strong>OPERATOR</strong></code>
</p>
<table>
<tr>
<td>TODO: Add Javadoc</td>
</tr>
</table>
<hr>
<h2>XPATH</h2>
<p>
<code>public static  java.lang.String <strong>XPATH</strong></code>
</p>
<table>
<tr>
<td>TODO: Add Javadoc</td>
</tr>
</table>
<hr>
<h2>XPATH2</h2>
<p>
<code>public static  java.lang.String <strong>XPATH2</strong></code>
</p>
<table>
<tr>
<td>TODO: Add Javadoc</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>TemplateContextTypeIdsXPath</h2>
<p>
<code>public <strong>TemplateContextTypeIdsXPath</strong>()</code>
</p>
<p></p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.internal.util</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.internal.util</strong></font>
<br>
            Class XPathPluginImageHelper</h2>
<br>
<hr>
<pre>public class <strong>XPathPluginImageHelper</strong>
extends java.lang.Object</pre>Helper class to handle images provided by this plug-in.
 
 NOTE: For internal use only. For images used externally, please use the
 Shared***ImageHelper class instead.<p></p>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathPluginImageHelper</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public org.eclipse.swt.graphics.Image</code></td><td width="" align="left"><code>getImage(java.lang.String resource)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Retrieves the image associated with resource from the image registry.
 If the image cannot be retrieved, attempt to find and load the image at
 the location specified in resource.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public ImageDescriptor</code></td><td width="" align="left"><code>getImageDescriptor(java.lang.String resource)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Retrieves the image descriptor associated with resource from the image
 descriptor registry. If the image descriptor cannot be retrieved,
 attempt to find and load the image descriptor at the location specified
 in resource.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static org.eclipse.wst.xml.xpath.ui.internal.util.XPathPluginImageHelper</code></td><td width="" align="left"><code>getInstance()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Gets the instance.</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathPluginImageHelper</h2>
<p>
<code>public <strong>XPathPluginImageHelper</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>getImage</h2>
<p>
<code>public org.eclipse.swt.graphics.Image <strong>getImage</strong>(java.lang.String resource)</code>
</p>
<p>Retrieves the image associated with resource from the image registry.
 If the image cannot be retrieved, attempt to find and load the image at
 the location specified in resource.</p>
<h3>Parameters</h3>
<p>
<code>resource</code> - the image to retrieve</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.swt.graphics.Image</code> - Image the image associated with resource or null if one could          not be found</p>
<hr>
<h2>getImageDescriptor</h2>
<p>
<code>public ImageDescriptor <strong>getImageDescriptor</strong>(java.lang.String resource)</code>
</p>
<p>Retrieves the image descriptor associated with resource from the image
 descriptor registry. If the image descriptor cannot be retrieved,
 attempt to find and load the image descriptor at the location specified
 in resource.</p>
<h3>Parameters</h3>
<p>
<code>resource</code> - the image descriptor to retrieve</p>
<h3>Returns</h3>
<p>
<code>ImageDescriptor</code> - ImageDescriptor the image descriptor assocated with resource or          the default "missing" image descriptor if one could not be          found</p>
<hr>
<h2>getInstance</h2>
<p>
<code>public org.eclipse.wst.xml.xpath.ui.internal.util.XPathPluginImageHelper <strong>getInstance</strong>()</code>
</p>
<p>Gets the instance.</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.wst.xml.xpath.ui.internal.util.XPathPluginImageHelper</code> - Returns a XMLEditorPluginImageHelper</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xml.xpath.ui.internal.util</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xml.xpath.ui.internal.util</strong></font>
<br>
            Class XPathPluginImages</h2>
<br>
<hr>
<pre>public class <strong>XPathPluginImages</strong>
extends java.lang.Object</pre>Bundle of most images used by the XSL Plugins<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>IMG_OPERATOR</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Path to the XPATH Images used for Content Assist</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>IMG_VARIABLES</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Path to the XPATH Images used for Content Assist</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>IMG_XPATH_AXIS</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Path to the XPATH Images used for Content Assist</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>IMG_XPATH_FUNCTION</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Path to the XPATH Images used for Content Assist</td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XPathPluginImages</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>IMG_OPERATOR</h2>
<p>
<code>public static  java.lang.String <strong>IMG_OPERATOR</strong></code>
</p>
<table>
<tr>
<td>Path to the XPATH Images used for Content Assist</td>
</tr>
</table>
<hr>
<h2>IMG_VARIABLES</h2>
<p>
<code>public static  java.lang.String <strong>IMG_VARIABLES</strong></code>
</p>
<table>
<tr>
<td>Path to the XPATH Images used for Content Assist</td>
</tr>
</table>
<hr>
<h2>IMG_XPATH_AXIS</h2>
<p>
<code>public static  java.lang.String <strong>IMG_XPATH_AXIS</strong></code>
</p>
<table>
<tr>
<td>Path to the XPATH Images used for Content Assist</td>
</tr>
</table>
<hr>
<h2>IMG_XPATH_FUNCTION</h2>
<p>
<code>public static  java.lang.String <strong>IMG_XPATH_FUNCTION</strong></code>
</p>
<table>
<tr>
<td>Path to the XPATH Images used for Content Assist</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XPathPluginImages</h2>
<p>
<code>public <strong>XPathPluginImages</strong>()</code>
</p>
<p></p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xsl.core</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xsl.core</strong></font>
<br>
            Class ValidationPreferences</h2>
<br>
<hr>
<pre>public class <strong>ValidationPreferences</strong>
extends java.lang.Object</pre>Preference constants specific to the XSL validator.<p></p>
<p></p>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>CALL_TEMPLATES</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The level at which an unresolved called template is reported. 
 &lt;p&gt;
 Value is one of &lt;code&gt;IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO&lt;/code&gt;
 &lt;/p&gt;</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>CIRCULAR_REF</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The level at which an include/import circular references is reported.
 &lt;p&gt;
 Value is one of &lt;code&gt;IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO&lt;/code&gt;
 &lt;/p&gt;</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>DUPLICATE_PARAMETER</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The level at which a duplicate parameter is reported.
 &lt;p&gt;
 Value is one of &lt;code&gt;IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO&lt;/code&gt;
 &lt;/p&gt;</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>EMPTY_PARAM</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The level at which a parameter that does not have a default value and does not specify a value is reported.
 &lt;p&gt;
 Value is one of &lt;code&gt;IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO&lt;/code&gt;
 &lt;/p&gt;</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>MAX_ERRORS</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The maximum number of errors allowed per XSL file.
 &lt;p&gt;
 Value is of type &lt;code&gt;Integer&lt;/code&gt;.
 &lt;/p&gt;</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>MISSING_INCLUDE</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The level at which an unresolved import or included is reported.
 &lt;p&gt;
 Value is one of &lt;code&gt;IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO&lt;/code&gt;
 &lt;/p&gt;</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>MISSING_PARAM</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The level at which a missing parameter is reported.
 &lt;p&gt;
 Value is one of &lt;code&gt;IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO&lt;/code&gt;
 &lt;/p&gt;</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>NAME_ATTRIBUTE_EMPTY</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The level at which a parameter with an empty name attribute is reported.
 &lt;p&gt;
 Value is one of &lt;code&gt;IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO&lt;/code&gt;
 &lt;/p&gt;</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>NAME_ATTRIBUTE_MISSING</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The level at which a parameter without a name attribute is reported.
 &lt;p&gt;
 Value is one of &lt;code&gt;IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO&lt;/code&gt;
 &lt;/p&gt;</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>TEMPLATE_CONFLICT</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The level at which a template conflict is reported.
 &lt;p&gt;
 Value is one of &lt;code&gt;IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO&lt;/code&gt;
 &lt;/p&gt;</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XPATHS</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The level at which an invalid XPath is reported.
 &lt;p&gt;
 Value is one of &lt;code&gt;IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO&lt;/code&gt;
 &lt;/p&gt;</td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>ValidationPreferences</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>CALL_TEMPLATES</h2>
<p>
<code>public static  java.lang.String <strong>CALL_TEMPLATES</strong></code>
</p>
<table>
<tr>
<td>The level at which an unresolved called template is reported. 
 <p>
 Value is one of <code>IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO</code>
 </p></td>
</tr>
</table>
<hr>
<h2>CIRCULAR_REF</h2>
<p>
<code>public static  java.lang.String <strong>CIRCULAR_REF</strong></code>
</p>
<table>
<tr>
<td>The level at which an include/import circular references is reported.
 <p>
 Value is one of <code>IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO</code>
 </p></td>
</tr>
</table>
<hr>
<h2>DUPLICATE_PARAMETER</h2>
<p>
<code>public static  java.lang.String <strong>DUPLICATE_PARAMETER</strong></code>
</p>
<table>
<tr>
<td>The level at which a duplicate parameter is reported.
 <p>
 Value is one of <code>IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO</code>
 </p></td>
</tr>
</table>
<hr>
<h2>EMPTY_PARAM</h2>
<p>
<code>public static  java.lang.String <strong>EMPTY_PARAM</strong></code>
</p>
<table>
<tr>
<td>The level at which a parameter that does not have a default value and does not specify a value is reported.
 <p>
 Value is one of <code>IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO</code>
 </p></td>
</tr>
</table>
<hr>
<h2>MAX_ERRORS</h2>
<p>
<code>public static  java.lang.String <strong>MAX_ERRORS</strong></code>
</p>
<table>
<tr>
<td>The maximum number of errors allowed per XSL file.
 <p>
 Value is of type <code>Integer</code>.
 </p></td>
</tr>
</table>
<hr>
<h2>MISSING_INCLUDE</h2>
<p>
<code>public static  java.lang.String <strong>MISSING_INCLUDE</strong></code>
</p>
<table>
<tr>
<td>The level at which an unresolved import or included is reported.
 <p>
 Value is one of <code>IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO</code>
 </p></td>
</tr>
</table>
<hr>
<h2>MISSING_PARAM</h2>
<p>
<code>public static  java.lang.String <strong>MISSING_PARAM</strong></code>
</p>
<table>
<tr>
<td>The level at which a missing parameter is reported.
 <p>
 Value is one of <code>IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO</code>
 </p></td>
</tr>
</table>
<hr>
<h2>NAME_ATTRIBUTE_EMPTY</h2>
<p>
<code>public static  java.lang.String <strong>NAME_ATTRIBUTE_EMPTY</strong></code>
</p>
<table>
<tr>
<td>The level at which a parameter with an empty name attribute is reported.
 <p>
 Value is one of <code>IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO</code>
 </p></td>
</tr>
</table>
<hr>
<h2>NAME_ATTRIBUTE_MISSING</h2>
<p>
<code>public static  java.lang.String <strong>NAME_ATTRIBUTE_MISSING</strong></code>
</p>
<table>
<tr>
<td>The level at which a parameter without a name attribute is reported.
 <p>
 Value is one of <code>IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO</code>
 </p></td>
</tr>
</table>
<hr>
<h2>TEMPLATE_CONFLICT</h2>
<p>
<code>public static  java.lang.String <strong>TEMPLATE_CONFLICT</strong></code>
</p>
<table>
<tr>
<td>The level at which a template conflict is reported.
 <p>
 Value is one of <code>IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO</code>
 </p></td>
</tr>
</table>
<hr>
<h2>XPATHS</h2>
<p>
<code>public static  java.lang.String <strong>XPATHS</strong></code>
</p>
<table>
<tr>
<td>The level at which an invalid XPath is reported.
 <p>
 Value is one of <code>IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, IMarker.SEVERITY_INFO</code>
 </p></td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>ValidationPreferences</h2>
<p>
<code>public <strong>ValidationPreferences</strong>()</code>
</p>
<p></p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xsl.core</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xsl.core</strong></font>
<br>
            Class XSLCore</h2>
<br>
<hr>
<pre>public class <strong>XSLCore</strong>
extends java.lang.Object</pre>The interface to all aspects of the XSL core functionality.
 <p>
 This is responsible for building and maintaining the cache of built XSL models.
 </p><p></p>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XSL_CONTENT_TYPE</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The XSL content type (= org.eclipse.wst.xml.core.xslsource)</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XSL_NAMESPACE_URI</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The XSL namespace URI (= http://www.w3.org/1999/XSL/Transform)</td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public org.eclipse.wst.xsl.core.internal.model.StylesheetModel</code></td><td width="" align="left"><code>buildStylesheet(IFile file)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Completely rebuild the source file from its DOM</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>clean(IProject project
         ,
      IProgressMonitor monitor)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Clean all of the stylesheets from the given project.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static org.eclipse.wst.xsl.core.XSLCore</code></td><td width="" align="left"><code>getInstance()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the singleton <code>XSLCore</code> instance.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public org.eclipse.wst.xsl.core.internal.model.StylesheetModel</code></td><td width="" align="left"><code>getStylesheet(IFile file)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the cached stylesheet, or build it if it has not yet been built.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static boolean</code></td><td width="" align="left"><code>isXMLFile(IFile file)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Determine whether the given file is an XML file by inspecting its content types.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static boolean</code></td><td width="" align="left"><code>isXSLFile(IFile file)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Determine whether the given file is an XSL file by inspecting its content types.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static boolean</code></td><td width="" align="left"><code>isXSLNamespace(IDOMNode node)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static IFile</code></td><td width="" align="left"><code>resolveFile(IFile currentFile
         ,
      java.lang.String uri)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Locates a file for the given current file and URI.</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>XSL_CONTENT_TYPE</h2>
<p>
<code>public static  java.lang.String <strong>XSL_CONTENT_TYPE</strong></code>
</p>
<table>
<tr>
<td>The XSL content type (= org.eclipse.wst.xml.core.xslsource)</td>
</tr>
</table>
<hr>
<h2>XSL_NAMESPACE_URI</h2>
<p>
<code>public static  java.lang.String <strong>XSL_NAMESPACE_URI</strong></code>
</p>
<table>
<tr>
<td>The XSL namespace URI (= http://www.w3.org/1999/XSL/Transform)</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>buildStylesheet</h2>
<p>
<code>public org.eclipse.wst.xsl.core.internal.model.StylesheetModel <strong>buildStylesheet</strong>(IFile file)</code>
</p>
<p>Completely rebuild the source file from its DOM</p>
<h3>Parameters</h3>
<p>
<code>file</code>
</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.wst.xsl.core.internal.model.StylesheetModel</code> - the stylesheet model, or null if it could not be created.</p>
<hr>
<h2>clean</h2>
<p>
<code>public void <strong>clean</strong>(IProject project
         ,
      IProgressMonitor monitor)</code>
</p>
<p>Clean all of the stylesheets from the given project.</p>
<h3>Parameters</h3>
<p>
<code>project</code> - the project to be cleaned</p>
<p>
<code>monitor</code> - a progress monitor to track the clean progress</p>
<hr>
<h2>getInstance</h2>
<p>
<code>public org.eclipse.wst.xsl.core.XSLCore <strong>getInstance</strong>()</code>
</p>
<p>Get the singleton <code>XSLCore</code> instance.</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.wst.xsl.core.XSLCore</code> - the <code>XSLCore</code> instance</p>
<hr>
<h2>getStylesheet</h2>
<p>
<code>public org.eclipse.wst.xsl.core.internal.model.StylesheetModel <strong>getStylesheet</strong>(IFile file)</code>
</p>
<p>Get the cached stylesheet, or build it if it has not yet been built.</p>
<h3>Parameters</h3>
<p>
<code>file</code>
</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.wst.xsl.core.internal.model.StylesheetModel</code> - source file, or null if could not be built</p>
<hr>
<h2>isXMLFile</h2>
<p>
<code>public boolean <strong>isXMLFile</strong>(IFile file)</code>
</p>
<p>Determine whether the given file is an XML file by inspecting its content types.</p>
<h3>Parameters</h3>
<p>
<code>file</code> - the file to inspect</p>
<h3>Returns</h3>
<p>
<code>boolean</code> - true if this file is an XML file</p>
<hr>
<h2>isXSLFile</h2>
<p>
<code>public boolean <strong>isXSLFile</strong>(IFile file)</code>
</p>
<p>Determine whether the given file is an XSL file by inspecting its content types.</p>
<h3>Parameters</h3>
<p>
<code>file</code> - the file to inspect</p>
<h3>Returns</h3>
<p>
<code>boolean</code> - true if this file is an XSL file</p>
<hr>
<h2>isXSLNamespace</h2>
<p>
<code>public boolean <strong>isXSLNamespace</strong>(IDOMNode node)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>node</code>
</p>
<h3>Returns</h3>
<p>
<code>boolean</code>
</p>
<hr>
<h2>resolveFile</h2>
<p>
<code>public IFile <strong>resolveFile</strong>(IFile currentFile
         ,
      java.lang.String uri)</code>
</p>
<p>Locates a file for the given current file and URI.</p>
<h3>Parameters</h3>
<p>
<code>currentFile</code> - the file to resolve relative to</p>
<p>
<code>uri</code> - the relative URI</p>
<h3>Returns</h3>
<p>
<code>IFile</code> - the file at the URI relative to this <code>currentFile</code></p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xsl.core.internal</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xsl.core.internal</strong></font>
<br>
            Class Messages</h2>
<br>
<hr>
<pre>public class <strong>Messages</strong>
extends NLS</pre>
<p></p>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XSLCorePlugin_badInitializationData</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XSLCorePlugin_coreError</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XSLCorePlugin_parserConfiguration</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>Messages</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static void</code></td><td width="" align="left"><code>reloadMessages()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>XSLCorePlugin_badInitializationData</h2>
<p>
<code>public static  java.lang.String <strong>XSLCorePlugin_badInitializationData</strong></code>
</p>
<table>
<tr>
<td>TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<h2>XSLCorePlugin_coreError</h2>
<p>
<code>public static  java.lang.String <strong>XSLCorePlugin_coreError</strong></code>
</p>
<table>
<tr>
<td>TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<h2>XSLCorePlugin_parserConfiguration</h2>
<p>
<code>public static  java.lang.String <strong>XSLCorePlugin_parserConfiguration</strong></code>
</p>
<table>
<tr>
<td>TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>Messages</h2>
<p>
<code>public <strong>Messages</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>reloadMessages</h2>
<p>
<code>public void <strong>reloadMessages</strong>()</code>
</p>
<p>TODO: Add JavaDoc</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xsl.core.internal</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xsl.core.internal</strong></font>
<br>
            Class XSLCorePlugin</h2>
<br>
<hr>
<pre>public class <strong>XSLCorePlugin</strong>
extends Plugin</pre>The activator class controls the plug-in life cycle<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>PLUGIN_ID</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XSLCorePlugin</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static org.eclipse.wst.xsl.core.internal.XSLCorePlugin</code></td><td width="" align="left"><code>getDefault()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns the shared instance</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public javax.xml.parsers.SAXParserFactory</code></td><td width="" align="left"><code>getFactory()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Return the registered SAX parser factory or null if one
 does not exist.	 * @return</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static void</code></td><td width="" align="left"><code>log(IStatus status)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Logs the specified status with this plug-in's log.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static IStatus</code></td><td width="" align="left"><code>newErrorStatus(java.lang.String message
         ,
      java.lang.Throwable exception)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Returns a new error status for this plug-in with the given message</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>start(BundleContext context)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>stop(BundleContext context)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>PLUGIN_ID</h2>
<p>
<code>public static  java.lang.String <strong>PLUGIN_ID</strong></code>
</p>
<table>
<tr>
<td>TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XSLCorePlugin</h2>
<p>
<code>public <strong>XSLCorePlugin</strong>()</code>
</p>
<p>The constructor</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>getDefault</h2>
<p>
<code>public org.eclipse.wst.xsl.core.internal.XSLCorePlugin <strong>getDefault</strong>()</code>
</p>
<p>Returns the shared instance</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.wst.xsl.core.internal.XSLCorePlugin</code> - the shared instance</p>
<hr>
<h2>getFactory</h2>
<p>
<code>public javax.xml.parsers.SAXParserFactory <strong>getFactory</strong>()</code>
</p>
<p>Return the registered SAX parser factory or null if one
 does not exist.	 * @return</p>
<h3>Returns</h3>
<p>
<code>javax.xml.parsers.SAXParserFactory</code> - returns a SAXParserFactory</p>
<hr>
<h2>log</h2>
<p>
<code>public void <strong>log</strong>(IStatus status)</code>
</p>
<p>Logs the specified status with this plug-in's log.</p>
<h3>Parameters</h3>
<p>
<code>status</code> - status to log</p>
<hr>
<h2>newErrorStatus</h2>
<p>
<code>public IStatus <strong>newErrorStatus</strong>(java.lang.String message
         ,
      java.lang.Throwable exception)</code>
</p>
<p>Returns a new error status for this plug-in with the given message</p>
<h3>Parameters</h3>
<p>
<code>message</code> - the message to be included in the status</p>
<p>
<code>exception</code> - the exception to be included in the status or <code>null</code> if none</p>
<h3>Returns</h3>
<p>
<code>IStatus</code> - a new error status</p>
<hr>
<h2>start</h2>
<p>
<code>public void <strong>start</strong>(BundleContext context)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>context</code>
</p>
<h3>Throws:</h3>
<p>
<code>java.lang.Exception</code>
</p>
<hr>
<h2>stop</h2>
<p>
<code>public void <strong>stop</strong>(BundleContext context)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>context</code>
</p>
<h3>Throws:</h3>
<p>
<code>java.lang.Exception</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xsl.core.internal.ant</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xsl.core.internal.ant</strong></font>
<br>
            Class Messages</h2>
<br>
<hr>
<pre>public class <strong>Messages</strong>
extends NLS</pre>The XInclude message properties for string externalization<p></p>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XIncludeTask_0</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XIncludeTask_1</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XIncludeTask_2</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XIncludeTask_3</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XIncludeTask_4</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XIncludeTask_5</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XIncludeTask_6</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XIncludeTask_7</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XIncludeTask_8</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  java.lang.String</code></td><td width="80%" align="left"><code>XIncludeTask_9</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
</table>
<br>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>XIncludeTask_0</h2>
<p>
<code>public static  java.lang.String <strong>XIncludeTask_0</strong></code>
</p>
<table>
<tr>
<td>TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<h2>XIncludeTask_1</h2>
<p>
<code>public static  java.lang.String <strong>XIncludeTask_1</strong></code>
</p>
<table>
<tr>
<td>TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<h2>XIncludeTask_2</h2>
<p>
<code>public static  java.lang.String <strong>XIncludeTask_2</strong></code>
</p>
<table>
<tr>
<td>TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<h2>XIncludeTask_3</h2>
<p>
<code>public static  java.lang.String <strong>XIncludeTask_3</strong></code>
</p>
<table>
<tr>
<td>TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<h2>XIncludeTask_4</h2>
<p>
<code>public static  java.lang.String <strong>XIncludeTask_4</strong></code>
</p>
<table>
<tr>
<td>TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<h2>XIncludeTask_5</h2>
<p>
<code>public static  java.lang.String <strong>XIncludeTask_5</strong></code>
</p>
<table>
<tr>
<td>TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<h2>XIncludeTask_6</h2>
<p>
<code>public static  java.lang.String <strong>XIncludeTask_6</strong></code>
</p>
<table>
<tr>
<td>TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<h2>XIncludeTask_7</h2>
<p>
<code>public static  java.lang.String <strong>XIncludeTask_7</strong></code>
</p>
<table>
<tr>
<td>TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<h2>XIncludeTask_8</h2>
<p>
<code>public static  java.lang.String <strong>XIncludeTask_8</strong></code>
</p>
<table>
<tr>
<td>TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<h2>XIncludeTask_9</h2>
<p>
<code>public static  java.lang.String <strong>XIncludeTask_9</strong></code>
</p>
<table>
<tr>
<td>TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xsl.core.internal.ant</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xsl.core.internal.ant</strong></font>
<br>
            Class XIncludeTask</h2>
<br>
<hr>
<pre>public class <strong>XIncludeTask</strong>
extends org.apache.tools.ant.Task</pre>TODO: Add Java Doc<p></p>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>XIncludeTask</strong>()</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>execute()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.util.Collection</code></td><td width="" align="left"><code>listFiles(java.io.File directory
         ,
      boolean recurse)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>setIn(java.lang.String inFile)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>setOut(java.lang.String outFile)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               TODO: Add JavaDoc</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>XIncludeTask</h2>
<p>
<code>public <strong>XIncludeTask</strong>()</code>
</p>
<p></p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>execute</h2>
<p>
<code>public void <strong>execute</strong>()</code>
</p>
<p></p>
<hr>
<h2>listFiles</h2>
<p>
<code>public java.util.Collection <strong>listFiles</strong>(java.io.File directory
         ,
      boolean recurse)</code>
</p>
<p>TODO: Add JavaDoc</p>
<h3>Parameters</h3>
<p>
<code>directory</code>
</p>
<p>
<code>recurse</code>
</p>
<h3>Returns</h3>
<p>
<code>java.util.Collection</code>
</p>
<hr>
<h2>setIn</h2>
<p>
<code>public void <strong>setIn</strong>(java.lang.String inFile)</code>
</p>
<p>TODO: Add JavaDoc</p>
<h3>Parameters</h3>
<p>
<code>inFile</code>
</p>
<hr>
<h2>setOut</h2>
<p>
<code>public void <strong>setOut</strong>(java.lang.String outFile)</code>
</p>
<p>TODO: Add JavaDoc</p>
<h3>Parameters</h3>
<p>
<code>outFile</code>
</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xsl.core.internal.model</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xsl.core.internal.model</strong></font>
<br>
            Class CallTemplate</h2>
<br>
<hr>
<pre>public class <strong>CallTemplate</strong>
extends org.eclipse.wst.xsl.core.internal.model.XSLElement</pre>The <code>xsl:call-template</code> model element.<p></p>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private java.util.List</code></td><td width="80%" align="left"><code>parameters</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>CallTemplate</strong>(org.eclipse.wst.xsl.core.internal.model.Stylesheet stylesheet)</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>addParameter(org.eclipse.wst.xsl.core.internal.model.Parameter parameter)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Add a parameter to this.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code>getName()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the value of the <code>name</code> attribute if one exists.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.util.List</code></td><td width="" align="left"><code>getParameters()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the list of parameters associated with this.</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>parameters</h2>
<p>
<code>package-private java.util.List <strong>parameters</strong></code>
</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>CallTemplate</h2>
<p>
<code>public <strong>CallTemplate</strong>(org.eclipse.wst.xsl.core.internal.model.Stylesheet stylesheet)</code>
</p>
<p>Create a new instance of this.</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>addParameter</h2>
<p>
<code>public void <strong>addParameter</strong>(org.eclipse.wst.xsl.core.internal.model.Parameter parameter)</code>
</p>
<p>Add a parameter to this.</p>
<h3>Parameters</h3>
<p>
<code>parameter</code> - the parameter to add</p>
<hr>
<h2>getName</h2>
<p>
<code>public java.lang.String <strong>getName</strong>()</code>
</p>
<p>Get the value of the <code>name</code> attribute if one exists.</p>
<h3>Returns</h3>
<p>
<code>java.lang.String</code> - the template name, or null</p>
<hr>
<h2>getParameters</h2>
<p>
<code>public java.util.List <strong>getParameters</strong>()</code>
</p>
<p>Get the list of parameters associated with this.</p>
<h3>Returns</h3>
<p>
<code>java.util.List</code> - a list of parameters</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xsl.core.internal.model</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xsl.core.internal.model</strong></font>
<br>
            Class Import</h2>
<br>
<hr>
<pre>public class <strong>Import</strong>
extends org.eclipse.wst.xsl.core.internal.model.Include</pre>The <code>xsl:import</code> model element.<p></p>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>Import</strong>(org.eclipse.wst.xsl.core.internal.model.Stylesheet stylesheet)</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>Import</h2>
<p>
<code>public <strong>Import</strong>(org.eclipse.wst.xsl.core.internal.model.Stylesheet stylesheet)</code>
</p>
<p>Create a new instance of this.</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xsl.core.internal.model</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xsl.core.internal.model</strong></font>
<br>
            Class Include</h2>
<br>
<hr>
<pre>public class <strong>Include</strong>
extends org.eclipse.wst.xsl.core.internal.model.XSLElement</pre>The <code>xsl:include</code> model element.<p></p>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  int</code></td><td width="80%" align="left"><code>IMPORT</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Constant indicating that this is an &lt;code&gt;Import&lt;/code&gt;.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static  int</code></td><td width="80%" align="left"><code>INCLUDE</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Constant indicating that this is an &lt;code&gt;Include&lt;/code&gt;.</td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>Include</strong>(org.eclipse.wst.xsl.core.internal.model.Stylesheet stylesheet)</code></td>
</tr>
<tr>
<td><code><strong>Include</strong>(org.eclipse.wst.xsl.core.internal.model.Stylesheet stylesheet
         ,
      int type)</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code>getHref()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the value of the <code>href</code> attribute if one exists.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public IFile</code></td><td width="" align="left"><code>getHrefAsFile()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Gets the included file as a source file, if possible (returned file may be null and need not exist).</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code>getIncludeType()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the type of include, whether an <code>Include</code> or an <code>Import</code>.</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>IMPORT</h2>
<p>
<code>public static  int <strong>IMPORT</strong></code>
</p>
<table>
<tr>
<td>Constant indicating that this is an <code>Import</code>.</td>
</tr>
</table>
<hr>
<h2>INCLUDE</h2>
<p>
<code>public static  int <strong>INCLUDE</strong></code>
</p>
<table>
<tr>
<td>Constant indicating that this is an <code>Include</code>.</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>Include</h2>
<p>
<code>public <strong>Include</strong>(org.eclipse.wst.xsl.core.internal.model.Stylesheet stylesheet)</code>
</p>
<p>Create a new instance of this.</p>
<hr>
<h2>Include</h2>
<p>
<code>protected <strong>Include</strong>(org.eclipse.wst.xsl.core.internal.model.Stylesheet stylesheet
         ,
      int type)</code>
</p>
<p>Create a new instance of this, specifying whether an <code>Include</code> or an <code>Import</code>.</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>getHref</h2>
<p>
<code>public java.lang.String <strong>getHref</strong>()</code>
</p>
<p>Get the value of the <code>href</code> attribute if one exists.</p>
<h3>Returns</h3>
<p>
<code>java.lang.String</code> - the <code>href</code> value, or null</p>
<hr>
<h2>getHrefAsFile</h2>
<p>
<code>public IFile <strong>getHrefAsFile</strong>()</code>
</p>
<p>Gets the included file as a source file, if possible (returned file may be null and need not exist).</p>
<h3>Returns</h3>
<p>
<code>IFile</code> - the included file, or null</p>
<hr>
<h2>getIncludeType</h2>
<p>
<code>public int <strong>getIncludeType</strong>()</code>
</p>
<p>Get the type of include, whether an <code>Include</code> or an <code>Import</code>.</p>
<h3>Returns</h3>
<p>
<code>int</code> - one of the constants <code>INCLUDE</code> or <code>IMPORT</code></p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xsl.core.internal.model</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xsl.core.internal.model</strong></font>
<br>
            Class Parameter</h2>
<br>
<hr>
<pre>public class <strong>Parameter</strong>
extends org.eclipse.wst.xsl.core.internal.model.Variable</pre>The <code>xsl:parameter</code> or <code>xsl:with-param</code> model element.<p></p>
<hr>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>Parameter</strong>(org.eclipse.wst.xsl.core.internal.model.Stylesheet stylesheet)</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code>isValue()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get whether this has a value.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>setValue(boolean valueSet)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Set whether this has a value.</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>Parameter</h2>
<p>
<code>public <strong>Parameter</strong>(org.eclipse.wst.xsl.core.internal.model.Stylesheet stylesheet)</code>
</p>
<p>Create a new instance of this.</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>isValue</h2>
<p>
<code>public boolean <strong>isValue</strong>()</code>
</p>
<p>Get whether this has a value.</p>
<h3>Returns</h3>
<p>
<code>boolean</code> - <code>true</code> if this has a value</p>
<hr>
<h2>setValue</h2>
<p>
<code>public void <strong>setValue</strong>(boolean valueSet)</code>
</p>
<p>Set whether this has a value.</p>
<h3>Parameters</h3>
<p>
<code>valueSet</code> - <code>true</code> if this has a value</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xsl.core.internal.model</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xsl.core.internal.model</strong></font>
<br>
            Class Stylesheet</h2>
<br>
<hr>
<pre>public class <strong>Stylesheet</strong>
extends org.eclipse.wst.xsl.core.internal.model.XSLElement</pre>The <code>xsl:stylesheet</code> model element.<p></p>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private java.util.List</code></td><td width="80%" align="left"><code>calledTemplates</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private java.util.List</code></td><td width="80%" align="left"><code>elements</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private IFile</code></td><td width="80%" align="left"><code>file</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private java.util.List</code></td><td width="80%" align="left"><code>globalVariables</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private java.util.List</code></td><td width="80%" align="left"><code>imports</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private java.util.List</code></td><td width="80%" align="left"><code>includes</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private java.util.List</code></td><td width="80%" align="left"><code>templates</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>Stylesheet</strong>(IFile file)</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>addCalledTemplate(org.eclipse.wst.xsl.core.internal.model.CallTemplate template)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Add a <code>CallTemplate</code> to this.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>addGlobalVariable(org.eclipse.wst.xsl.core.internal.model.Variable var)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Add a global variable to this.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>addImport(org.eclipse.wst.xsl.core.internal.model.Import include)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Add an <code>Import</code> to this.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>addInclude(org.eclipse.wst.xsl.core.internal.model.Include include)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Add an <code>Include</code> to this.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>addTemplate(org.eclipse.wst.xsl.core.internal.model.Template template)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Add a <code>Template</code> to this.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.util.List</code></td><td width="" align="left"><code>getCalledTemplates()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the list of called templates for this.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public IFile</code></td><td width="" align="left"><code>getFile()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the file that this represents.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.util.List</code></td><td width="" align="left"><code>getImports()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the list of imports for this.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.util.List</code></td><td width="" align="left"><code>getIncludes()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the list of includes for this.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public org.eclipse.wst.xsl.core.internal.model.Stylesheet</code></td><td width="" align="left"><code>getStylesheet()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.util.List</code></td><td width="" align="left"><code>getTemplates()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the list of templates for this.</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>calledTemplates</h2>
<p>
<code>package-private java.util.List <strong>calledTemplates</strong></code>
</p>
<hr>
<h2>elements</h2>
<p>
<code>package-private java.util.List <strong>elements</strong></code>
</p>
<hr>
<h2>file</h2>
<p>
<code>package-private IFile <strong>file</strong></code>
</p>
<hr>
<h2>globalVariables</h2>
<p>
<code>package-private java.util.List <strong>globalVariables</strong></code>
</p>
<hr>
<h2>imports</h2>
<p>
<code>package-private java.util.List <strong>imports</strong></code>
</p>
<hr>
<h2>includes</h2>
<p>
<code>package-private java.util.List <strong>includes</strong></code>
</p>
<hr>
<h2>templates</h2>
<p>
<code>package-private java.util.List <strong>templates</strong></code>
</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>Stylesheet</h2>
<p>
<code>public <strong>Stylesheet</strong>(IFile file)</code>
</p>
<p>Create an instance of this.</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>addCalledTemplate</h2>
<p>
<code>public void <strong>addCalledTemplate</strong>(org.eclipse.wst.xsl.core.internal.model.CallTemplate template)</code>
</p>
<p>Add a <code>CallTemplate</code> to this.</p>
<h3>Parameters</h3>
<p>
<code>template</code> - the template to add</p>
<hr>
<h2>addGlobalVariable</h2>
<p>
<code>public void <strong>addGlobalVariable</strong>(org.eclipse.wst.xsl.core.internal.model.Variable var)</code>
</p>
<p>Add a global variable to this.</p>
<h3>Parameters</h3>
<p>
<code>var</code> - the variable to add</p>
<hr>
<h2>addImport</h2>
<p>
<code>public void <strong>addImport</strong>(org.eclipse.wst.xsl.core.internal.model.Import include)</code>
</p>
<p>Add an <code>Import</code> to this.</p>
<h3>Parameters</h3>
<p>
<code>include</code> - the import to add</p>
<hr>
<h2>addInclude</h2>
<p>
<code>public void <strong>addInclude</strong>(org.eclipse.wst.xsl.core.internal.model.Include include)</code>
</p>
<p>Add an <code>Include</code> to this.</p>
<h3>Parameters</h3>
<p>
<code>include</code> - the include to add</p>
<hr>
<h2>addTemplate</h2>
<p>
<code>public void <strong>addTemplate</strong>(org.eclipse.wst.xsl.core.internal.model.Template template)</code>
</p>
<p>Add a <code>Template</code> to this.</p>
<h3>Parameters</h3>
<p>
<code>template</code> - the template to add</p>
<hr>
<h2>getCalledTemplates</h2>
<p>
<code>public java.util.List <strong>getCalledTemplates</strong>()</code>
</p>
<p>Get the list of called templates for this.</p>
<h3>Returns</h3>
<p>
<code>java.util.List</code> - the list of called templates</p>
<hr>
<h2>getFile</h2>
<p>
<code>public IFile <strong>getFile</strong>()</code>
</p>
<p>Get the file that this represents.</p>
<h3>Returns</h3>
<p>
<code>IFile</code> - the file that this represents</p>
<hr>
<h2>getImports</h2>
<p>
<code>public java.util.List <strong>getImports</strong>()</code>
</p>
<p>Get the list of imports for this.</p>
<h3>Returns</h3>
<p>
<code>java.util.List</code> - the list of imports</p>
<hr>
<h2>getIncludes</h2>
<p>
<code>public java.util.List <strong>getIncludes</strong>()</code>
</p>
<p>Get the list of includes for this.</p>
<h3>Returns</h3>
<p>
<code>java.util.List</code> - the list of includes</p>
<hr>
<h2>getStylesheet</h2>
<p>
<code>public org.eclipse.wst.xsl.core.internal.model.Stylesheet <strong>getStylesheet</strong>()</code>
</p>
<p></p>
<h3>Returns</h3>
<p>
<code>org.eclipse.wst.xsl.core.internal.model.Stylesheet</code>
</p>
<hr>
<h2>getTemplates</h2>
<p>
<code>public java.util.List <strong>getTemplates</strong>()</code>
</p>
<p>Get the list of templates for this.</p>
<h3>Returns</h3>
<p>
<code>java.util.List</code> - the list of templates</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xsl.core.internal.model</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xsl.core.internal.model</strong></font>
<br>
            Class StylesheetBuilder</h2>
<br>
<hr>
<pre>public class <strong>StylesheetBuilder</strong>
extends java.lang.Object</pre>A builder that creates and maintains a cache of <code>Stylesheet</code>'s.<p></p>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public static org.eclipse.wst.xsl.core.internal.model.StylesheetBuilder</code></td><td width="" align="left"><code>getInstance()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the singleton <code>StylesheetBuilder</code> instance.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public org.eclipse.wst.xsl.core.internal.model.Stylesheet</code></td><td width="" align="left"><code>getStylesheet(IFile file
         ,
      boolean force)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the <code>Stylesheet</code> associated with the given file. If either
 the <code>Stylesheet</code> has not yet been created or
 <code>force</code> is specified then the <code>Stylesheet</code> is
 built.</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>getInstance</h2>
<p>
<code>public org.eclipse.wst.xsl.core.internal.model.StylesheetBuilder <strong>getInstance</strong>()</code>
</p>
<p>Get the singleton <code>StylesheetBuilder</code> instance.</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.wst.xsl.core.internal.model.StylesheetBuilder</code> - the <code>StylesheetBuilder</code> instance</p>
<hr>
<h2>getStylesheet</h2>
<p>
<code>public org.eclipse.wst.xsl.core.internal.model.Stylesheet <strong>getStylesheet</strong>(IFile file
         ,
      boolean force)</code>
</p>
<p>Get the <code>Stylesheet</code> associated with the given file. If either
 the <code>Stylesheet</code> has not yet been created or
 <code>force</code> is specified then the <code>Stylesheet</code> is
 built.</p>
<h3>Parameters</h3>
<p>
<code>file</code> - the XSL file</p>
<p>
<code>force</code> - <code>true</code> to force a parse of the file</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.wst.xsl.core.internal.model.Stylesheet</code> - the <code>Stylesheet</code></p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xsl.core.internal.model</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xsl.core.internal.model</strong></font>
<br>
            Class StylesheetModel</h2>
<br>
<hr>
<pre>public class <strong>StylesheetModel</strong>
extends java.lang.Object</pre>The composed stylesheet, consisting of all templates and variables available
 via imports and includes.
 
 <p>
 The <code>fix()</code> method does the actual work of populating the fields
 of this, so it must be called before calling any of the other methods.
 </p>
 
 <p>
 Note that this model may not be valid - for instance there may be more than
 one named template for a given name or more than one global variable with a
 given name.
 </p><p></p>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private boolean</code></td><td width="80%" align="left"><code>circularReference</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private java.util.Set</code></td><td width="80%" align="left"><code>files</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private java.util.List</code></td><td width="80%" align="left"><code>globalVariables</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private java.util.Set</code></td><td width="80%" align="left"><code>stylesheets</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private java.util.List</code></td><td width="80%" align="left"><code>templates</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private java.util.Set</code></td><td width="80%" align="left"><code>templateSet</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>StylesheetModel</strong>(org.eclipse.wst.xsl.core.internal.model.Stylesheet stylesheet)</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.util.List</code></td><td width="" align="left"><code>findMatching(org.eclipse.wst.xsl.core.internal.model.Template toMatch)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get all templates that match the given template (determined from
 <code>Template.equals()</code>).</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>fix()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Perform the process of traversing the hierarchy to determine all of the
 properties of this. Note that this method may force other
 <code>StylesheetModel</code>'s to be built during the process of fixing.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.util.Set</code></td><td width="" align="left"><code>getFileDependencies()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get all files that are included in this stylesheet anywhere in the
 hierarchy via either import or include.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.util.List</code></td><td width="" align="left"><code>getGlobalVariables()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get all global variables that are included in this stylesheet anywhere in
 the hierarchy via either import or include.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.util.Set</code></td><td width="" align="left"><code>getIncludedStylesheets()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get all stylesheets that are included in this stylesheet anywhere in the
 hierarchy via either import or include.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public org.eclipse.wst.xsl.core.internal.model.Stylesheet</code></td><td width="" align="left"><code>getStylesheet()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the stylesheet that this is the model for.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.util.List</code></td><td width="" align="left"><code>getTemplates()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get all templates that are included in this stylesheet anywhere in the
 hierarchy via either import or include.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.util.List</code></td><td width="" align="left"><code>getTemplatesByName(java.lang.String name)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get all named templates that are included in this stylesheet anywhere in
 the hierarchy via either import or include which have the given name.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code>hasCircularReference()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get whether this has a circular reference anywhere in its import/included
 hierarchy.</td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>circularReference</h2>
<p>
<code>package-private boolean <strong>circularReference</strong></code>
</p>
<hr>
<h2>files</h2>
<p>
<code>package-private java.util.Set <strong>files</strong></code>
</p>
<hr>
<h2>globalVariables</h2>
<p>
<code>package-private java.util.List <strong>globalVariables</strong></code>
</p>
<hr>
<h2>stylesheets</h2>
<p>
<code>package-private java.util.Set <strong>stylesheets</strong></code>
</p>
<hr>
<h2>templates</h2>
<p>
<code>package-private java.util.List <strong>templates</strong></code>
</p>
<hr>
<h2>templateSet</h2>
<p>
<code>package-private java.util.Set <strong>templateSet</strong></code>
</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>StylesheetModel</h2>
<p>
<code>public <strong>StylesheetModel</strong>(org.eclipse.wst.xsl.core.internal.model.Stylesheet stylesheet)</code>
</p>
<p>Create a new instance of this.</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>findMatching</h2>
<p>
<code>public java.util.List <strong>findMatching</strong>(org.eclipse.wst.xsl.core.internal.model.Template toMatch)</code>
</p>
<p>Get all templates that match the given template (determined from
 <code>Template.equals()</code>).</p>
<h3>Parameters</h3>
<p>
<code>toMatch</code> - the template to match</p>
<h3>Returns</h3>
<p>
<code>java.util.List</code> - the set of templates that match</p>
<hr>
<h2>fix</h2>
<p>
<code>public void <strong>fix</strong>()</code>
</p>
<p>Perform the process of traversing the hierarchy to determine all of the
 properties of this. Note that this method may force other
 <code>StylesheetModel</code>'s to be built during the process of fixing.</p>
<hr>
<h2>getFileDependencies</h2>
<p>
<code>public java.util.Set <strong>getFileDependencies</strong>()</code>
</p>
<p>Get all files that are included in this stylesheet anywhere in the
 hierarchy via either import or include.</p>
<h3>Returns</h3>
<p>
<code>java.util.Set</code> - the set of files in the entire hierarchy</p>
<hr>
<h2>getGlobalVariables</h2>
<p>
<code>public java.util.List <strong>getGlobalVariables</strong>()</code>
</p>
<p>Get all global variables that are included in this stylesheet anywhere in
 the hierarchy via either import or include.</p>
<h3>Returns</h3>
<p>
<code>java.util.List</code> - the set of files in the entire hierarchy</p>
<hr>
<h2>getIncludedStylesheets</h2>
<p>
<code>public java.util.Set <strong>getIncludedStylesheets</strong>()</code>
</p>
<p>Get all stylesheets that are included in this stylesheet anywhere in the
 hierarchy via either import or include.</p>
<h3>Returns</h3>
<p>
<code>java.util.Set</code> - the set of stylesheets in the entire hierarchy</p>
<hr>
<h2>getStylesheet</h2>
<p>
<code>public org.eclipse.wst.xsl.core.internal.model.Stylesheet <strong>getStylesheet</strong>()</code>
</p>
<p>Get the stylesheet that this is the model for.</p>
<h3>Returns</h3>
<p>
<code>org.eclipse.wst.xsl.core.internal.model.Stylesheet</code> - the stylesheet that this is the model for</p>
<hr>
<h2>getTemplates</h2>
<p>
<code>public java.util.List <strong>getTemplates</strong>()</code>
</p>
<p>Get all templates that are included in this stylesheet anywhere in the
 hierarchy via either import or include.</p>
<h3>Returns</h3>
<p>
<code>java.util.List</code> - the set of templates in the entire hierarchy</p>
<hr>
<h2>getTemplatesByName</h2>
<p>
<code>public java.util.List <strong>getTemplatesByName</strong>(java.lang.String name)</code>
</p>
<p>Get all named templates that are included in this stylesheet anywhere in
 the hierarchy via either import or include which have the given name.</p>
<h3>Parameters</h3>
<p>
<code>name</code> - the template name</p>
<h3>Returns</h3>
<p>
<code>java.util.List</code> - the set of named templates with the given name</p>
<hr>
<h2>hasCircularReference</h2>
<p>
<code>public boolean <strong>hasCircularReference</strong>()</code>
</p>
<p>Get whether this has a circular reference anywhere in its import/included
 hierarchy.</p>
<h3>Returns</h3>
<p>
<code>boolean</code> - <code>true</code> if this has a circular reference</p>
<hr>
<p>
<font size="+1"><strong>Package org.eclipse.wst.xsl.core.internal.model</strong></font>
</p>
<hr>
<h2>
<font size="-1"><strong>org.eclipse.wst.xsl.core.internal.model</strong></font>
<br>
            Class Template</h2>
<br>
<hr>
<pre>public class <strong>Template</strong>
extends org.eclipse.wst.xsl.core.internal.model.XSLElement</pre>The <code>xsl:template</code> model element.<p></p>
<hr>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Field Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private java.util.List</code></td><td width="80%" align="left"><code>parameters</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>package-private java.util.List</code></td><td width="80%" align="left"><code>variables</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr bgcolor="#CCCCFF">
<td width="100%">
<h2>Constructor Summary</h2>
</td>
</tr>
<tr>
<td><code><strong>Template</strong>(org.eclipse.wst.xsl.core.internal.model.Stylesheet stylesheet)</code></td>
</tr>
</table>
<br>
<table width="100%" border="1">
<tr cols="2" bgcolor="#CCCCFF">
<td colspan="2" width="100%">
<h2>Method Summary</h2>
</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>addParameter(org.eclipse.wst.xsl.core.internal.model.Parameter parameter)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Add a parameter to this.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code>addVariable(org.eclipse.wst.xsl.core.internal.model.Variable var)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Add a variable to this.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public boolean</code></td><td width="" align="left"><code>equals(java.lang.Object obj)</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code>getMatch()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the value of the <code>match</code> attribute if one exists.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code>getMode()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the value of the <code>mode</code> attribute if one exists.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code>getName()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the value of the <code>name</code> attribute if one exists.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.util.List</code></td><td width="" align="left"><code>getParameters()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the list of parameters of this.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code>getPriority()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the value of the <code>priority</code> attribute if one exists.</td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code>hashCode()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
<tr valign="top">
<td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code>toString()</code>
<br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td>
</tr>
</table>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Field Detail
               </h2>
</td>
</tr>
</table>
<h2>parameters</h2>
<p>
<code>package-private java.util.List <strong>parameters</strong></code>
</p>
<hr>
<h2>variables</h2>
<p>
<code>package-private java.util.List <strong>variables</strong></code>
</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Constructor Detail
               </h2>
</td>
</tr>
</table>
<h2>Template</h2>
<p>
<code>public <strong>Template</strong>(org.eclipse.wst.xsl.core.internal.model.Stylesheet stylesheet)</code>
</p>
<p>Create a new instance of this.</p>
<hr>
<table cols="2" width="100%" border="1">
<tr colspan="2" width="100%" bgcolor="#CCCCFF" align="left">
<td>
<h2>
                  Methods Detail
               </h2>
</td>
</tr>
</table>
<h2>addParameter</h2>
<p>
<code>public void <strong>addParameter</strong>(org.eclipse.wst.xsl.core.internal.model.Parameter parameter)</code>
</p>
<p>Add a parameter to this.</p>
<h3>Parameters</h3>
<p>
<code>parameter</code> - the parameter to add</p>
<hr>
<h2>addVariable</h2>
<p>
<code>public void <strong>addVariable</strong>(org.eclipse.wst.xsl.core.internal.model.Variable var)</code>
</p>
<p>Add a variable to this.</p>
<h3>Parameters</h3>
<p>
<code>var</code> - the variable to add</p>
<hr>
<h2>equals</h2>
<p>
<code>public boolean <strong>equals</strong>(java.lang.Object obj)</code>
</p>
<p></p>
<h3>Parameters</h3>
<p>
<code>obj</code>
</p>
<h3>Returns</h3>
<p>
<code>boolean</code>
</p>
<hr>
<h2>getMatch</h2>
<p>
<code>public java.lang.String <strong>getMatch</strong>()</code>
</p>
<p>Get the value of the <code>match</code> attribute if one exists.</p>
<h3>Returns</h3>
<p>
<code>java.lang.String</code> - the match value, or null</p>
<hr>
<h2>getMode</h2>
<p>
<code>public java.lang.String <strong>getMode</strong>()</code>
</p>
<p>Get the value of the <code>mode</code> attribute if one exists.</p>
<h3>Returns</h3>
<p>
<code>java.lang.String</code> - the mode value, or null</p>
<hr>
<h2>getName</h2>
<p>
<code>public java.lang.String <strong>getName</strong>()</code>
</p>
<p>Get the value of the <code>name</code> attribute if one exists.</p>
<h3>Returns</h3>
<p>
<code>java.lang.String</code> - the template name, or null</p>
<hr>
<h2>getParameters</h2>
<p>
<code>public java.util.List <strong>getParameters</strong>()</code>
</p>
<p>Get the list of parameters of this.</p>
<h3>Returns</h3>
<p>
<code>java.util.List</code> - the list of parameters</p>
<hr>
<h2>getPriority</h2>
<p>
<code>public java.lang.String <strong>getPriority</strong>()</code>
</p>
<p>Get the value of the <code>priority</code> attribute if one exists.</p>
<h3>Returns</h3>
<p>
<code>java.lang.String</code> - the priority value, or null</p>
<hr>
<h2>hashCode</h2>
<p>
<code>public int <strong>hashCode</strong>()</code>
</p>
<p></p>
<h3>Returns</h3>
<p>
<code>int</code>
</p>
<hr>
<h2>toString</h2>
<p>
<code>public java.lang.String <strong>toString</strong>()</code>
</p>
<p></p>
<h3>Returns</h3>
<p>
<code>java.lang.String</code>
</p>
<hr>
</body>
</html>
