input: 
  from typing import List
  
  def search_KB_SRU(query: str, collection: str = None, start_record: int = 1, max_records: int = 10, record_schema: str = None) -> List[dict]:
      """
      Perform a search using the KB SRU API. The function allows passing a query string and optionally a collection name, start record number, maximum number of records to return, and record schema.
      Returns a list of dictionaries containing the search results.
  
      >>> search_KB_SRU("book", "ANP", 1, 2, "dcx")
      [{'title': 'Radio Bulletins ANP', 'creator': 'ANP Press Agency', 'subject': 'News'}, {'title': 'Another ANP Bulletin', 'creator': 'ANP Press Agency', 'subject': 'News'}]
      >>> search_KB_SRU("digital", "DPO", 1, 1)
      [{'title': 'Early Dutch Books Online', 'creator': 'DPO', 'subject': 'Digital Books'}]
      """
      # Implementation would go here
  
output:     import requests
      import xml.etree.ElementTree as ET
  
      base_url = "http://jsru.kb.nl/sru/sru?"
      params = {
          "operation": "searchRetrieve",
          "version": "1.2",
          "query": query,
          "startRecord": start_record,
          "maximumRecords": max_records,
          "recordSchema": record_schema if record_schema else "dcx"
      }
  
      if collection:
          params["query"] = f'{collection} AND {query}'
  
      response = requests.get(base_url, params=params)
      root = ET.fromstring(response.content)
  
      results = []
      for record in root.findall('.//{http://www.loc.gov/zing/srw/}recordData'):
          record_dict = {}
          for elem in record.findall('.//{http://purl.org/dc/elements/1.1/}'):
              record_dict[elem.tag.split('}')[-1]] = elem.text
          results.append(record_dict)
  
      return results