Crear una plantilla Feed (Tutorial)

En este tutorial mostraremos paso a paso como crearnos una plantilla desde el principio para exportar los datos de nuestras peticiones que ya están publicadas en el Portal de Empleo a un portal externo como puede ser Jooble o Indeed. Para este tutorial usaremos Indeed

Existen múltiples páginas de este tipo que nos permiten que nos creemos nuestro propio feed de datos

Antes que nada para poder insertar campos en una plantilla debemos ir al siguiente enlace de Indeed donde nos explican como funciona su feed de datos y la documentación para crearlo y que requisitos debemos cumplir 

Enlace de Indeed

En ese enlace nos especifican el formato que debemos cumplir

<?xml version="1.0" encoding="utf-8"?>
<source>
<publisher>Super X Job Site</publisher>
<publisherurl>http://www.superxjobsite.com</publisherurl>
<lastBuildDate>Fri, 10 Dec 2004 22:49:39 GMT</lastBuildDate>
<job>
<title><![CDATA[Sales Executive]]></title>
<date><![CDATA[Fri, 10 Dec 2005 22:49:39 GMT]]></date>
<referencenumber><![CDATA[unique123131]]></referencenumber>
<url><![CDATA[http://www.superxjobsite.com/viewjob.cfm?jobid=unique123131]]></url>
<company><![CDATA[Big ABC Corporation]]></company>
<city><![CDATA[Phoenix]]></city>
<state><![CDATA[AZ]]></state>
<country><![CDATA[US]]></country>
<postalcode><![CDATA[85003]]></postalcode>
<description><![CDATA[Do you have 5-7 years of sales experience? Are you
relentless at closing the deal? Are you ready for an exciting and
high-speed career in sales? If so, we want to hear from you!

We provide competitive compensation, including stock options and a full
benefit plan. As a fast-growing business, we offer excellent
opportunities for exciting and challenging work. As our company
continues to grow, you can expect unlimited career advancement!
]]></description>
<salary><![CDATA[$70K per year]]></salary>
<education><![CDATA[Bachelors]]></education>
<jobtype><![CDATA[fulltime]]></jobtype>
<category><![CDATA[Sales Management, Executive]]></category>
<experience><![CDATA[5+ years]]></experience>
</job>
</source>

y estos son los campos que se exportan desde la plataforma.

  • referencia: Exporta el campo Referencia de la petición.
  • titulo: Exporta el campo Nombre de la petición .
  • fecha_recepcion: Exporta el campo Fecha recepción .
  • destacada: Exporta el campo Marcar como oferta como destacada .
  • vacantes: Exporta el campo Vacantes .
  • salario_minimo: Exporta el campo Salario Mínimo.
  • salario_maximo: Exporta el campo Salario Máximo.
  • descripcion_corta: Exporta el campo Entradilla.
  • descripcion: Exporta el campo Descripcion.
  • pais: Exporta el campo País.
  • provincia: Exporta el campo Provincia.
  • tipo_contrato: Exporta el campo Tipo de contrato.
  • tipo_jornada: Exporta el campo Jornada.
  • ultima_modificacion: Exporta el campo Modificado En que es un campo interno de la petición que guarda el registro de la última modificación realizada sobre la Petición.
  • url: Exporta la url pública de la petición públicada en el Portal de Empleo.

La plataforma lo que hace de forma interna es generar una xml con el siguiente formato compuesto por los campos anteriormente expuestos

<ofertas>
  <today><!--[CDATA[fecha actual]]--></today>
  <oferta>
    <id><!--[CDATA[id]]--></id>
    <referencia><!--[CDATA[referencia]]--></referencia>
    <titulo><!--[CDATA[titulo]]--></titulo>
    <fecha_recepcion><!--[CDATA[fecha_recepcion]]--></fecha_recepcion>
    <destacada><!--[CDATA[destacada]]--></destacada>
    <vacantes><!--[CDATA[vacantes]]--></vacantes>
    <salario_minimo><!--[CDATA[salario_minimo]]--></salario_minimo>
    <salario_maximo><!--[CDATA[salario_maximo]]--></salario_maximo>
    <descripcion_corta><!--[CDATA[descripcion_corta]]--></descripcion_corta>
    <descripcion><!--[CDATA[descripcion]]--></descripcion>
    <pais><!--[CDATA[pais]]--></pais>
    <provincia><!--[CDATA[provincia]]--></provincia>
    <tipo_contrato><!--[CDATA[tipo_contrato]]--></tipo_contrato>
    <tipo_jornada><!--[CDATA[tipo_jornada]]--></tipo_jornada>
    <ultima_modificacion><!--[CDATA[ultima_modificacion]]--></ultima_modificacion>
    <url><!--[CDATA[url]]--></url>
  </oferta>  
    <oferta>
    <id><!--[CDATA[id]]--></id>
    <referencia><!--[CDATA[referencia]]--></referencia>
    <titulo><!--[CDATA[titulo]]--></titulo>
    <fecha_recepcion><!--[CDATA[fecha_recepcion]]--></fecha_recepcion>
    <destacada><!--[CDATA[destacada]]--></destacada>
    <vacantes><!--[CDATA[vacantes]]--></vacantes>
    <salario_minimo><!--[CDATA[salario_minimo]]--></salario_minimo>
    <salario_maximo><!--[CDATA[salario_maximo]]--></salario_maximo>
    <descripcion_corta><!--[CDATA[descripcion_corta]]--></descripcion_corta>
    <descripcion><!--[CDATA[descripcion]]--></descripcion>
    <pais><!--[CDATA[pais]]--></pais>
    <provincia><!--[CDATA[provincia]]--></provincia>
    <tipo_contrato><!--[CDATA[tipo_contrato]]--></tipo_contrato>
    <tipo_jornada><!--[CDATA[tipo_jornada]]--></tipo_jornada>
    <ultima_modificacion><!--[CDATA[ultima_modificacion]]--></ultima_modificacion>
    <url><!--[CDATA[url]]--></url>
  </oferta> 
</ofertas>

Sobre este fichero XML lo que tenemos que hacer es generarnos una transformación XSLT para poder transformar este fichero al formato que nos requiera el portal de Indeed. El XSLT es uno de los estándares para transformación de XML de un formato a otro.

Para poder generar la plantilla primero que todo nos creamos una nueva plantilla y le llamaremos Plantilla Indeed

Para ello vamos a Nueva Plantilla Feed y nos creamos la nueva plantilla

Nueva plantilla de feed

Una vez hayamos pulsado el botón guardar nos lleva a la edición de la plantilla.

Plantilla de Feed creada

Nos vamos a la pestaña Código XSLT y comenzamos a generar los campos que nos pide Indeed

Inicialmente comenzamos introduciendo el siguiente código

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
  <xsl:template match="ofertas">    
    <source>
      <publisher>NOMBRE EMPRESA</publisher>
      <publisherurl>http://mi-nombre-empresa.plusats.com/publicarpeticiones/listado</publisherurl>      
      <lastBuildDate><xsl:value-of select="today"/></lastBuildDate>     
    </source> 
  </xsl:template>
</xsl:stylesheet>

En este trozo de código solo establecemos la primera sección que nos indica Indeed

<publisher>Super X Job Site</publisher>
<publisherurl>http://www.superxjobsite.com</publisherurl>
<lastBuildDate>Fri, 10 Dec 2004 22:49:39 GMT</lastBuildDate>

y obtenemos lo siguiente (podemos ver el resultado tanto en la pestaña Previsualizar, como si tenemos la plantilla activa y pulsamos en el botón Ver feed de datos )

<source>
<publisher>NOMBRE EMPRESA</publisher>
<publisherurl>
http://mi-nombre-empresa.plusats.com/publicarpeticiones/listado
</publisherurl>
<lastBuildDate>19/12/2018 15:03:13</lastBuildDate>
</source>

Como podéis ver vamos transformando el XML que exporta la plataforma a otro XML con el formato que espera Indeed, seguimos añadiendo el resto de campos

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output omit-xml-declaration="yes" indent="yes" 
              cdata-section-elements="titulo fecha_recepcion id url provincia pais descripcion salario_minimo salario_maximo tipo_contrato tipo_jornada"/>
  <xsl:strip-space elements="*"/>
  <xsl:template match="ofertas">    
    <source>
      <publisher>NOMBRE EMPRESA</publisher>
      <publisherurl>http://mi-nombre-empresa.plusats.com/publicarpeticiones/listado</publisherurl>      
      <lastBuildDate><xsl:value-of select="today"/></lastBuildDate>            
      <xsl:for-each select="oferta">
        <job>
          <title><xsl:value-of select="titulo"/></title>
          <date><xsl:value-of select="fecha_recepcion"/></date>
          <referencenumber><xsl:value-of select="id"/></referencenumber>
          <url><xsl:value-of select="url"/></url>
          <company><![CDATA[DEMO PLUS ATS]]></company>
          <city><xsl:value-of select="provincia"/></city>
          <state><xsl:value-of select="provincia"/></state>
          <country><xsl:value-of select="pais"/></country>
          <postalcode><![CDATA[]]></postalcode>
          <description><xsl:value-of select="descripcion"/></description>          
          <salary>Salario minimo: <xsl:value-of select="salario_minimo"/> - Salario maximo: <xsl:value-of select="salario_maximo"/></salary>                       
          <education><![CDATA[]]></education>
          <jobtype><xsl:value-of select="tipo_jornada"/></jobtype>
          <category><xsl:value-of select="tipo_contrato"/></category>
          <experience><![CDATA[]]></experience>
        </job>
      </xsl:for-each>      
    </source> 
  </xsl:template>
</xsl:stylesheet>

y el resultado que obtenemos es el siguiente:

Resultado plantilla de feed

Para conocer cada elemento del Código XSLT, debe conocer como se usa el lenguaje de programación y eso es un aspecto que queda fuera de esta documentación.

De esta forma usted puede ajustar la exportación de sus feed de datos a tantos portales como necesite y con completar los datos correctamente solo de una vez podrá exportar a múltiples plataformas.