code: def parse_metadata(cls, obj, xml):
          
  
          for child in xml.xpath("ti:description", namespaces=XPATH_NAMESPACES):
              lg = child.get("{http://www.w3.org/XML/1998/namespace}lang")
              if lg is not None:
                  obj.set_cts_property("description", child.text, lg)
  
          for child in xml.xpath("ti:label", namespaces=XPATH_NAMESPACES):
              lg = child.get("{http://www.w3.org/XML/1998/namespace}lang")
              if lg is not None:
                  obj.set_cts_property("label", child.text, lg)
  
          obj.citation = cls.CLASS_CITATION.ingest(xml, obj.citation, "ti:online/ti:citationMapping/ti:citation")
  
          # Added for commentary
          for child in xml.xpath("ti:about", namespaces=XPATH_NAMESPACES):
              obj.set_link(RDF_NAMESPACES.CTS.term("about"), child.get('urn'))
  
          _parse_structured_metadata(obj, xml)
  
          """
          online = xml.xpath("ti:online", namespaces=NS)
          if len(online) > 0:
              online = online[0]
              obj.docname = online.get("docname")
              for validate in online.xpath("ti:validate", namespaces=NS):
                  obj.validate = validate.get("schema")
              for namespaceMapping in online.xpath("ti:namespaceMapping", namespaces=NS):
                  obj.metadata["namespaceMapping"][namespaceMapping.get("abbreviation")] = namespaceMapping.get("nsURI")
          """
docs: Parse a resource to feed the object
  
          :param obj: Obj to set metadata of
          :type obj: XmlCtsTextMetadata
          :param xml: An xml representation object
          :type xml: lxml.etree._Element