XSL for removing words less than 4 letters in a sitemap

Discussion in 'XML' started by Olagato, Apr 1, 2008.

  1. Olagato

    Olagato Guest

    I need to transform this:

    <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
    <url>
    <loc>http://localhost/index.php/index./Paths-for-the-extreme-player</
    loc>
    </url>
    <url>
    <loc>http://localhost/index.php/index.php/Games/The-edge-of-the-
    wall</loc>
    </url>
    </urlset>

    into this:

    <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
    <url>
    <loc>http://localhost/index.php/index./Books/Paths-for-the-
    extreme-player</loc>
    <news:news>
    <news:keywords>Books, Paths, extreme, player</
    news:keywords>
    </news:news>
    </url>
    <url>
    <loc>http://localhost/index.php/index.php/Games/The-edge-of-the-
    wall</loc>
    <news:news>
    <news:keywords>Games, edge, wall</news:keywords>
    </news:news>
    </url>
    </urlset>

    I mean, I need a template for creating a <news:keywords> tag which
    contents all the words from <loc> tag with words of more than 3
    letters.
     
    Olagato, Apr 1, 2008
    #1
    1. Advertising

  2. Olagato wrote:
    > I need to transform this:
    >
    > <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
    > <url>
    > <loc>http://localhost/index.php/index./Paths-for-the-extreme-player</
    > loc>
    > </url>
    > <url>
    > <loc>http://localhost/index.php/index.php/Games/The-edge-of-the-
    > wall</loc>
    > </url>
    > </urlset>
    >
    > into this:
    >
    > <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
    > <url>
    > <loc>http://localhost/index.php/index./Books/Paths-for-the-
    > extreme-player</loc>
    > <news:news>
    > <news:keywords>Books, Paths, extreme, player</
    > news:keywords>
    > </news:news>
    > </url>
    > <url>
    > <loc>http://localhost/index.php/index.php/Games/The-edge-of-the-
    > wall</loc>
    > <news:news>
    > <news:keywords>Games, edge, wall</news:keywords>
    > </news:news>
    > </url>
    > </urlset>
    >
    > I mean, I need a template for creating a <news:keywords> tag which
    > contents all the words from <loc> tag with words of more than 3
    > letters.


    Do you want to use XSLT 2.0 or 1.0?
    What about words like 'localhost' or 'index', how do you decide that
    those are not taken?

    Here is an XSLT 2.0 stylesheet that should show you an approach using
    the tokenize method:

    <xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:news="http://example.com/2008/news"
    xmlns:sm="http://www.google.com/schemas/sitemap/0.84"
    exclude-result-prefixes="sm"
    version="2.0">

    <xsl:eek:utput method="xml" indent="yes"/>

    <xsl:strip-space elements="*"/>

    <xsl:template match="@* | node()">
    <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
    </xsl:template>

    <xsl:template match="sm:url">
    <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
    <news:news>
    <news:keywords>
    <xsl:value-of
    select="for $s in tokenize(sm:loc, '/')[position() &gt; 5]
    return tokenize($s, '[\-/]')[string-length(.) &gt; 3]"
    separator=", "/>
    </news:keywords>
    </news:news>
    </xsl:copy>
    </xsl:template>

    </xsl:stylesheet>

    Result with Saxon 9 when run against your posted input sample (with a
    'root' element added and a namespace choosen for the 'news' prefix) is

    <root>
    <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
    <url>

    <loc>http://localhost/index.php/index./Paths-for-the-extreme-player</loc>
    <news:news xmlns:news="http://example.com/2008/news">
    <news:keywords>Paths, extreme, player</news:keywords>
    </news:news>
    </url>
    <url>

    <loc>http://localhost/index.php/index.php/Games/The-edge-of-the-wall</loc>
    <news:news xmlns:news="http://example.com/2008/news">
    <news:keywords>Games, edge, wall</news:keywords>
    </news:news>
    </url>
    </urlset>
    </root>


    --

    Martin Honnen
    http://JavaScript.FAQTs.com/
     
    Martin Honnen, Apr 2, 2008
    #2
    1. Advertising

  3. Olagato

    Olagato Guest

    On 2 abr, 13:35, Martin Honnen <> wrote:
    > Olagato wrote:
    > > I need to transform this:

    >
    > > <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
    > > <url>
    > > <loc>http://localhost/index.php/index./Paths-for-the-extreme-player</
    > > loc>
    > > </url>
    > > <url>
    > > <loc>http://localhost/index.php/index.php/Games/The-edge-of-the-
    > > wall</loc>
    > > </url>
    > > </urlset>

    >
    > > into this:

    >
    > > <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
    > > <url>
    > > <loc>http://localhost/index.php/index./Books/Paths-for-the-
    > > extreme-player</loc>
    > > <news:news>
    > > <news:keywords>Books, Paths, extreme, player</
    > > news:keywords>
    > > </news:news>
    > > </url>
    > > <url>
    > > <loc>http://localhost/index.php/index.php/Games/The-edge-of-the-
    > > wall</loc>
    > > <news:news>
    > > <news:keywords>Games, edge, wall</news:keywords>
    > > </news:news>
    > > </url>
    > > </urlset>

    >
    > > I mean, I need a template for creating a <news:keywords> tag which
    > > contents all the words from <loc> tag with words of more than 3
    > > letters.

    >
    > Do you want to use XSLT 2.0 or 1.0?
    > What about words like 'localhost' or 'index', how do you decide that
    > those are not taken?
    >
    > Here is an XSLT 2.0 stylesheet that should show you an approach using
    > the tokenize method:
    >
    > <xsl:stylesheet
    > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    > xmlns:news="http://example.com/2008/news"
    > xmlns:sm="http://www.google.com/schemas/sitemap/0.84"
    > exclude-result-prefixes="sm"
    > version="2.0">
    >
    > <xsl:eek:utput method="xml" indent="yes"/>
    >
    > <xsl:strip-space elements="*"/>
    >
    > <xsl:template match="@* | node()">
    > <xsl:copy>
    > <xsl:apply-templates select="@* | node()"/>
    > </xsl:copy>
    > </xsl:template>
    >
    > <xsl:template match="sm:url">
    > <xsl:copy>
    > <xsl:apply-templates select="@* | node()"/>
    > <news:news>
    > <news:keywords>
    > <xsl:value-of
    > select="for $s in tokenize(sm:loc, '/')[position() &gt; 5]
    > return tokenize($s, '[\-/]')[string-length(.) &gt; 3]"
    > separator=", "/>
    > </news:keywords>
    > </news:news>
    > </xsl:copy>
    > </xsl:template>
    >
    > </xsl:stylesheet>
    >
    > Result with Saxon 9 when run against your posted input sample (with a
    > 'root' element added and a namespace choosen for the 'news' prefix) is
    >
    > <root>
    > <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
    > <url>
    >
    > <loc>http://localhost/index.php/index./Paths-for-the-extreme-player</loc>
    > <news:news xmlns:news="http://example.com/2008/news">
    > <news:keywords>Paths, extreme, player</news:keywords>
    > </news:news>
    > </url>
    > <url>
    >
    > <loc>http://localhost/index.php/index.php/Games/The-edge-of-the-wall</loc>
    > <news:news xmlns:news="http://example.com/2008/news">
    > <news:keywords>Games, edge, wall</news:keywords>
    > </news:news>
    > </url>
    > </urlset>
    > </root>
    >
    > --
    >
    > Martin Honnen
    > http://JavaScript.FAQTs.com/



    Thank you for your help, Martin.

    > Do you want to use XSLT 2.0 or 1.0?

    I'm using XSLT 1.0

    > What about words like 'localhost' or 'index', how do you decide that those are not taken?

    It's not a problem now. Maybe a sentence like next:
    translate( translate( substring-after( sm:loc, 'http://localhost/
    index.php/index.php/') ,'-', ',') ,'/',',')

    I'm trying your XSL from PHP without success:
    <?php
    header('Content-Type: application/xhtml+xml; charset=utf-8');
    $xml = new DOMDocument;
    $xml->load('original_news.xml');

    $xsl = new DOMDocument('1.0','UTF-8');
    $xsl->load('news_to_google_markup.xsl');

    try{
    $proc = new XSLTProcessor();
    $proc->importStylesheet($xsl);
    $newXml = $proc->transformToXML($xml);
    echo $newXml;
    }catch(Exception $pEx){
    return $pEx->getMessage();
    }
    ?>

    1- original_news.xml is:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-transform type="text/xsl" href="news_to_google_markup.xsl"?>
    <urlset xmlns:sm="http://www.google.com/schemas/sitemap/0.84">
    <url>
    <loc>http://localhost/index.php/index/Paths-for-the-extreme-player</
    loc>
    </url>
    <url>
    <loc>http://localhost/index.php/index.php/Games/The-edge-of-the-
    wall</loc>
    </url>
    </urlset>

    2- and your XSL that I've renamed as "news_to_google_markup.xsl" is:
    <xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:news="http://example.com/2008/news"
    xmlns:sm="http://www.google.com/schemas/sitemap/0.84"
    exclude-result-prefixes="sm"
    version="2.0">

    <xsl:eek:utput method="xml" indent="yes"/>

    <xsl:strip-space elements="*"/>

    <xsl:template match="@* | node()">
    <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
    </xsl:template>

    <xsl:template match="sm:url">
    <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
    <news:news>
    <news:keywords>
    <xsl:value-of
    select="for $s in tokenize(sm:loc, '/')[position() &gt;
    5]
    return tokenize($s, '[\-/]')[string-length(.)
    &gt; 3]"
    separator=", "/>
    </news:keywords>
    </news:news>
    </xsl:copy>
    </xsl:template>
    </xsl:stylesheet>

    3- Error reported in PHP is:
    <b>Warning</b>: XSLTProcessor::importStylesheet() [<a
    href='function.XSLTProcessor-importStylesheet'>function.XSLTProcessor-
    importStylesheet</a>]: Invalid expression in <b>C:\Webs\...\htdocs
    \sitemap\index.php</b> on line <b>18</b><br />

    4- line 18 is:
    $proc->importStylesheet($xsl);

    Maybe an invalid XSL version or namespace on header but I dont't know
    how to resolve this.
    Any idea will be appreciated.
     
    Olagato, Apr 3, 2008
    #3
  4. Olagato wrote:

    >> Do you want to use XSLT 2.0 or 1.0?

    > I'm using XSLT 1.0
    >
    >> What about words like 'localhost' or 'index', how do you decide that those are not taken?

    > It's not a problem now. Maybe a sentence like next:
    > translate( translate( substring-after( sm:loc, 'http://localhost/
    > index.php/index.php/') ,'-', ',') ,'/',',')
    >
    > I'm trying your XSL from PHP without success:


    PHP only supports XSLT 1.0 so my posted stylesheet using XSLT and XPath
    2.0 functionality does not work with PHP's XSLT processor.


    --

    Martin Honnen
    http://JavaScript.FAQTs.com/
     
    Martin Honnen, Apr 3, 2008
    #4
  5. Olagato

    Olagato Guest

    On 3 abr, 13:06, Martin Honnen <> wrote:
    > Olagato wrote:
    > >> Do you want to use XSLT 2.0 or 1.0?

    > > I'm using XSLT 1.0

    >
    > >> What about words like 'localhost' or 'index', how do you decide that those are not taken?

    > > It's not a problem now. Maybe a sentence like next:
    > > translate( translate( substring-after( sm:loc, 'http://localhost/
    > > index.php/index.php/') ,'-', ',') ,'/',',')

    >
    > > I'm trying your XSL from PHP without success:

    >
    > PHP only supports XSLT 1.0 so my posted stylesheet using XSLT and XPath
    > 2.0 functionality does not work with PHP's XSLT processor.
    >
    > --
    >
    > Martin Honnen
    > http://JavaScript.FAQTs.com/


    Your posted version in 1.0 functionality seems to be quite difficult
    to implement because of lack of advanced functions (at least for a xsl
    newbie like me) So my only alternative would be to use a XSLT
    processor. I'll try Xalan on server: http://xalan.apache.org/
    Any other idea using XSLT 1.0 will be appreciated.
     
    Olagato, Apr 3, 2008
    #5
  6. Olagato wrote:

    > Your posted version in 1.0 functionality seems to be quite difficult
    > to implement because of lack of advanced functions (at least for a xsl
    > newbie like me) So my only alternative would be to use a XSLT
    > processor. I'll try Xalan on server: http://xalan.apache.org/
    > Any other idea using XSLT 1.0 will be appreciated.


    Xalan does not do XSLT 2.0 so if you want to use XSLT 2.0 then try Saxon
    (http://saxon.sourceforge.net/) or Gestalt
    (http://gestalt.sourceforge.net/) or AltovaXML
    (http://www.altova.com/altovaxml.html).

    If you want to use PHP then I think PHP supports EXSLT so you could try
    to use http://www.exslt.org/str/functions/tokenize/index.html

    --

    Martin Honnen
    http://JavaScript.FAQTs.com/
     
    Martin Honnen, Apr 3, 2008
    #6
  7. Olagato

    Olagato Guest

    On 3 abr, 16:45, Martin Honnen <> wrote:
    > Olagato wrote:
    > > Your posted version in 1.0 functionality seems to be quite difficult
    > > to implement because of lack of advanced functions (at least for a xsl
    > > newbie like me) So my only alternative would be to use a XSLT
    > > processor. I'll try Xalan on server:http://xalan.apache.org/
    > > Any other idea using XSLT 1.0 will be appreciated.

    >
    > Xalan does not do XSLT 2.0 so if you want to use XSLT 2.0 then try Saxon
    > (http://saxon.sourceforge.net/) or Gestalt
    > (http://gestalt.sourceforge.net/) or AltovaXML
    > (http://www.altova.com/altovaxml.html).
    >
    > If you want to use PHP then I think PHP supports EXSLT so you could try
    > to usehttp://www.exslt.org/str/functions/tokenize/index.html
    >
    > --
    >
    > Martin Honnen
    > http://JavaScript.FAQTs.com/


    Thank you very much, Martin
    It's now working fine with Altova XML Spy and Saxon9 as external XSLT
    parser:
    http://216.239.59.104/search?q=cach...spy&hl=es&ct=clnk&cd=6&gl=es&client=firefox-a

    There are only 2 little issues left:

    My XML input is:
    <?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
    <loc>http://localhost/index.php/index.php/ezwebin_site/Rutas-de-
    verano-en-España</loc>
    <lastmod>2008-03-13</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
    </url>
    <url>
    <loc>http://localhost/index.php/index.php/ezwebin_site/Rutas/El-
    Camino-de-Santiago-en-el-Sobrarbe</loc>
    <lastmod>2008-02-12</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
    </url>
    </urlset>

    Your XSLT 2.0 is:
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"
    xmlns:sm="http://www.sitemaps.org/schemas/sitemap/0.9" exclude-result-
    prefixes="sm" version="2.0">
    <xsl:eek:utput method="xml" indent="yes"/>
    <xsl:strip-space elements="*"/>
    <xsl:template match="@* | node()">
    <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
    </xsl:template>
    <xsl:template match="sm:url">
    <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
    <news:news>
    <news:publication_date>
    <xsl:value-of select="sm:lastmod"/>
    </news:publication_date>
    <news:keywords>
    <xsl:value-of select="for $s in tokenize(sm:loc, '/')[position()
    &gt; 5]
    return tokenize($s, '[\-/]')[string-length(.)
    &gt; 3]" separator=", "/>
    </news:keywords>
    </news:news>
    </xsl:copy>
    </xsl:template>
    </xsl:stylesheet>

    The output is:
    <?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
    <loc>http://localhost/index.php/index.php/ezwebin_site/Rutas-de-
    verano-en-España</loc>
    <lastmod>2008-03-13</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
    <news:news xmlns:news="http://www.google.com/schemas/sitemap-news/
    0.9">
    <news:publication_date>2008-03-13</news:publication_date>
    <news:keywords>ezwebin_site, Rutas, verano, España</news:keywords>
    </news:news>
    </url>
    <url>
    <loc>http://localhost/index.php/index.php/ezwebin_site/Rutas/El-
    Camino-de-Santiago-en-el-Sobrarbe</loc>
    <lastmod>2008-02-12</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
    <news:news xmlns:news="http://www.google.com/schemas/sitemap-news/
    0.9">
    <news:publication_date>2008-02-12</news:publication_date>
    <news:keywords>ezwebin_site, Rutas, Camino, Santiago, rt</
    news:keywords>
    </news:news>
    </url>
    </urlset>

    But I need an output like defined by News Sitemap Protocol:
    http://www.google.com/support/webmasters/bin/answer.py?answer=42738

    So there are 2 things left:
    1- <lastmod> tags should dissapear from <url> outputs because a
    <news:publication_date> tag has been defined already.
    2- xmlns:news namespace should dissapear from <news:news> tags and it
    should be taken to the <urlset xmlns="http://www.sitemaps.org/schemas/
    sitemap/0.9"> tag in the header.

    A good output file would be:
    <?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
    xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
    <url>
    <loc>http://localhost/index.php/index.php/ezwebin_site/Rutas-de-
    verano-en-España</loc>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
    <news:news>
    <news:publication_date>2008-03-13</news:publication_date>
    <news:keywords>ezwebin_site, Rutas, verano, España</news:keywords>
    </news:news>
    </url>
    <url>
    <loc>http://localhost/index.php/index.php/ezwebin_site/Rutas/El-
    Camino-de-Santiago-en-el-Sobrarbe</loc>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
    <news:news>
    <news:publication_date>2008-02-12</news:publication_date>
    <news:keywords>ezwebin_site, Rutas, Camino, Santiago, rt</
    news:keywords>
    </news:news>
    </url>
    </urlset>

    Any idea ?
     
    Olagato, Apr 8, 2008
    #7
  8. Olagato wrote:

    > So there are 2 things left:
    > 1- <lastmod> tags should dissapear from <url> outputs because a
    > <news:publication_date> tag has been defined already.
    > 2- xmlns:news namespace should dissapear from <news:news> tags and it
    > should be taken to the <urlset xmlns="http://www.sitemaps.org/schemas/
    > sitemap/0.9"> tag in the header.


    Both are easy adaptions, you need to use a predicate
    [not(self::sm:lastmod)] and you can use xsl:namespace to make sure a
    namespace declaration is created on the root element:

    <xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"
    xmlns:sm="http://www.sitemaps.org/schemas/sitemap/0.9"
    exclude-result-prefixes="sm"
    version="2.0">
    <xsl:eek:utput method="xml" indent="yes"/>
    <xsl:strip-space elements="*"/>
    <xsl:template match="@* | node()">
    <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
    </xsl:template>
    <xsl:template match="sm:urlset">
    <xsl:copy>
    <xsl:namespace name="news"
    select="'http://www.google.com/schemas/sitemap-news/0.9'"/>
    <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
    </xsl:template>
    <xsl:template match="sm:url">
    <xsl:copy>
    <xsl:apply-templates select="@* | node()[not(self::sm:lastmod)]"/>
    <news:news>
    <news:publication_date>
    <xsl:value-of select="sm:lastmod"/>
    </news:publication_date>
    <news:keywords>
    <xsl:value-of select="for $s in tokenize(sm:loc, '/')[position()
    &gt; 5]
    return tokenize($s, '[\-/]')[string-length(.)
    &gt; 3]" separator=", "/>
    </news:keywords>
    </news:news>
    </xsl:copy>
    </xsl:template>
    </xsl:stylesheet>
    --

    Martin Honnen
    http://JavaScript.FAQTs.com/
     
    Martin Honnen, Apr 9, 2008
    #8
  9. Olagato

    Olagato Guest

    On 9 abr, 15:51, Martin Honnen <> wrote:
    > Olagato wrote:
    > > So there are 2 things left:
    > > 1- <lastmod> tags should dissapear from <url> outputs because a
    > > <news:publication_date> tag has been defined already.
    > > 2- xmlns:news namespace should dissapear from <news:news> tags and it
    > > should be taken to the <urlset xmlns="http://www.sitemaps.org/schemas/
    > > sitemap/0.9"> tag in the header.

    >
    > Both are easy adaptions, you need to use a predicate
    > [not(self::sm:lastmod)] and you can use xsl:namespace to make sure a
    > namespace declaration is created on the root element:
    >
    > <xsl:stylesheet
    > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    > xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"
    > xmlns:sm="http://www.sitemaps.org/schemas/sitemap/0.9"
    > exclude-result-prefixes="sm"
    > version="2.0">
    > <xsl:eek:utput method="xml" indent="yes"/>
    > <xsl:strip-space elements="*"/>
    > <xsl:template match="@* | node()">
    > <xsl:copy>
    > <xsl:apply-templates select="@* | node()"/>
    > </xsl:copy>
    > </xsl:template>
    > <xsl:template match="sm:urlset">
    > <xsl:copy>
    > <xsl:namespace name="news"
    > select="'http://www.google.com/schemas/sitemap-news/0.9'"/>
    > <xsl:apply-templates select="@* | node()"/>
    > </xsl:copy>
    > </xsl:template>
    > <xsl:template match="sm:url">
    > <xsl:copy>
    > <xsl:apply-templates select="@* | node()[not(self::sm:lastmod)]"/>
    > <news:news>
    > <news:publication_date>
    > <xsl:value-of select="sm:lastmod"/>
    > </news:publication_date>
    > <news:keywords>
    > <xsl:value-of select="for $s in tokenize(sm:loc, '/')[position()
    > &gt; 5]
    > return tokenize($s, '[\-/]')[string-length(.)
    > &gt; 3]" separator=", "/>
    > </news:keywords>
    > </news:news>
    > </xsl:copy>
    > </xsl:template>
    > </xsl:stylesheet>
    > --
    >
    > Martin Honnen
    > http://JavaScript.FAQTs.com/



    Solved !!! It works fine now.
    I have modified line:
    for $s in tokenize(sm:loc, '/')[position()&gt; 5]
    to this one:
    for $s in tokenize(sm:loc, '/')[position()&gt; 6]
    in order to delete "ezwebin_site" word within <news:keywords> tag.
    Thank you very much Martin, people like you make the "world wide web"
    to be a better place.
     
    Olagato, Apr 10, 2008
    #9
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. falcon
    Replies:
    10
    Views:
    18,698
    Roedy Green
    Feb 24, 2006
  2. Graeter than or less than

    , Jun 21, 2007, in forum: ASP .Net
    Replies:
    4
    Views:
    862
    bruce barker
    Jun 21, 2007
  3. Merrigan
    Replies:
    4
    Views:
    575
    Chris
    Dec 14, 2007
  4. Dwight Army of Champions
    Replies:
    4
    Views:
    2,758
    John H.
    Mar 17, 2010
  5. Venugopal
    Replies:
    11
    Views:
    1,534
    Tassilo v. Parseval
    Nov 5, 2003
Loading...

Share This Page