/**
  * <b>DOM L1</b> Returns the attribute value, with character and entity references substituted.
  * <em>NOTE: entity refs as children aren't currently handled.</em>
  */
 public String getNodeValue() {
   // If we have a simple node-value, use that
   if (first == null) {
     return (value == null) ? "" : value;
   }
   // Otherwise collect child node-values
   StringBuffer buf = new StringBuffer();
   for (DomNode ctx = first; ctx != null; ctx = ctx.next) {
     switch (ctx.nodeType) {
       case Node.TEXT_NODE:
         buf.append(ctx.getNodeValue());
         break;
       case Node.ENTITY_REFERENCE_NODE:
         // TODO
         break;
     }
   }
   return buf.toString();
 }