def convert_article_xml(file_xml_path): obj_xmltree = xml.loadToXML(file_xml_path) obj_xml = obj_xmltree.getroot() obj_xml.set("specific-use", "sps-1.9") obj_xml.set("dtd-version", "1.1") xml_sps = SPS_Package(obj_xmltree) # CONVERTE O BODY DO AM PARA SPS xml_sps.transform_body() # CONVERTE PUB-DATE PARA SPS 1.9 xml_sps.transform_pubdate() # CONSTROI O SCIELO-id NO XML CONVERTIDO xml_sps.create_scielo_id() # Remove a TAG <counts> do XML xml_sps.transform_article_meta_count() languages = "-".join(xml_sps.languages) _, fname = os.path.split(file_xml_path) fname, fext = fname.rsplit(".", 1) new_file_xml_path = os.path.join(config.get("CONVERSION_PATH"), "%s.%s.%s" % (fname, languages, fext)) xml.objXML2file(new_file_xml_path, xml_sps.xmltree, pretty=True)
def convert_article_xml(file_xml_path: str, spy=False, poison_pill=PoisonPill()): if poison_pill.poisoned: return logger.info(os.path.basename(file_xml_path)) obj_xmltree = xml.loadToXML(file_xml_path) obj_xml = obj_xmltree.getroot() obj_xml.set("specific-use", "sps-1.9") obj_xml.set("dtd-version", "1.1") xml_sps = SPS_Package(obj_xmltree) # CONVERTE O BODY DO AM PARA SPS xml_sps.transform_body(spy) # Transforma XML em SPS 1.9 xml_sps.transform_content() # Completa datas presentes na base artigo e ausente no XML json_file_path = Path(config.get("SOURCE_PATH")).joinpath( Path(xml_sps.scielo_pid_v2 + ".json")) article = xylose_converter.json_file_to_xylose_article(json_file_path) document_pubdate, issue_pubdate = get_article_dates(article) xml_sps.complete_pub_date(document_pubdate, issue_pubdate) # Remove a TAG <counts> do XML xml_sps.transform_article_meta_count() languages = "-".join(xml_sps.languages) _, fname = os.path.split(file_xml_path) fname, fext = fname.rsplit(".", 1) new_file_xml_path = os.path.join(config.get("CONVERSION_PATH"), "%s.%s.%s" % (fname, languages, fext)) xml.objXML2file(new_file_xml_path, xml_sps.xmltree, pretty=True)
class Test_ArticleMetaCount(unittest.TestCase): def setUp(self): xml = """<article xmlns:xlink="http://www.w3.org/1999/xlink"><article-meta> <counts> <fig-count count="0"/> <table-count count="0"/> <equation-count count="0"/> </counts> <body> <fig id="i01"><graphic xlink:href="/img/fbpe/rm/v30n1/0002i01.gif"/></fig> <table-wrap id="tab01"><label>Tabela 1</label><table><tr><td>TEXTO</td></tr></table></table-wrap> </body> </article-meta></article>""" xmltree = etree.fromstring(xml) self.sps_package = SPS_Package(xmltree, None) def test__transform_article_meta_count(self): result = self.sps_package.transform_article_meta_count() self.assertIsNone(result.find(".//counts"))