code: private void handleTargetNsDecl()
          throws XMLStreamException
      {
          mAnyDTDppFeatures = true;
          
          char c = skipObligatoryDtdWs();
          String name;
          
          // Explicit namespace name?
          if (isNameStartChar(c)) {
              name = readDTDLocalName(c, false);
              c = skipObligatoryDtdWs();
          } else { // no, default namespace (or error)
              name = null;
          }
          
          // Either way, should now get a quote:
          if (c != '"' && c != '\'') {
              if (c == '>') { // slightly more accurate error
                  _reportWFCViolation("Missing namespace URI for TARGETNS directive");
              }
              throwDTDUnexpectedChar(c, "; expected a single or double quote to enclose the namespace URI");
          }
          
          /* !!! 07-Nov-2004, TSa: what's the exact value we should get
           *   here? Ns declarations can have any attr value...
           */
          String uri = parseSystemId(c, false, "in namespace URI");
          
          // Do we need to normalize the URI?
          if ((mConfigFlags & CFG_INTERN_NS_URIS) != 0) {
              uri = InternCache.getInstance().intern(uri);
          }
          
          // Ok, and then the closing '>':
          c = skipDtdWs(true);
          if (c != '>') {
              throwDTDUnexpectedChar(c, "; expected '>' to end TARGETNS directive");
          }
          
          if (name == null) { // default NS URI
              mDefaultNsURI = uri;
          } else {
              if (mNamespaces == null) {
                  mNamespaces = new HashMap<String,String>();
              }
              mNamespaces.put(name, uri);
          }
      }
docs: Method called to handle <!TARGETNS ... > declaration (the only
  new declaration type for DTD++)
  <p>
  Note: only valid for DTD++, in 'plain DTD' mode shouldn't get
  called.