<html><body><p><font size="+1"><strong>Package org.eclipse.wst.xsl.core.internal.validation</strong></font></p><hr><h2><font size="-1"><strong>org.eclipse.wst.xsl.core.internal.validation</strong></font><br>
               Class XSLValidationMessage</h2><br><hr><pre>public class <strong>XSLValidationMessage</strong>
extends ValidationMessage</pre>A validation message specific to the XSL validator which adds the ability 
 to specify the XSL node.<p></p><p></p><hr><table width="100%" border="1"><tr bgcolor="#CCCCFF"><td width="100%"><h2>Constructor Summary</h2></td></tr><tr><td><code><strong><a href="#con_XSLValidationMessage">XSLValidationMessage</a></strong>(java.lang.String message
         ,
      int lineNumber
         ,
      int columnNumber
         ,
      java.lang.String uri)</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.wst.xsl.core.model.XSLNode</code></td><td width="" align="left"><code><a href="#method_getNode">getNode</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Get the node that this message applies to.</td></tr><tr valign="top"><td width="20%" align="right"><code>public int</code></td><td width="" align="left"><code><a href="#method_getRealSeverity">getRealSeverity</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Workaround for superclass's bizarre handling of severity</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_setNode">setNode</a>(org.eclipse.wst.xsl.core.model.XSLNode node)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Set the node that this message applies to.</td></tr><tr valign="top"><td width="20%" align="right"><code>public void</code></td><td width="" align="left"><code><a href="#method_setSeverity">setSeverity</a>(int sev)</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               The severity set here should be the org.eclipse.wst.validation.internal.provisional.core.IMessage severity.</td></tr><tr valign="top"><td width="20%" align="right"><code>public java.lang.String</code></td><td width="" align="left"><code><a href="#method_toString">toString</a>()</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><a name="con_XSLValidationMessage">XSLValidationMessage</a></h2><p><code>public <strong>XSLValidationMessage</strong>(java.lang.String message
         ,
      int lineNumber
         ,
      int columnNumber
         ,
      java.lang.String uri)</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><a name="method_getNode">getNode</a></h2><p><code>public org.eclipse.wst.xsl.core.model.XSLNode <strong>getNode</strong>()</code></p><p>Get the node that this message applies to.</p><h3>Returns</h3><p><code>org.eclipse.wst.xsl.core.model.XSLNode</code> - the node</p><hr><h2><a name="method_getRealSeverity">getRealSeverity</a></h2><p><code>public int <strong>getRealSeverity</strong>()</code></p><p>Workaround for superclass's bizarre handling of severity</p><h3>Returns</h3><p><code>int</code></p><hr><h2><a name="method_setNode">setNode</a></h2><p><code>public void <strong>setNode</strong>(org.eclipse.wst.xsl.core.model.XSLNode node)</code></p><p>Set the node that this message applies to.</p><h3>Parameters</h3><p><code>node</code> - the node</p><hr><h2><a name="method_setSeverity">setSeverity</a></h2><p><code>public void <strong>setSeverity</strong>(int sev)</code></p><p>The severity set here should be the org.eclipse.wst.validation.internal.provisional.core.IMessage severity.</p><h3>Parameters</h3><p><code>sev</code></p><hr><h2><a name="method_toString">toString</a></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>