code: private void parseContentspec(String name) throws Exception {
          // FIXME: move elementDecl() into setElement(), pass EMTPY/ANY ...
          if (tryRead("EMPTY")) {
              setElement(name, CONTENT_EMPTY, null, null);
              if (!skippedPE) {
                  handler.getDeclHandler().elementDecl(name, "EMPTY");
              }
              return;
          } else if (tryRead("ANY")) {
              setElement(name, CONTENT_ANY, null, null);
              if (!skippedPE) {
                  handler.getDeclHandler().elementDecl(name, "ANY");
              }
              return;
          } else {
              String model;
              char[] saved;
  
              require('(');
              saved = readBuffer;
              dataBufferAppend('(');
              skipWhitespace();
              if (tryRead("#PCDATA")) {
                  dataBufferAppend("#PCDATA");
                  parseMixed(saved);
                  model = dataBufferToString();
                  setElement(name, CONTENT_MIXED, model, null);
              } else {
                  parseElements(saved);
                  model = dataBufferToString();
                  setElement(name, CONTENT_ELEMENTS, model, null);
              }
              if (!skippedPE) {
                  handler.getDeclHandler().elementDecl(name, model);
              }
          }
      }
docs: Content specification.
  
  <pre>
  [46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | elements
  </pre>