Closed gustavofonseca closed 5 years ago
@gustavofonseca @joffilyfe
O XML agris.xml.zip
é gerado a partir da Transformação de
http://www.scielo.br/cgi-bin/wxis.exe/?script=sci_listrecords_agris&database=artigo&IsisScript=ScieloXML/sci_listrecords_agris.xis&PATH_TRANSLATED=../htdocs/&metadataPrefix=oai_dc_agris&from=2017-07-11&set=0102-311X
com htdocs/oai/ListRecords_agris.xsl que inclui htdocs/oai/oai_agris_common.xsl
O problema ocorre no ponto:
<dc:identifier scheme="dcterms:URI">
<![CDATA[http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0102-311X1985000100014&lng=en&nrm=iso&tlng=en]]></dc:identifier>
Gera ]]>
no lugar de ]]>
O defeito está em oai_agris_common.xsl
<xsl:template match="article-meta" mode="identifier">
<!--dc:identifier scheme="dcterms:URI"><xsl:text disable-output-escaping="yes"><![CDATA[http://www.scielo.br/scielo.php?script=sci_arttext&pid=</xsl:text><xsl:value-of select="article-id"/><xsl:text disable-output-escaping="yes">]]></xsl:text></dc:identifier-->
<dc:identifier scheme="dcterms:URI"><![CDATA[<xsl:value-of select=".//self-uri[1]/@xlink:href"/>]]></dc:identifier>
<dc:identifier scheme="ags:DOI"><xsl:value-of select=".//article-id[@pub-id-type='doi']"/></dc:identifier>
</xsl:template>
O jeito recomendado para incluir CDATA é:
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:text disable-output-escaping="yes">]]></xsl:text>
Outros lugares onde ocorre CDATA dentro do oai:
oai_agris_common.xsl:
<dc:title xml:lang="{article-title/@xml:lang}"><xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text><xsl:value-of select="article-title"/><xsl:text disable-output-escaping="yes">]]></xsl:text></dc:title>
<dcterms:abstract xml:lang="{@xml:lang}"><xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text><xsl:value-of select="p" disable-output-escaping="yes"/><xsl:text disable-output-escaping="yes">]]></xsl:text></dcterms:abstract>
<!--dc:identifier scheme="dcterms:URI"><xsl:text disable-output-escaping="yes"><![CDATA[http://www.scielo.br/scielo.php?script=sci_arttext&pid=</xsl:text><xsl:value-of select="article-id"/><xsl:text disable-output-escaping="yes">]]></xsl:text></dc:identifier-->
<dc:identifier scheme="dcterms:URI"><![CDATA[<xsl:value-of select=".//self-uri[1]/@xlink:href"/>]]></dc:identifier>
oai_common.xsl:
<xsl:value-of select=" concat( '<![CDATA[', . , ']]>' ) " disable-output-escaping="yes"/>
<xsl:with-param name="value" select="concat( '<![CDATA[', SURNAME , ',' , NAME , ']]>' )"></xsl:with-param>
<xsl:with-param name="value"><xsl:value-of select="concat('<![CDATA[',TITLE/text(),' ',$source,']]>')"/> </xsl:with-param>
oai_openaire_common.xsl:
<xsl:value-of select=" concat( '<![CDATA[', . , ']]>' ) " disable-output-escaping="yes"/>
<xsl:with-param name="value" select="concat( '<![CDATA[', SURNAME , ',' , NAME , ']]>' )"></xsl:with-param>
<xsl:with-param name="value"><xsl:value-of select="concat('<![CDATA[',TITLE/text(),' ',$source,']]>')"/> </xsl:with-param>
Excelente, @robertatakenaka. E você acha que é necessário esse tanto de CDATA?
Eu não consegui reproduzir o problema com uma base de dados diferente da que temos em br mas fica claro que em outras partes do código nós tratamos o CDATA da forma apontada por você, inclusive em na linha 65
acima da linha problemática. Posso estar enganado mas no XML resultante do endereço que está com problema é possível ver que as vezes nós temos o caractere <
e as vezes tempos <
, por exemplo:
<dc:identifier scheme="dcterms:URI"><![CDATA[http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0102-05362017000200159&lng=en&nrm=iso&tlng=en]]></dc:identifier>
<dc:identifier scheme="dcterms:URI"><![CDATA[http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0102-05362017000200160&lng=en&nrm=iso&tlng=en]]></dc:identifier>
Só a título de curiosidade você sabe o porque @robertatakenaka?
@gustavofonseca CDATA é necessário quando não quer processar o conteúdo... É um modo lazy para não tratar eventuais decodificações, imagino
@joffilyfe
<![CDATA[
e ]]>
para a saída do dado, já no XML
<![CDATA[
e ]]>
na XSL, pois vc está informando que quer como saída: <![CDATA[
e ]]>
.
O erro se manifesta apenas no prefixo
oai_dc_agris
. Note que com o prefixooai_dc
os dados são retornados corretamente.http://www.scielo.br/oai/scielo-oai.php?verb=ListRecords&metadataPrefix=oai_dc_agris&from=2017-07-11&set=0102-311X