code: private AtomicValue parseStringLiteral() {
  
          final StringBuilder mValue = new StringBuilder();
  
          if (is(TokenType.DBL_QUOTE, true)) {
  
              do {
  
                  while (mToken.getType() != TokenType.DBL_QUOTE) {
                      mValue.append(mToken.getContent());
                      // consume(Token.TEXT, false); // TODO: does not need to be
                      // a text
                      // could also be a value
                      mToken = mScanner.nextToken();
                  }
  
                  consume(TokenType.DBL_QUOTE, true);
              } while (is(TokenType.DBL_QUOTE, true));
  
          } else {
  
              consume(TokenType.SINGLE_QUOTE, true);
  
              do {
  
                  while (mToken.getType() != TokenType.SINGLE_QUOTE) {
                      mValue.append(mToken.getContent());
                      // consume(Token.TEXT, false);
                      mToken = mScanner.nextToken();
                  }
  
                  consume(TokenType.SINGLE_QUOTE, true);
              } while (is(TokenType.SINGLE_QUOTE, true));
  
          }
  
          final AtomicValue mStringLiteral =
              new AtomicValue(TypedValue.getBytes(mValue.toString()), NamePageHash
                  .generateHashForString("xs:string"));
          return mStringLiteral;
      }
docs: Parses the the rule StringLiteral according to the following production
  rule:
  <p>
  [73] StringLiteral ::= ('"' (('"' '"') | [^"])* '"') | ("'" (("'" "'") | [^'])* "'" .
  </p>
  
  @return parseStringLiteral