<html><body><p><font size="+1"><strong>Package org.eclipse.wst.xml.xpath2.processor.internal.types</strong></font></p><hr><h2><font size="-1"><strong>org.eclipse.wst.xml.xpath2.processor.internal.types</strong></font><br>
               Class CommentType</h2><br><hr><pre>public class <strong>CommentType</strong>
extends org.eclipse.wst.xml.xpath2.processor.internal.types.NodeType</pre>A representation of the CommentType datatype<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_CommentType">CommentType</a></strong>(org.w3c.dom.Comment v)</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><a href="#method_isID">isID</a>()</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><a href="#method_isIDREF">isIDREF</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               </td></tr><tr valign="top"><td width="20%" align="right"><code>public org.eclipse.wst.xml.xpath2.processor.internal.types.QName</code></td><td width="" align="left"><code><a href="#method_node_name">node_name</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Unsupported method for this node.</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_string_type">string_type</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Retrieves the datatype's full pathname</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_string_value">string_value</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Retrieves a String representation of the comment being stored</td></tr><tr valign="top"><td width="20%" align="right"><code>public org.eclipse.wst.xml.xpath2.processor.ResultSequence</code></td><td width="" align="left"><code><a href="#method_typed_value">typed_value</a>()</code><br>
               &nbsp;&nbsp;&nbsp;&nbsp;
               Creates a new ResultSequence consisting of the comment stored</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_CommentType">CommentType</a></h2><p><code>public <strong>CommentType</strong>(org.w3c.dom.Comment v)</code></p><p>Initialise according to the supplied parameters</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_isID">isID</a></h2><p><code>public boolean <strong>isID</strong>()</code></p><p></p><h3>Returns</h3><p><code>boolean</code></p><hr><h2><a name="method_isIDREF">isIDREF</a></h2><p><code>public boolean <strong>isIDREF</strong>()</code></p><p></p><h3>Returns</h3><p><code>boolean</code></p><hr><h2><a name="method_node_name">node_name</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.internal.types.QName <strong>node_name</strong>()</code></p><p>Unsupported method for this node.</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.internal.types.QName</code> - null</p><hr><h2><a name="method_string_type">string_type</a></h2><p><code>public java.lang.String <strong>string_type</strong>()</code></p><p>Retrieves the datatype's full pathname</p><h3>Returns</h3><p><code>java.lang.String</code> - "comment" which is the datatype's full pathname</p><hr><h2><a name="method_string_value">string_value</a></h2><p><code>public java.lang.String <strong>string_value</strong>()</code></p><p>Retrieves a String representation of the comment being stored</p><h3>Returns</h3><p><code>java.lang.String</code> - String representation of the comment being stored</p><hr><h2><a name="method_typed_value">typed_value</a></h2><p><code>public org.eclipse.wst.xml.xpath2.processor.ResultSequence <strong>typed_value</strong>()</code></p><p>Creates a new ResultSequence consisting of the comment stored</p><h3>Returns</h3><p><code>org.eclipse.wst.xml.xpath2.processor.ResultSequence</code> - New ResultSequence consisting of the comment stored</p><hr></body></html>