Secciones de la página

xsm. tol


Declaraciones


Variables de control


Constantes


Funciones


Time oriented language


Árbol de ficheros

Funciones

Set XsmDateRepTab()

Real XsmDir()

Tol

Artículos del sitio

Presentación de Tol

Todos los programas

Simuladores visuales

Sitios que me gustan

Por categorías

Algoritmia

Búsqueda y ordenación

Computación fisiológica

Editorial y edición

Gráficos de datos

Herramientas y utilidades

Hipertexto

Informática forense

Lectura óptica de datos

Metaprogramación

No determinista

Ofimática

Recursión e iteración

Reglas y restricciones

Series y estadística









xsm.tol de Ediciones.aContracorriente

Funciones para realizar una descripcion Xsm del sitemap de un sitio web utilizando las especificaciones de Google. Pone la misma prioridad para todas las paginas, ya que la prioridad es un valor relativo entre las paginas del sitio web, no frente a otros webs. Xsm son las siglas de Xsm Site Map, originalmente a las funciones de esta libreria se las identifico por Xml, pero se cambio por ser Xml un termino muy general.

Declaraciones

Variables de control

  • Text XsmPri
    Prioridad, valor relativo entre paginas.
  • Text XsmFrq
    Frecuencia de actualizacion del sitio web.
  • Set XsmTyp
    Tipos de ficheros que se transmiten.
  • Text XsmExc
    Directorio en el que no se busca, el de semillas.

Constantes

  • Text XsmHea
    Semilla para la cebecera del sitemap en Xml.
  • Text XsmEnd
    Texto final de un sitemap, etiqueta de cierre Xml.
  • Text XsmUrl
    Semilla para la url de un fichero Xml de sitemap.

Funciones

  • Set XsmDateRepTab(Date dteFil)
    Retorna una tabla de reemplazamientos para las fechas.
  • Real XsmDir(Text xsmFil, Text dirPth, Text urlDom)
    Crea un sitemap con el contenido de un directorio, retorna el numero de ficheros includos en el sitemap.

Variables de control

Text XsmPri

//////////////////////////////////////////////////////////////////////////////
Text XsmPri = "0.5"; // Da igual 1 que 0 es relativo entre las paginas
//////////////////////////////////////////////////////////////////////////////
PutDescription("Prioridad, valor relativo entre paginas.", XsmPri);
//////////////////////////////////////////////////////////////////////////////

Text XsmFrq

//////////////////////////////////////////////////////////////////////////////
Text XsmFrq = "weekly"; // daily, weekly, monthly, ...
//////////////////////////////////////////////////////////////////////////////
PutDescription("Frecuencia de actualizacion del sitio web.", XsmFrq);
//////////////////////////////////////////////////////////////////////////////

Set XsmTyp

//////////////////////////////////////////////////////////////////////////////
Set  XsmTyp = [["html", "pdf"]]; // Tipos Htm y Pdf
//////////////////////////////////////////////////////////////////////////////
PutDescription("Tipos de ficheros que se transmiten.", XsmTyp);
//////////////////////////////////////////////////////////////////////////////

Text XsmExc

//////////////////////////////////////////////////////////////////////////////
Text XsmExc = "/seed/"; // Exclusion
//////////////////////////////////////////////////////////////////////////////
PutDescription("Directorio en el que no se busca, el de semillas.", XsmExc);
//////////////////////////////////////////////////////////////////////////////

Constantes

Text XsmHea

//////////////////////////////////////////////////////////////////////////////
Text XsmHea =
"<?xml version='1.0' encoding='UTF-8'?>
<urlset xmlns='http://www.google.com/schemas/sitemap/0.84'>
<url>
  <loc>DOM</loc>
  <priority>"+XsmPri+"</priority> 
  <lastmod>YEA-MTH-DAYTHOU:MIN:SEC+00:00</lastmod> 
  <changefreq>"+XsmFrq+"</changefreq> 
</url>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Semilla para la cebecera del sitemap en Xml.", XsmHea);
//////////////////////////////////////////////////////////////////////////////

Text XsmEnd

//////////////////////////////////////////////////////////////////////////////
Text XsmEnd = "
</urlset>"; // Parece que no se quiere el último salto de línea
//////////////////////////////////////////////////////////////////////////////
PutDescription("Texto final de un sitemap, etiqueta de cierre Xml.", XsmEnd);
//////////////////////////////////////////////////////////////////////////////

Text XsmUrl

//////////////////////////////////////////////////////////////////////////////
Text XsmUrl = "
<url>
  <loc>URL</loc> 
  <priority>"+XsmPri+"</priority> 
  <lastmod>YEA-MTH-DAYTHOU:MIN:SEC+00:00</lastmod> 
  <changefreq>"+XsmFrq+"</changefreq> 
</url>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Semilla para la url de un fichero Xml de sitemap.", XsmUrl);
//////////////////////////////////////////////////////////////////////////////

Funciones

Set XsmDateRepTab()

//////////////////////////////////////////////////////////////////////////////
Set XsmDateRepTab(Date dteFil) // Fecha con segundo de un fichero
//////////////////////////////////////////////////////////////////////////////
{ 
  //                            123456789.123456789.
  //                            y2005m07d20h17i40s35.00
  Text dteTxt = FormatDate(dteFil, "%cy%Ym%md%d%uh%hi%is%s");
  [[ SetOfText("YEA", Sub(dteTxt,  2,  5)),
     SetOfText("MTH", Sub(dteTxt,  7,  8)),
     SetOfText("DAY", Sub(dteTxt, 10, 11)),
     SetOfText("HOU", Sub(dteTxt, 13, 14)),
     SetOfText("MIN", Sub(dteTxt, 16, 17)),
     SetOfText("SEC", Sub(dteTxt, 19, 20)),
     SetOfText("'",   Char(34)           )
  ]]
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna una tabla de reemplazamientos para las fechas.",
XsmDateRepTab);
//////////////////////////////////////////////////////////////////////////////

Real XsmDir()

//////////////////////////////////////////////////////////////////////////////
Real XsmDir(Text xsmFil, // Fichero de salida
            Text dirPth, // Directorio a explorar
            Text urlDom) // Dominio con /, ie. http://www.omrforms.es/
//////////////////////////////////////////////////////////////////////////////
{
  Text WriteLn("Output file: "+xsmFil+"\n"+
               "Input path:  "+dirPth+"\n"+
               "Domain:      "+urlDom);

  Set  setDir = EvalSet(XsmTyp, Set(Text filExt) // htm, html, pdf,...
  {
    Text WriteLn("Get files for: "+filExt);
    DirExtAll(dirPth, filExt, TRUE, TRUE)
  });
  Set  getDir = BinGroup("<<", setDir);

  Text WriteLn("Init Xml site map");
  Text WriteFile(xsmFil, ReplaceTable(XsmHea, // Domain and date
                 [[ [["DOM",urlDom]] ]] << XsmDateRepTab(Now)));

  Text WriteLn("Exclusions, not "+XsmExc);
  Set  getSel = Select(getDir, Real(Text pth) { !TextFind(pth, XsmExc) });

  Set  filCic = EvalSet(getSel, Real(Text filPth)
  {
    Text filUrl = Replace(filPth, "web/", urlDom);
    Date filDte = FileTime(filPth);
    Set  repTab = XsmDateRepTab(filDte) <<
    [[
       [[ "URL", filUrl ]]
    ]];
    Text AppendFile(xsmFil, ReplaceTable(XsmUrl, repTab));
    TRUE
  });

  Text AppendFile(xsmFil, XsmEnd);
  Text WriteLn("Xml site map: "+F(Card(filCic))+" pages");

  Card(filCic)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Crea un sitemap con el contenido de un directorio, retorna el numero de
ficheros includos en el sitemap.",
XsmDir);
//////////////////////////////////////////////////////////////////////////////

Time oriented language

//////////////////////////////////////////////////////////////////////////////
// FILE    : xsm.tol
// AUTHOR  : http://www.asolver.com
// PURPOSE : Funciones para realizar una descripcion Xsm del sitemap de un
// sitio web utilizando las especificaciones de Google.
// Pone la misma prioridad para todas las paginas, ya que la prioridad es un
// valor relativo entre las paginas del sitio web, no frente a otros webs.
// Xsm son las siglas de Xsm Site Map, originalmente a las funciones de esta
// libreria se las identifico por Xml, pero se cambio por ser Xml un termino
// muy general.
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
// CONTROLS
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
Text XsmPri = "0.5"; // Da igual 1 que 0 es relativo entre las paginas
//////////////////////////////////////////////////////////////////////////////
PutDescription("Prioridad, valor relativo entre paginas.", XsmPri);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text XsmFrq = "weekly"; // daily, weekly, monthly, ...
//////////////////////////////////////////////////////////////////////////////
PutDescription("Frecuencia de actualizacion del sitio web.", XsmFrq);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Set  XsmTyp = [["html", "pdf"]]; // Tipos Htm y Pdf
//////////////////////////////////////////////////////////////////////////////
PutDescription("Tipos de ficheros que se transmiten.", XsmTyp);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text XsmExc = "/seed/"; // Exclusion
//////////////////////////////////////////////////////////////////////////////
PutDescription("Directorio en el que no se busca, el de semillas.", XsmExc);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
// CONSTANTS
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
Text XsmHea =
"<?xml version='1.0' encoding='UTF-8'?>
<urlset xmlns='http://www.google.com/schemas/sitemap/0.84'>
<url>
  <loc>DOM</loc>
  <priority>"+XsmPri+"</priority> 
  <lastmod>YEA-MTH-DAYTHOU:MIN:SEC+00:00</lastmod> 
  <changefreq>"+XsmFrq+"</changefreq> 
</url>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Semilla para la cebecera del sitemap en Xml.", XsmHea);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text XsmEnd = "
</urlset>"; // Parece que no se quiere el último salto de línea
//////////////////////////////////////////////////////////////////////////////
PutDescription("Texto final de un sitemap, etiqueta de cierre Xml.", XsmEnd);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text XsmUrl = "
<url>
  <loc>URL</loc> 
  <priority>"+XsmPri+"</priority> 
  <lastmod>YEA-MTH-DAYTHOU:MIN:SEC+00:00</lastmod> 
  <changefreq>"+XsmFrq+"</changefreq> 
</url>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Semilla para la url de un fichero Xml de sitemap.", XsmUrl);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
// FUNCTIONS
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
Set XsmDateRepTab(Date dteFil) // Fecha con segundo de un fichero
//////////////////////////////////////////////////////////////////////////////
{ 
  //                            123456789.123456789.
  //                            y2005m07d20h17i40s35.00
  Text dteTxt = FormatDate(dteFil, "%cy%Ym%md%d%uh%hi%is%s");
  [[ SetOfText("YEA", Sub(dteTxt,  2,  5)),
     SetOfText("MTH", Sub(dteTxt,  7,  8)),
     SetOfText("DAY", Sub(dteTxt, 10, 11)),
     SetOfText("HOU", Sub(dteTxt, 13, 14)),
     SetOfText("MIN", Sub(dteTxt, 16, 17)),
     SetOfText("SEC", Sub(dteTxt, 19, 20)),
     SetOfText("'",   Char(34)           )
  ]]
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna una tabla de reemplazamientos para las fechas.",
XsmDateRepTab);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Real XsmDir(Text xsmFil, // Fichero de salida
            Text dirPth, // Directorio a explorar
            Text urlDom) // Dominio con /, ie. http://www.omrforms.es/
//////////////////////////////////////////////////////////////////////////////
{
  Text WriteLn("Output file: "+xsmFil+"\n"+
               "Input path:  "+dirPth+"\n"+
               "Domain:      "+urlDom);

  Set  setDir = EvalSet(XsmTyp, Set(Text filExt) // htm, html, pdf,...
  {
    Text WriteLn("Get files for: "+filExt);
    DirExtAll(dirPth, filExt, TRUE, TRUE)
  });
  Set  getDir = BinGroup("<<", setDir);

  Text WriteLn("Init Xml site map");
  Text WriteFile(xsmFil, ReplaceTable(XsmHea, // Domain and date
                 [[ [["DOM",urlDom]] ]] << XsmDateRepTab(Now)));

  Text WriteLn("Exclusions, not "+XsmExc);
  Set  getSel = Select(getDir, Real(Text pth) { !TextFind(pth, XsmExc) });

  Set  filCic = EvalSet(getSel, Real(Text filPth)
  {
    Text filUrl = Replace(filPth, "web/", urlDom);
    Date filDte = FileTime(filPth);
    Set  repTab = XsmDateRepTab(filDte) <<
    [[
       [[ "URL", filUrl ]]
    ]];
    Text AppendFile(xsmFil, ReplaceTable(XsmUrl, repTab));
    TRUE
  });

  Text AppendFile(xsmFil, XsmEnd);
  Text WriteLn("Xml site map: "+F(Card(filCic))+" pages");

  Card(filCic)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Crea un sitemap con el contenido de un directorio, retorna el numero de
ficheros includos en el sitemap.",
XsmDir);
//////////////////////////////////////////////////////////////////////////////

Árbol de ficheros

Ediciones.aContracorriente construye las páginas del sitio web edicionesacontracorriente.com

  • make.tol proceso principal de generación de contenidos del sitio web
  • tol directorios de código fuente en lenguaje de programación Tol
    • cmm funciones comunes de textos, fechas, conjuntos, ficheros, etc.
      • txt.tol funciones de manejo de textos
      • dte.tol funciones de manejo de fechas en español
      • set.tol funciones de manejo de conjuntos
      • fil.tol funciones de gestión de ficheros
      • dir.tol funciones de gestión de directorios
      • tme.tol del macro-expansor simple de Tol en Html
      • htm.tol funciones básicas del lenguaje Html
      • ftp.tol funciones para generar mandatos para hacer Ftp
      • xsm.tol para construir sitemaps en Xml
    • app funciones específicas de Ediciones.aContracorriente
      • pdb.tol funciones de manejo de los posts de una agenda
      • pht.tol funciones auxiliares para el Html de los post
    • inc.tol inclusión de los ficheros Tol básicos y de aplicación
  • agenda directorio destinado a albergar los ficheros de agendas de posts
  • web directorio destinado a las páginas web generadas automáticamente
    • css directorio para ficheros de estilo
      • common.css fichero de estilo para las páginas Html del sitio web
    • src directorio para ficheros javascript
      • ads.js código Javascript para emitir anuncios desde otros sitios
      • txt.js código Javascript para el manejo de textos
    • articulos directorio para páginas de artículos generadas por este programa
    • categorias directorio para páginas de categorias generadas automáticamente
    • sitemap.xml mapa del sitio web generado en Xml de forma automática
  • history archivo histórico del programa Ediciones.aContracorriente
  • ediciones_acontracorriente.pdf documento resumen de funciones del programa de generación Html

2015 asolver.com | Aviso legal | XHTML | Δ Θ Ξ | Creative Commons | Mapa y funciones del sitio

Tol