diff --git a/articlemeta/export_crossref.py b/articlemeta/export_crossref.py
index a1d9d3a..78ff898 100644
--- a/articlemeta/export_crossref.py
+++ b/articlemeta/export_crossref.py
@@ -7,6 +7,7 @@
from datetime import datetime
from xylose.scielodocument import UnavailableMetadataException
+from xylose.choices import article_type
import plumber
SUPPLBEG_REGEX = re.compile(r'^0 ')
@@ -1198,3 +1199,73 @@ def _transform_translations(self, data):
journal_article_node.append(deepcopy(program_node))
return data
+
+
+class XMLCrossmark(plumber.Pipe):
+ def precond(self,):
+ # TODO
+ pass
+
+ def create_element(self, tag, text=None, **attributes):
+ element = ET.Element(tag)
+ if text:
+ element.text = text
+
+ for key, value in attributes.items():
+ element.set(key, value)
+ return element
+
+ def create_elem_crossmark(self,):
+ return ET.Element("crossmark")
+
+ def create_element_crossmark_policy(self, raw):
+ # TODO
+ # É preciso ter uma página que explique para os readers
+ # Como atualizar um conteudo depois da publicação.
+ # Está página tem que ser registrada e ter um DOi para habilitar um link permanente
+ # https://www.crossref.org/documentation/crossmark/participating-in-crossmark/#00277
+ # https://www.crossref.org/documentation/crossmark/participating-in-crossmark/#00278
+ return self.create_element("crossmark_policy", text="10.33012/example_policy")
+
+ def create_element_crossmark_domain(self, raw):
+ crossmark_domains = self.create_element(tag="crossmark_domains")
+ crossmark_domain = self.create_element(tag="crossmark_domain")
+ domain = self.create_element(tag="domain", text=raw.article.scielo_domain)
+ crossmark_domain.append(domain)
+ crossmark_domains.append(crossmark_domain)
+ return crossmark_domains
+
+ def create_custom_metadata(self, raw):
+ # TODO
+ # Criar elementos de datas para: received, accepted e published.
+ # EX:
+ # 2012-07-24
+ # 2012-08-29
+ # 2012-09-10
+ pass
+
+
+ def create_crossmark_for_new_content(self, raw):
+ crossmark = self.create_elem_crossmark()
+ crossmark.append(self.create_element_crossmark_policy(raw=raw))
+ crossmark.append(self.create_element_crossmark_domain(raw=raw))
+ crossmark.append(self.create_custom_metadata(raw=raw))
+ return crossmark
+
+ def set_element_update(self, raw):
+ # TODO
+ # Conforme: https://github.com/scieloorg/xylose/blob/262126e37e55bb7df2ebc585472f260daddedce9/xylose/choices.py#L54
+ # Verificar quais tipos de artigos são passiveis de atribuição da tag update
+ updates = ET.Element("updates")
+ update = ET.Element("update")
+ update.text = article_type.get(raw.article.document_type)
+ updates.append()
+
+ def transform(self, data):
+ raw, xml = data
+
+ element_crossmark = self.create_crossmark_for_new_content()
+ for journal_article in xml.findall(".//journal_article"):
+ journal_article.append(element_crossmark)
+
+ return data
\ No newline at end of file