docs: def pids2ore(in_stream, fmt='xml', base_url='https://cn.dataone.org/cn'):
      """read pids from in_stream and generate a resource map.
  
      first pid is the ore_pid second is the sci meta pid remainder are data pids
  
      """
      pids = []
      for line in in_stream:
          pid = line.strip()
          if len(pid) > 0:
              if not pid.startswith("# "):
                  pids.append(pid)
      if (len(pids)) < 2:
          raise ValueError("Insufficient identifiers provided.")
  
      logging.info("Read %d identifiers", len(pids))
  
      ore = ResourceMap(base_url=base_url)
  
      logging.info("ORE PID = %s", pids[0])
      ore.initialize(pids[0])
  
      logging.info("Metadata PID = %s", pids[1])
      ore.addMetadataDocument(pids[1])
  
      ore.addDataDocuments(pids[2:], pids[1])
      return ore.serialize_to_display(doc_format=fmt)