<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>diploD &#187; web standards</title>
	<atom:link href="http://www.diplod.it/category/webdesigner/web-standards/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.diplod.it</link>
	<description>by Davide Del Monte</description>
	<lastBuildDate>Fri, 13 Feb 2015 14:26:10 +0000</lastBuildDate>
	<language>it-IT</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>Leggere e visualizzare file XML con C# (C sharp): qualche esempio</title>
		<link>http://www.diplod.it/2010/07/13/leggere-e-visualizzare-file-xml-con-c-c-sharp-qualche-esempio/</link>
		<comments>http://www.diplod.it/2010/07/13/leggere-e-visualizzare-file-xml-con-c-c-sharp-qualche-esempio/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 12:31:32 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[Applicazioni Web]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[aspx]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xsd]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=1127</guid>
		<description><![CDATA[C# è ormai un linguaggio diffuso, Visual Studio volenti o nolenti è un IDE collaudato e comodo anche per lo sviluppo di applicazioni web. E quando si parla di web, si parla spesso di XML. Leggere i dati di un documento XML è un'operazione semplice e veloce, farli visualizzare su una pagina web è altrettanto rapido, ma è bene sapere alcune nozioni per potersi muovere con tranquillità e sicurezza.]]></description>
				<content:encoded><![CDATA[<p><strong>C#</strong> è ormai un linguaggio diffuso, <strong>Visual Studio</strong> volenti o nolenti è un IDE collaudato e comodo anche per lo sviluppo di applicazioni web. E quando si parla di web, si parla spesso di <strong>XML</strong>.</p>
<p>Leggere i dati di un documento XML è un&#8217;operazione semplice e veloce, farli visualizzare su una pagina web è altrettanto rapido, ma è bene sapere alcune nozioni per potersi muovere con tranquillità e sicurezza.</p>
<p>Andiamo con ordine e vediamo subito un esempio di un file XML che vogliamo trattare:</p>
<p><code>&lt;?xml version="1.0" encoding="ISO-8859-1" ?&gt;<br />
&lt;DataSet&gt;<br />
&lt;data&gt;<br />
&lt;period&gt;2010-06-06&lt;/period&gt;<br />
&lt;logunit id="myID"&gt;Milano&lt;/logunit&gt;<br />
&lt;entered matcode="ABC001"&gt;100&lt;/entered&gt;<br />
&lt;produced matcode="ABC002"&gt;101&lt;/produced&gt;<br />
&lt;delivered matcode="ABC002"&gt;100&lt;/delivered&gt;<br />
&lt;description&gt;Caramelline alla fragola&lt;/description&gt;<br />
&lt;updated&gt;2010-06-06T13:05:21+01:00&lt;/updated&gt;<br />
&lt;note&gt;tante belle cose..&lt;/note&gt;<br />
&lt;/data&gt;<br />
&lt;data&gt;<br />
[..]<br />
&lt;/data&gt;<br />
&lt;/DataSet&gt;</code></p>
<p>Questo file potrebbe rappresentare dei dati produttivi, riguardanti ad esempio i materiali entrati in magazzino, i materiali prodotti e il venduto.</p>
<p>Il modo più rapido e banale per leggere questo file e farlo visualizzare su una pagina ASPX è tramite il seguente codice:</p>
<p><code>DataSet ds = new DataSet();<br />
ds.ReadXml(@"C:\test.xml", XmlReadMode.Auto);<br />
DataView MyDataView = new DataView(ds.Tables[0]);<br />
MyDataGrid.DataSource = MyDataView;<br />
MyDataGrid.DataBind();</code></p>
<p>Il codice non fa altro che creare un nuovo DataSet per contenere i dati che andremo a leggere, leggere il file tramite il metodo ReadXml(), creare una DataView con la tabella creata nel dataset e assegnare quest&#8217;ultima come DataSource per la DataGrid.</p>
<p><span id="more-1127"></span></p>
<p>All&#8217;interno della pagina .aspx ci sarà quindi una DataSource così fatta:</p>
<p><code>&lt;asp:DataGrid id="MyDataGrid" runat="server" &gt;<br />
    &lt;HeaderStyle CssClass="th"&gt;<br />
    &lt;/HeaderStyle&gt;<br />
&lt;/asp:DataGrid&gt;</code></p>
<p>Tralasciamo lo stile attribuito alla testata della datagrid, ciò che è importante in questo caso è solo l&#8217;ID. </p>
<p>Così facendo però ottengo una tabella di questo tipo:</p>
<table id="MyDataGrid2" border="1" cellspacing="0" rules="all">
<tbody>
<tr>
<td>period</td>
<td>data_Id</td>
<td>description</td>
<td>updated</td>
<td>note</td>
</tr>
<tr>
<td>2010-06-06</td>
<td>0</td>
<td>Caramelline alla fragola</td>
<td>2010-06-16T13:05:21+01:00</td>
<td>tante belle cose..</td>
</tr>
</tbody>
</table>
<p>E tutti gli altri dati che fine hanno fatto? Sono stati salvati in altre tabelle del DataSet, assieme a tutti gli attributi dell&#8217;xml; queste tabelle avranno come riferimento il <em>data_Id</em> e potrò utilizzarle come meglio credo.</p>
<p>Se infatti cambiamo il primo codice, mettendo una tabella diversa, in questo modo:</p>
<p><code>DataView MyDataView = new DataView(ds.Tables[1]);</code></p>
<p>Verrà visualizzata una pagina con la seguente tabella:</p>
<table id="MyDataGrid2" border="1" cellspacing="0" rules="all">
<tbody>
<tr>
<td>id</td>
<td>logunit_Text</td>
<td>data_Id</td>
</tr>
<tr>
<td>MyID</td>
<td>Milano</td>
<td>0</td>
</tr>
</tbody>
</table>
<p>Se cambio e metto la terza tabella:</p>
<p><code>DataView MyDataView = new DataView(ds.Tables[2]);</code></p>
<p>Il risultato sarà:</p>
<table id="MyDataGrid2" border="1" cellspacing="0" rules="all">
<tbody>
<tr>
<td>matcode</td>
<td>entered_Text</td>
<td>data_Id</td>
</tr>
<tr>
<td>ABC001</td>
<td>100</td>
<td>0</td>
</tr>
</tbody>
</table>
<p>Mentre per le tabelle successive, avrò questi risultati visualizzati:</p>
<table id="MyDataGrid2" border="1" cellspacing="0" rules="all">
<tbody>
<tr>
<td>matcode</td>
<td>produced_Text</td>
<td>data_Id</td>
</tr>
<tr>
<td>ABC002</td>
<td>101</td>
<td>0</td>
</tr>
</tbody>
</table>
<table id="MyDataGrid2" border="1" cellspacing="0" rules="all">
<tbody>
<tr>
<td>matcode</td>
<td>delivered_Text</td>
<td>data_Id</td>
</tr>
<tr>
<td>ABC002</td>
<td>100</td>
<td>0</td>
</tr>
</tbody>
</table>
<p>Incrociando queste tabelle attraverso il campo <em>data_Id</em> potrei ricavare tutti i dati contenuti nell&#8217;XML, attributi e testi all&#8217;interno dei tag.<br />
Il mio obiettivo era però quello di far visualizzare questi dati senza gli attributi riportati nell&#8217;XML. Ciò che mi interessa sono solo i dati riportati all&#8217;interno dei tag. Vorrei avere un risultato di questo tipo:</p>
<table id="MyDataGrid2" border="1" cellspacing="0" rules="all">
<tbody>
<tr>
<td>period</td>
<td>description</td>
<td>updated</td>
<td>note</td>
<td>logunit</td>
<td>entered</td>
<td>produced</td>
<td>delivered</td>
</tr>
<tr>
<td>2010-06-06</td>
<td>Caramelline alla fragola</td>
<td>2010-06-16T13:05:21+01:00</td>
<td>tante belle cose..</td>
<td>Milano</td>
<td>100</td>
<td>101</td>
<td>100</td>
</tr>
</tbody>
</table>
<p>In questo caso potrebbe fare al caso nostro l&#8217; <a title="XML Schema" href="http://www.w3schools.com/schema/default.asp" target="_blank">XML Schema</a>. Si tratta di un file con estensione XSD, che descrive i dati contenuti in un file XML. Ogni file XML può avere uno schema associato che lo descrive. Esistono diversi <strong>tool</strong> che possono <strong>creare un file XSD a partire da un XML</strong>, uno di questi, che trovo molto pratico è <a title="XML 2 XSD" href="http://www.flame-ware.com/products/xml-2-xsd/default.aspx" target="_blank">quello di Flame-Ware</a> completamente on-line. </p>
<p>Il nostro file XML iniziale potrebbe essere descritto da questo XSD, supponendo che tutti i campi siano stringe.</p>
<p><code>&lt;?xml version="1.0"?&gt;<br />
&lt;!-- Generated using Flame-Ware Solutions XML-2-XSD v2.0 at <a href="http://www.flame-ware.com/Products/XML-2-XSD/">http://www.flame-ware.com/Products/XML-2-XSD/</a> --&gt;<br />
&lt;xs:schema id="DataSet" xmlns="" xmlns:xs="<a href="http://www.w3.org/2001/XMLSchema">http://www.w3.org/2001/XMLSchema</a>" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"&gt;<br />
  &lt;xs:element name="DataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"&gt;<br />
    &lt;xs:complexType&gt;<br />
      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;<br />
        &lt;xs:element name="data"&gt;<br />
          &lt;xs:complexType&gt;<br />
            &lt;xs:sequence&gt;<br />
              &lt;xs:element name="period" type="xs:string" minOccurs="0" /&gt;<br />
              &lt;xs:element name="description" type="xs:string" minOccurs="0" /&gt;<br />
              &lt;xs:element name="updated" type="xs:string" minOccurs="0" /&gt;<br />
              &lt;xs:element name="note" type="xs:string" minOccurs="0" /&gt;<br />
              &lt;xs:element name="logunit" nillable="true" minOccurs="0" maxOccurs="unbounded"&gt;<br />
                &lt;xs:complexType&gt;<br />
                  &lt;xs:simpleContent msdata:ColumnName="logunit_Text" msdata:Ordinal="1"&gt;<br />
                    &lt;xs:extension base="xs:string"&gt;<br />
                      &lt;xs:attribute name="id" type="xs:string" /&gt;<br />
                    &lt;/xs:extension&gt;<br />
                  &lt;/xs:simpleContent&gt;<br />
                &lt;/xs:complexType&gt;<br />
              &lt;/xs:element&gt;<br />
              &lt;xs:element name="entered" nillable="true" minOccurs="0" maxOccurs="unbounded"&gt;<br />
                &lt;xs:complexType&gt;<br />
                  &lt;xs:simpleContent msdata:ColumnName="entered_Text" msdata:Ordinal="1"&gt;<br />
                    &lt;xs:extension base="xs:string"&gt;<br />
                      &lt;xs:attribute name="matcode" type="xs:string" /&gt;<br />
                    &lt;/xs:extension&gt;<br />
                  &lt;/xs:simpleContent&gt;<br />
                &lt;/xs:complexType&gt;<br />
              &lt;/xs:element&gt;<br />
              &lt;xs:element name="produced" nillable="true" minOccurs="0" maxOccurs="unbounded"&gt;<br />
                &lt;xs:complexType&gt;<br />
                  &lt;xs:simpleContent msdata:ColumnName="produced_Text" msdata:Ordinal="1"&gt;<br />
                    &lt;xs:extension base="xs:string"&gt;<br />
                      &lt;xs:attribute name="matcode" type="xs:string" /&gt;<br />
                    &lt;/xs:extension&gt;<br />
                  &lt;/xs:simpleContent&gt;<br />
                &lt;/xs:complexType&gt;<br />
              &lt;/xs:element&gt;<br />
              &lt;xs:element name="delivered" nillable="true" minOccurs="0" maxOccurs="unbounded"&gt;<br />
                &lt;xs:complexType&gt;<br />
                  &lt;xs:simpleContent msdata:ColumnName="delivered_Text" msdata:Ordinal="1"&gt;<br />
                    &lt;xs:extension base="xs:string"&gt;<br />
                      &lt;xs:attribute name="matcode" type="xs:string" /&gt;<br />
                    &lt;/xs:extension&gt;<br />
                  &lt;/xs:simpleContent&gt;<br />
                &lt;/xs:complexType&gt;<br />
              &lt;/xs:element&gt;<br />
            &lt;/xs:sequence&gt;<br />
          &lt;/xs:complexType&gt;<br />
        &lt;/xs:element&gt;<br />
      &lt;/xs:choice&gt;<br />
    &lt;/xs:complexType&gt;<br />
  &lt;/xs:element&gt;<br />
&lt;/xs:schema&gt;</code></p>
<p>Per associare questo schema al file XML, è necessario dichiararlo nell&#8217;intestazione, in questo modo:</p>
<p><code>&lt;?xml version="1.0" encoding="ISO-8859-1" ?&gt;<br />
&lt;DataSet <span style="color: #800000;">xmlns:xsi="</span><a href="http://www.w3.org/2001/XMLSchema-instance"><span style="color: #800000;">http://www.w3.org/2001/XMLSchema-instance</span></a><span style="color: #800000;">"<br />
xsi:noNamespaceSchemaLocation="schema.xsd"</span>&gt;<br />
&lt;data&gt;<br />
&lt;period&gt;2010-06-06&lt;/period&gt;<br />
&lt;logunit id="myID"&gt;Milano&lt;/logunit&gt;<br />
&lt;entered matcode="ABC001"&gt;100&lt;/entered&gt;<br />
&lt;produced matcode="ABC002"&gt;101&lt;/produced&gt;<br />
&lt;delivered matcode="ABC002"&gt;100&lt;/delivered&gt;<br />
&lt;description&gt;Caramelline alla fragola&lt;/description&gt;<br />
&lt;updated&gt;2010-06-06T13:05:21+01:00&lt;/updated&gt;<br />
&lt;note&gt;tante belle cose..&lt;/note&gt;<br />
&lt;/data&gt;<br />
&lt;/DataSet&gt;</code></p>
<p>Così facendo però, se rilanciamo la pagina costruita in precedenza, il risultato sarà identico: un unico dataset con diverse tabelle collegate tra loro dal campo <em>data_Id</em>.</p>
<p>Quindi? La soluzione c&#8217;è. <strong>Dobbiamo solo definire uno schema XSD semplificato all&#8217;interno dell&#8217;XML stesso</strong>. In questo modo:</p>
<p><code>&lt;?xml version="1.0" encoding="ISO-8859-1" ?&gt;<br />
&lt;DataSet&gt;<br />
<span style="color: #800000;">&lt;xs:schema id="NewDataset" xmlns="" xmlns:xs="</span><a href="http://www.w3.org/2001/XMLSchema"><span style="color: #800000;">http://www.w3.org/2001/XMLSchema</span></a><span style="color: #800000;">" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"&gt;<br />
  &lt;xs:element name="NewDataset" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"&gt;<br />
    &lt;xs:complexType&gt;<br />
      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;<br />
        &lt;xs:element name="data"&gt;<br />
          &lt;xs:complexType&gt;<br />
            &lt;xs:sequence&gt;<br />
              &lt;xs:element name="period" type="xs:string" minOccurs="0" /&gt;<br />
              &lt;xs:element name="description" type="xs:string" minOccurs="0" /&gt;<br />
              &lt;xs:element name="updated" type="xs:string" minOccurs="0" /&gt;<br />
              &lt;xs:element name="note" type="xs:string" minOccurs="0" /&gt;<br />
              &lt;xs:element name="logunit" type="xs:string" minOccurs="0" /&gt;<br />
              &lt;xs:element name="entered" type="xs:string" minOccurs="0" /&gt;<br />
              &lt;xs:element name="produced" type="xs:string" minOccurs="0" /&gt;<br />
              &lt;xs:element name="delivered" type="xs:string" minOccurs="0" /&gt;<br />
            &lt;/xs:sequence&gt;<br />
          &lt;/xs:complexType&gt;<br />
        &lt;/xs:element&gt;<br />
      &lt;/xs:choice&gt;<br />
    &lt;/xs:complexType&gt;<br />
  &lt;/xs:element&gt;<br />
&lt;/xs:schema&gt;<br />
</span>&lt;data&gt;<br />
&lt;period&gt;2010-06-06&lt;/period&gt;<br />
&lt;logunit id="myID"&gt;Milano&lt;/logunit&gt;<br />
&lt;entered matcode="ABC001"&gt;100&lt;/entered&gt;<br />
&lt;produced matcode="ABC002"&gt;101&lt;/produced&gt;<br />
&lt;delivered matcode="ABC002"&gt;100&lt;/delivered&gt;<br />
&lt;description&gt;Caramelline alla fragola&lt;/description&gt;<br />
&lt;updated&gt;2010-06-06T13:05:21+01:00&lt;/updated&gt;<br />
&lt;note&gt;tante belle cose..&lt;/note&gt;<br />
&lt;/data&gt;<br />
&lt;data&gt;<br />
&lt;period&gt;2010-06-06&lt;/period&gt;<br />
&lt;logunit id="myID"&gt;Milano&lt;/logunit&gt;<br />
&lt;entered matcode="ABC001"&gt;100&lt;/entered&gt;<br />
&lt;produced matcode="ABC002"&gt;101&lt;/produced&gt;<br />
&lt;delivered matcode="ABC002"&gt;100&lt;/delivered&gt;<br />
&lt;description&gt;Caramelline alla fragola&lt;/description&gt;<br />
&lt;updated&gt;2010-06-06T13:05:21+01:00&lt;/updated&gt;<br />
&lt;note&gt;tante belle cose..&lt;/note&gt;<br />
&lt;/data&gt;<br />
&lt;/DataSet&gt;</code></p>
<p>Il <strong>risultato finale</strong> sarà quindi una DataGrid che può essere visualizzata come sotto, utilizzando pari pari il <strong>codice C# definito all&#8217;inizio</strong> di questo articolo.</p>
<table id="MyDataGrid2" border="1" cellspacing="0" rules="all">
<tbody>
<tr>
<td>period</td>
<td>description</td>
<td>updated</td>
<td>note</td>
<td>logunit</td>
<td>entered</td>
<td>produced</td>
<td>delivered</td>
</tr>
<tr>
<td>2010-06-06</td>
<td>Caramelline alla fragola</td>
<td>2010-06-16T13:05:21+01:00</td>
<td>tante belle cose..</td>
<td>Milano</td>
<td>100</td>
<td>101</td>
<td>100</td>
</tr>
</tbody>
</table>
<p>Buon divertimento con l&#8217;XML..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2010/07/13/leggere-e-visualizzare-file-xml-con-c-c-sharp-qualche-esempio/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Un po di XSL per processare un feed di Google News</title>
		<link>http://www.diplod.it/2008/12/18/un-po-di-xsl-per-processare-un-feed-di-google-news/</link>
		<comments>http://www.diplod.it/2008/12/18/un-po-di-xsl-per-processare-un-feed-di-google-news/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 23:06:56 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xsl]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=715</guid>
		<description><![CDATA[L&#8217;obiettivo è visualizzare con una trasformazione XSL il contenuto di un feed generato da Google News per una determinata parola la chiave. Come esempio ho lanciato la ricerca di tutte le notizie riguardanti &#8220;Obama&#8221; e questo è l&#8217;url del feed prodotto: http://news.google.it/news?hl=it&#38;ned=it&#38;q=obama&#38;ie=UTF-8&#38;nolr=1&#38;output=rss Come noto, un feed RSS è un documento XML. La formattazione è classica: [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>L&#8217;obiettivo è visualizzare con una trasformazione <a title="Extensible Stylesheet Language" href="http://it.wikipedia.org/wiki/Extensible_Stylesheet_Language" target="_blank">XSL</a> il contenuto di un feed generato da <a title="Google News" href="http://news.google.it" target="_blank">Google News</a> per una determinata parola la chiave. Come esempio ho lanciato la ricerca di tutte le notizie riguardanti &#8220;Obama&#8221; e questo è l&#8217;url del feed prodotto:<br />
<a title="feed google news su obama" href="http://news.google.it/news?hl=it&amp;ned=it&amp;q=obama&amp;ie=UTF-8&amp;nolr=1&amp;output=rss" target="_blank">http://news.google.it/news?hl=it&amp;ned=it&amp;q=obama&amp;ie=UTF-8&amp;nolr=1&amp;output=rss</a></p>
<p>Come noto, un feed <a title="RSS - wikipedia" href="http://it.wikipedia.org/wiki/Really_simple_syndication" target="_blank">RSS</a> è un documento <a title="XML - wikipedia" href="http://it.wikipedia.org/wiki/XML" target="_blank">XML</a>. La formattazione è classica:</p>
<blockquote><p><strong>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;<br />
&lt;rss version=&#8221;2.0&#8243;&gt;<br />
&lt;channel&gt;<br />
&lt;generator&gt;</strong>NFE/1.0<strong>&lt;/generator&gt;</strong><br />
<strong>&lt;title&gt;</strong>obama &#8211; Google News<strong>&lt;/title&gt;</strong><br />
<strong>&lt;link&gt;</strong>http://news.google.it/news?hl=it&amp;ned=it&amp;q=obama&amp;ie=UTF-8<strong>&lt;/link&gt;</strong><br />
<strong>&lt;language&gt;</strong>it<strong>&lt;/language&gt;</strong><br />
<strong>&lt;webMaster&gt;</strong>news-feedback@google.com<strong>&lt;/webMaster&gt;</strong><br />
<strong>&lt;copyright&gt;</strong>©2008 Google<strong>&lt;/copyright&gt;</strong><br />
<strong>&lt;pubDate&gt;</strong>Mon, 15 Dec 2008 14:34:32 GMT<strong>&lt;/pubDate&gt;</strong><br />
<strong>&lt;lastBuildDate&gt;</strong>Mon, 15 Dec 2008 14:34:32 GMT<strong>&lt;/lastBuildDate&gt;</strong><br />
<strong>&lt;image&gt;<br />
&lt;title&gt;</strong>obama &#8211; Google News<strong>&lt;/title&gt;</strong><br />
<strong>&lt;url&gt;</strong>http://news.google.com/intl/it_it/images/news_res.gif<strong>&lt;/url&gt;</strong><br />
<strong>&lt;link&gt;</strong>http://news.google.it/<strong>&lt;/link&gt;</strong><br />
<strong>&lt;/image&gt;<br />
&lt;item&gt;<br />
&lt;title&gt;</strong>USA: OBAMA ANNUNCIA OGGI NOMINE ENERGIA E AMBIENTE &#8211; La Repubblica<strong>&lt;/title&gt;</strong><br />
<strong>&lt;link&gt;</strong>http://news.google.it/news/url?sa=T&amp;ct=it/0-0&amp;fd=R&amp;url=http://www.repubblica.it/news/ired/ultimora/esteri/rep_esteri_n_3455881.html&amp;cid=1263615727&amp;ei=92pGScbgOJmmwAGz5pzbDg&amp;usg=AFQjCNF0go8PkbUwHKLk9BaKdp8dFCS0hg<strong>&lt;/link&gt;</strong><br />
<strong>&lt;guid isPermaLink=&#8221;false&#8221;&gt;</strong>tag:news.google.com,2005:cluster=http://www.repubblica.it/news/ired/ultimora/esteri/rep_esteri_n_3455881.html<strong>&lt;/guid&gt;</strong><br />
<strong>&lt;pubDate&gt;</strong>Mon, 15 Dec 2008 07:37:02 GMT<strong>&lt;/pubDate&gt;</strong><br />
<strong>&lt;description&gt;</strong>&lt;table border=0 width= valign=top cellpadding=2 cellspacing=7&gt;&lt;tr&gt;&lt;td width=80 align=center valign=top&gt;&lt;font style=&#8221;font-size:85%;font-family:arial,sans-serif&#8221;&gt;&lt;a  href=&#8221;http://news.google.it/news/url?sa=T&amp;ct=it/0i-0&amp;fd=R&amp;url=http://www.instablog.org/ultime/35898.html&amp;cid=1263615727&amp;ei=92pGScbgOJmmwAGz5pzbDg&amp;usg=AFQjCNFqys_EXXw7Kh4xa96o32AB49JHvw&#8221;&gt;&lt;img src=http://news.google.it/news?imgefp=ve3DuBkpQiwJ&amp;imgurl=www.instablog.org/blogpress/art/ultimora/obama.jpg width=80 height=51 alt=&#8221;&#8221; border=1&gt;&lt;br&gt;&lt;font size=-2&gt;The Instablog&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;/td&gt;&lt;td valign=top class=j&gt;&lt;font style=&#8221;font-size:85%;font-family:arial,sans-serif&#8221;&gt;&lt;br&gt;&lt;div style=&#8221;padding-top:0.8em;&#8221;&gt;&lt;img alt=&#8221;&#8221; height=&#8221;1&#8243; width=&#8221;1&#8243;&gt;&lt;/div&gt;&lt;div class=lh&gt;&lt;a href=&#8221;http://news.google.it/news/url?sa=T&amp;ct=it/0-0&amp;fd=R&amp;url=http://www.repubblica.it/news/ired/ultimora/esteri/rep_esteri_n_3455881.html&amp;cid=1263615727&amp;ei=92pGScbgOJmmwAGz5pzbDg&amp;usg=AFQjCNF0go8PkbUwHKLk9BaKdp8dFCS0hg&#8221;&gt;USA: &lt;b&gt;OBAMA&lt;/b&gt; ANNUNCIA OGGI NOMINE ENERGIA E AMBIENTE&lt;/a&gt;&lt;br&gt;&lt;font size=-1&gt;&lt;font color=#6f6f6f&gt;La Repubblica -&lt;/font&gt; &lt;nobr&gt;6 ore fa&lt;/nobr&gt;&lt;/font&gt;&lt;br&gt;&lt;font size=-1&gt;Il presidente eletto, Barack &lt;b&gt;Obama&lt;/b&gt;, annuncera&#8217; oggi le nomine del segretario al Dipartimento Energia e dello &#8216;zar&#8217; per l&#8217;Ambiente. Gli annunci, che verranno &lt;b&gt;&#8230;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;&lt;font size=-1&gt;&lt;a href=&#8221;http://news.google.it/news/url?sa=T&amp;ct=it/0-1&amp;fd=R&amp;url=http://notizie.alice.it/notizie/esteri/2008/12_dicembre/15/usa_obama_incontra_oggi_staff_difesa_e_annuncia_nomine_ambiente,17232675.html&amp;cid=1263615727&amp;ei=92pGScbgOJmmwAGz5pzbDg&amp;usg=AFQjCNHg4RwSRzsrR_uvMvcY3h-S38meRg&#8221;&gt;Usa/ &lt;b&gt;Obama&lt;/b&gt; incontra oggi staff difesa e annuncia nomine ambiente&lt;/a&gt; &lt;font size=-1 color=#6f6f6f&gt;&lt;nobr&gt;Virgilio Notizie&lt;/nobr&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font size=-1&gt;&lt;a href=&#8221;http://news.google.it/news/url?sa=T&amp;ct=it/0-2&amp;fd=R&amp;url=http://www.agenziami.it/ultime/9415/USA%2BObama%2Bpronte%2Ble%2Bnomine%2Bper%2Bl%2Bambiente/&amp;cid=1263615727&amp;ei=92pGScbgOJmmwAGz5pzbDg&amp;usg=AFQjCNGniMEyAO4lJg5HiWJCKROXee8p_g&#8221;&gt;USA. &lt;b&gt;Obama&lt;/b&gt;, pronte le nomine per l&#8217;ambiente&lt;/a&gt; &lt;font size=-1 color=#6f6f6f&gt;&lt;nobr&gt;(ami) Agenzia Multimediale Italiana&lt;/nobr&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font size=-1&gt;&lt;a href=&#8221;http://news.google.it/news/url?sa=T&amp;ct=it/0-3&amp;fd=R&amp;url=http://www.instablog.org/ultime/36309.html&amp;cid=1263615727&amp;ei=92pGScbgOJmmwAGz5pzbDg&amp;usg=AFQjCNF64d7ozOXQdd8tBoaRDHWfPlBfsg&#8221;&gt;&lt;b&gt;Obama&lt;/b&gt;: nomine ambiente, oggi gli annunci ufficiali&lt;/a&gt; &lt;font size=-1 color=#6f6f6f&gt;&lt;nobr&gt;The Instablog&lt;/nobr&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font class=p size=-1&gt;&lt;a class=p href=http://news.google.it/news?hl=it&amp;ned=it&amp;ie=UTF-8&amp;ncl=1263615727&gt;&lt;nobr&gt;e altri 4 articoli simili&lt;/nobr&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<strong>&lt;/description&gt;<br />
&lt;/item&gt;</strong><br />
[...]<br />
<strong>&lt;/channel&gt;<br />
&lt;/rss&gt;</strong></p></blockquote>
<p><span id="more-715"></span><br />
Si può formattare a dovere con un po&#8217; di XSL per pubblicare ad esempio i titoli, rendendoli cliccabili con un link diretto all&#8217;articolo (quello contenuto nel tag &lt;link&gt;).</p>
<blockquote><p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;ISO-8859-1&#8243;?&gt;<br />
&lt;xsl:stylesheet version=&#8221;1.0&#8243; xmlns:xsl=&#8221;http://www.w3.org/1999/XSL/Transform&#8221;&gt;<br />
&lt;xsl:template match=&#8221;/rss&#8221;&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;!&#8211;&lt;link href=&#8221;style.css&#8221; rel=&#8221;stylesheet&#8221; type=&#8221;text/css&#8221; /&gt;&#8211;&gt;</p>
<p>&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;div id=&#8221;logo&#8221; style=&#8221;border-bottom: 1px solid #ccc; margin-bottom: 5px; font-size: 1.2em; font-weight: bold;&#8221;&gt;<br />
&lt;xsl:element name=&#8221;a&#8221;&gt;<br />
&lt;xsl:attribute name=&#8221;href&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;channel/link&#8221; /&gt;<br />
&lt;/xsl:attribute&gt;<br />
&lt;xsl:value-of select=&#8221;channel/title&#8221; /&gt;<br />
&lt;/xsl:element&gt;<br />
&lt;/div&gt;<br />
&lt;div class=&#8221;Snippet&#8221;&gt;<br />
&lt;ul style=&#8221;list-style: none; margin: 0; padding:0&#8243;&gt;<br />
&lt;xsl:for-each select=&#8221;channel/item&#8221;&gt;<br />
&lt;li&gt;<br />
&lt;xsl:element name=&#8221;a&#8221;&gt;<br />
&lt;xsl:attribute name=&#8221;href&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;link&#8221;/&gt;<br />
&lt;/xsl:attribute&gt;<br />
&lt;xsl:value-of select=&#8221;title&#8221;/&gt;<br />
&lt;/xsl:element&gt;<br />
&lt;br/&gt;<br />
&lt;small style=&#8221;color: #ccc; text-align: right&#8221;&gt;&lt;xsl:value-of select=&#8221;pubDate&#8221; /&gt;&lt;/small&gt;<br />
&lt;/li&gt;<br />
&lt;/xsl:for-each&gt;<br />
&lt;/ul&gt;<br />
&lt;/div&gt;<br />
&lt;div id=&#8221;footer&#8221; style=&#8221;display: none;&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;channel/copyright&#8221; /&gt;<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;/xsl:stylesheet&gt;</p></blockquote>
<p>Per semplificare un po&#8217; ho aggiunto qualche regola CSS direttamente in linea, ma nulla vieta di creare un foglio esterno (ho commentato la porzione di codice che richiamerebbe un foglio di stile).<br />
L&#8217;unica vera scocciatura di Google News è che non offre un feed <em>pulito</em>, ma all&#8217;interno del tag &lt;description&gt; inserisce codice html e questo può dare problemi in fase di parsing XML.</p>
<p>Per chi volesse approfondire l&#8217;argomento un buon punto di partenza è <a title="xml - xsl" href="http://xhtml.html.it/guide/lezione/1740/trasformare-xml-introduzione-a-xsl/">questo</a>. Buona lettura.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2008/12/18/un-po-di-xsl-per-processare-un-feed-di-google-news/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WP COinS &#8211; plugin wordpress per attivare i COinS</title>
		<link>http://www.diplod.it/2008/09/03/wp-coins-plugin-wordpress-per-attivare-i-coins/</link>
		<comments>http://www.diplod.it/2008/09/03/wp-coins-plugin-wordpress-per-attivare-i-coins/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 09:26:46 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[italiano]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[zotero]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=648</guid>
		<description><![CDATA[Plugin di wordpress che aggiunge il codice COinS agli articoli, per essere facilmente archiviati nelle ricerche personali con zotero.]]></description>
				<content:encoded><![CDATA[<p>Se usate <a title="Zotero - ricerche e bibliografia" href="http://www.diplod.it/2008/09/03/ricerche-citazioni-e-bibliografie-con-zotero" target="_self">Zotero</a>, noterete una <strong>piccola icona sulla barra degli indirizzi</strong>, che permette di aggiungere questo articolo alla <strong>bibliografia</strong>. Oltre ai campi normali (autore, data, titolo, blog di origine) verranno aggiunti anche i tag relativi alle categorie del post.</p>
<p>Su questo blog è attivo il mio plugin: <strong>WP COinS</strong>. Non fa altro che inserire una riga di codice invisibile all&#8217;interno dell&#8217;articolo in modo che i software in grado di ricoconoscere i COinS ne ricavino le informazioni. Per chi non sa cosa siano i COinS, <a title="Zotero - ricerche e bibliografia" href="http://www.diplod.it/2008/09/03/ricerche-citazioni-e-bibliografie-con-zotero" target="_self">qui potete capirci qualcosa in più</a>.</p>
<p><strong>Download e Installazione</strong></p>
<p>Potete scaricare lo zip da questo link: <a href="http://www.diplod.it/wp-content/uploads/2008/09/wp-coins.zip">wp-coins</a></p>
<p><strong>Installare</strong> il plugin è semplicissimo, basta <strong>copiare il file wp-coins.php nella cartella dei plugin (wp-content/plugins/) e attivarlo dal pannello di amministrazione</strong>.</p>
<p><span id="more-648"></span></p>
<p>Una volta attivo (se avete zotero) sarà visibile un&#8217;icona nella barra degli indirizzi, che permette l&#8217;archiviazione dell&#8217;articolo nella bibliografia: vedi screenshot sottostante.</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2008/09/screenshot-plugin.png"><img class="alignnone size-medium wp-image-651" title="screenshot-plugin" src="http://www.diplod.it/wp-content/uploads/2008/09/screenshot-plugin-300x215.png" alt="" width="300" height="215" /></a></p>
<p>Per onor di cronaca: esiste già un plugin di wordpress <a title="zotero - wordpress" href="http://dev.zotero.org/wordpress" target="_blank">sviluppato dal team di zotero</a>: allora perchè ne ho fatto uno io? Per due motivi, sono partito a svilupparlo senza guardare se in giro c&#8217;era già (pirla!) e avevo voglia di fare pratica con la realizzazione da zero di un plugin (un plugin in più è pur sempre qualche conoscenza in più..).<br />
Inoltre, motivo più utile: <strong>è progettato per i blog in italiano</strong>. La lingua, le descrizioni, sono tutte in lingua nostrana. Motivo per cui non sarà diffuso in inglese ne distribuito sul repository ufficiale, ciò non toglie che sia pienamente testato sulla più recente versione di wordpress.<br />
Che di inglese ne abbiamo già un sacco.. :)</p>
<p>Se poi la reperibilità dei vostri articoli vi sta particolarmente a cuore, non perdetevi <a title="open search wordpress plugin" href="http://www.undolog.com/2008/08/28/wp-abs-aggiornamento-release-11/" target="_blank">il plugin di undolog</a> che aggiunge il descrittore XML dello standard open search al vostro sito.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2008/09/03/wp-coins-plugin-wordpress-per-attivare-i-coins/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Geotagging del sito web, dei post del blog e il plugin Geopress</title>
		<link>http://www.diplod.it/2008/08/08/geotagging-del-sito-web-dei-post-del-blog-e-il-plugin-geopress/</link>
		<comments>http://www.diplod.it/2008/08/08/geotagging-del-sito-web-dei-post-del-blog-e-il-plugin-geopress/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 08:10:05 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[geocoding]]></category>
		<category><![CDATA[geotagging]]></category>
		<category><![CDATA[localizzazione]]></category>
		<category><![CDATA[metadati]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=617</guid>
		<description><![CDATA[Geolocalizzazione di siti web, contenuti on-line e feed. Standard per i meta tag. Geopress: plugin wordpress per il geotagging.]]></description>
				<content:encoded><![CDATA[<p>Sta diventando sempre più importante dare un luogo fisico, oltre che virtuale, ai contenuti che vengono pubblicati sul web. Soprattutto quando si parla di eventi o di luoghi reali, taggare i contenuti in modo che chi <strong>ricerca informazioni su  base geografica</strong> ci possa trovare può essere <strong>determinante</strong>. Così come dare sede fisica al nostro sito web o blog può essere utile a chi svolge ricerche sulle mappe di Google.</p>
<p><strong>Piccola nota</strong>: se non te ne frega niente del codice ma vuoi semplicemente sapere quali strumenti usare per geotaggare i tuoi post e il tuo feed, vai direttamente a leggere la <a onclick="$diplod('#feedburner-geotag').ScrollTo(800); return false;" href="http://www.diplod.it/2008/08/08/geotagging-del-sito-web-dei-post-del-blog-e-il-plugin-geopress/#feedburner-geotag">parte relativa a feedburner</a> o al <a onclick="$diplod('#geopress-geotag').ScrollTo(800); return false;" href="http://www.diplod.it/2008/08/08/geotagging-del-sito-web-dei-post-del-blog-e-il-plugin-geopress/#geopress-geotag">plugin di wordpress Geopress</a>.</p>
<h3>Localizzare un sito web</h3>
<p>Ci sono degli standard non formalizzati per rappresentare i metadati geografici all&#8217;interno delle pagine web.  Uno è quello proposto da <a title="GeoUrl" href="http://geourl.org/" target="_blank">GeoUrl</a>:<br />
<code>&lt;meta name="ICBM" content="latitudine, longitudine" /&gt;<br />
</code><br />
L&#8217;altro è quello proposto da <a title="geotags" href="http://geotags.com/" target="_blank">GeaoTags</a>:<br />
<code>&lt;meta name="geo.position" content="latitudine; longitudine" /&gt;<br />
&lt;meta name="geo.placename" content="Nome del luogo" /&gt;<br />
&lt;meta name="geo.region" content="Codice del Paese" /&gt;<br />
</code><br />
<span id="more-617"></span><br />
I <strong>meta tag</strong> hanno valore se sono accettati e interpretati dai motori di ricerca, questi sembrano essere lo standard de facto. Per ricavare i dati relativi al nostro luogo è bene usare servizi come il <a title="Getty" href="http://www.getty.edu/research/conducting_research/vocabularies/tgn/" target="_blank">Getty Thesaurus of Geographic Names</a>, dove inserendo ad esempio &#8220;Reggio Emilia&#8221; si ricavano i dati di latitudine e longitudine oltre al Paese di appartenenza. Per il codice del Paese è bene utilizzare invece lo <a title="ISO country names" href="http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm" target="_blank">standard ISO</a>, per l&#8217;Italia è il classico &#8220;IT&#8221;.</p>
<p>Un esempio? Da quando è stato fatto il redesign, tra i meta tag dell&#8217;home page di questo sito ci sono anche i seguenti:</p>
<p><code>&lt;meta name="ICBM" content="44.6167,10.6167" /&gt;<br />
&lt;meta name="geo.position" content="44.6167;10.6167" /&gt;<br />
&lt;meta name="geo.placename" content="Reggio Emilia" /&gt;<br />
&lt;meta name="geo.region" content="IT" /&gt;<br />
</code><br />
Sono appunto i meta tag che descrivono la posizione geografica del sito: Reggio Emilia. La geolocalizzazione con questi meta tag richiede di importare anche il riferimento allo schema, con il seguente codice:<br />
<code>&lt;link href=”http://geotags.com/geo/” rel=”schema.geo” /&gt;</code></p>
<h3>Localizzare i feed RSS</h3>
<p>Per quanto riguarda i <strong>singoli post di un blog</strong>, invece, potrebbe essere utile posizionarli in base al <strong>contenuto</strong>. Se ad esempio stiamo parlando delle ultime vacanze in Sicilia, è meglio localizzare questa pagina a Palermo. Oltre ai meta tag descritti precedentemente, si possono utilizzare costrutti <strong>nel feed RSS degli articoli</strong>.</p>
<p>E&#8217; possibile assegnare una <strong>posizione geografica all&#8217;intero feed</strong>, in questo modo:</p>
<p><code>&lt;rdf:RDF&gt;<br />
&lt;geo:Point&gt;<br />
&lt;geo:lat&gt;55.701&lt;/geo:lat&gt;<br />
&lt;geo:long&gt;12.552&lt;/geo:long&gt;<br />
&lt;geo:alt&gt;52.4&lt;/geo:alt&gt;<br />
&lt;/geo:Point&gt;<br />
&lt;/rdf:RDF&gt;<br />
</code></p>
<p>Quello presentato sopra è lo stesso codice proposto anche dal <strong>W3C</strong>, sebbene non si tratti di una standardizzazione formale, ma di <a title="W3C geocoding" href="http://www.w3.org/2003/01/geo/" target="_blank">indicazioni ancora in fase di discussione</a>. Il <a title="W3C Geospatial Incubator Group" href="http://www.w3.org/2005/Incubator/geo/" target="_blank">W3C Geospatial Incubator Group</a> ha accettato il codice proposto da <a title="georss" href="http://www.georss.org/" target="_blank">Georss</a>.<br />
Un altro modo, alternativo, è il seguente codice:</p>
<p><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />
&lt;rss version="2.0"&gt;<br />
&lt;channel&gt;<br />
&lt;title&gt;Il mio blog&lt;/title&gt;<br />
&lt;link&gt;http://diplod.com&lt;/link&gt;<br />
&lt;description&gt;Descrizione&lt;/description&gt;<br />
<strong>&lt;icbm:latitude&gt;</strong><strong>44.6167&lt;/icbm:latitude&gt;<br />
&lt;icbm:longitude&gt;10.6167</strong><strong>&lt;/icbm:longitude&gt;</strong><br />
&lt;copyright&gt;Copyright 2005&lt;/copyright&gt;<br />
&lt;pubDate&gt;Wed, 05 Jan 2005 18:54:47 +0000&lt;/pubDate&gt;<br />
&lt;generator&gt;http://wordpress.org/?v=2.5&lt;/generator&gt;<br />
&lt;item&gt;<br />
&lt;title&gt;Titolo di esempio&lt;/title&gt;<br />
&lt;link&gt;http://highearthorbit.com/index.php?p=121&lt;/link&gt;<br />
&lt;pubDate&gt;Wed, 05 Jan 2005 18:54:47 +0000&lt;/pubDate&gt;<br />
&lt;category&gt;Categoria di esempio&lt;/category&gt;<br />
&lt;guid&gt;http://diplod.com/category/esempio/&lt;/guid&gt;<br />
&lt;description&gt;Descrizione&lt;/description&gt;<br />
<strong>&lt;geo:Point&gt;<br />
&lt;geo:lat&gt;</strong><strong>44.6167&lt;/geo:lat&gt;<br />
&lt;geo:long&gt;10.6167</strong><strong>&lt;/geo:long&gt;<br />
&lt;/geo:Point&gt;</strong><br />
<strong>&lt;icbm:latitude&gt;</strong><strong>44.6167</strong><strong>&lt;/icbm:latitude&gt;<br />
&lt;icbm:longitude&gt;</strong><strong>10.6167</strong><strong>&lt;/icbm:longitude&gt;</strong><br />
&lt;/item&gt;<br />
&lt;/channel&gt;<br />
&lt;/rss&gt;<br />
</code><br />
In grassetto ho evidenziato la parte di codice relativa alla localizzazione, le righe 7 e 8 si riferiscono all&#8217;intero feed mentre il codice contenuto tra il tag &lt;item&gt; e &lt;/item&gt; <strong>riguarda il singolo post</strong>. Anche in questo caso quindi abbiamo due modi differenti: col tag <em>geo</em> oppure <em>icbm</em>.</p>
<h3 id="feedburner-geotag">Geotag con Feedburner</h3>
<p>Per chi utilizza <a title="feedburner" href="http://www.feedburner.com/" target="_blank">feedburner</a> invece il geotagging del feed è semplicissimo, dal pannello di amministrazione del feed basta cliccare sulla tab &#8220;Optimize&#8221; poi nel menù a sinistra sulla voce &#8220;Geotag your feed&#8221;.</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2008/08/feedburner-geotag.png"><img class="alignnone size-full wp-image-618" title="feedburner-geotag" src="http://www.diplod.it/wp-content/uploads/2008/08/feedburner-geotag.png" alt="" width="428" height="278" /></a></p>
<p>Da questa schermata basta inserire latitudine e longitudine e Feedburner aggiungerà il <strong>codice all&#8217;intero feed in automatico</strong>.</p>
<h3 id="geopress-geotag">GeoPress: plugin per wordpress</h3>
<p><a title="Geotagging wordpress plugin" href="http://georss.org/geopress" target="_blank">Geopress</a> è un plugin di wordpress che permette di <strong>localizzare i post</strong> o le <strong>pagine del blog</strong> direttamente dal pannello di amministrazione. Basta installarlo e durante la scrittura di un post sarà possibile indicare nell&#8217;apposito campo il luogo al quale l&#8217;articolo fa riferimento, inserendo il nome della città, le coordinate o semplicemente selezionando sulla mappa il punto esatto.</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2008/08/geopress.png"><img class="alignnone size-full wp-image-619" title="geopress" src="http://www.diplod.it/wp-content/uploads/2008/08/geopress.png" alt="" width="496" height="500" /></a></p>
<p>E&#8217; inoltre possibile inserire all&#8217;interno di un post la <strong>cartina di gmap</strong> e altre mappe, tra cui Microsoft, OpenStreetMap, 3DGlobe.. senza toccare il template o il codice. Oltre a inserire queste informazione nel <strong>feed RSS o Atom</strong>, Geopress fornisce anche i link <strong>KML</strong> per la visualizzazione su Google Earth o <strong>GPX</strong> per la visualizzazione sui navigatori GPS.</p>
<p>Per attivare Geopress, è necessario inserire la <a title="google map api key" href="http://code.google.com/apis/maps/" target="_blank">Google Map Api Key</a>, ottenuta semplicemente fornendo il proprio indirizzo del blog. Questo è necessario per poter visualizzare la mappa interattiva nel pannello di amministrazione o sulle proprie pagine.</p>
<p>In sostanza si tratta di un tool completo per dare al feed del blog e ai singoli articoli una <strong>perfetta geolocalizzazione</strong>.<br />
Per chi vuole ottenere il massimo, il plugin offre alcune interessanti funzioni da sfruttare all&#8217;interno del tempate. Se volessimo pubblicare i meta tag di geolocalizzazione visti in precedenza, per ogni singolo post, sulla base della località assegnata tramite il plugin, possiamo usare questo codice:</p>
<p><code>&lt;?php if ((is_single() || is_page()) &amp;&amp; function_exists('has_location')) {<br />
if (has_location()) {<br />
$coordinate=array(the_coord());<br />
$coordinateICBM=str_replace(' ',',',$coordinate[0]);<br />
$coordinateGEO=str_replace(' ',';',$coordinate[0]);<br />
?&gt;<br />
&lt;meta name="ICBM" content="&lt;?php echo($coordinateICBM) ?&gt;" /&gt;<br />
&lt;meta name="geo.position" content="&lt;?php echo($coordinateGEO) ?&gt;" /&gt;<br />
&lt;meta name="geo.placename" content="&lt;?php echo(the_location_name()) ?&gt;" /&gt;<br />
&lt;?php }<br />
} ?&gt;<br />
</code></p>
<p>Non fa altro che controllare se si tratta di una pagina singola o di un post in cui è stata assegnata la località e il plugin geopress è attivo, per poi pubblicare le coordinate sottoforma di metatag. Questo codice va inserito nel file <em>header.php</em> del template tra i tag &lt;head&gt; e &lt;/head&gt;.</p>
<h3>Conclusioni</h3>
<p>I servizi che mettono a disposizione informazioni e cintenuti su base geografica aumentano di giorno in giorno, si arriverà quindi all&#8217;accettazione di uno standard per poterli integrare e uniformare. Dalle <a title="google maps" href="http://maps.google.com/" target="_blank">mappe di Google</a> oggi possiamo fare ricerche per trovare attività commerciali e siti web. Del resto anche la nuova <a title="blogbabel" href="http://it.blogbabel.com" target="_blank">BlogBabel</a> utilizza i dati geografici per pubblicare informazioni circa le <a title="Blogbabel - ricerca geografica" href="http://it.blogbabel.com/geo/entries/" target="_blank">discussioni di un particolare luogo</a>, pochi giorni fa ad esempio ho aggiunto al mio aggregatore il feed che monitorizza le notizie relative alla mia zona. Adottare questi accorgimenti nel proprio blog potrebbe rivelarsi molto utile per <strong>catturare</strong> quelle persone che vanno alla <strong>ricerca di informazioni su base geografica</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2008/08/08/geotagging-del-sito-web-dei-post-del-blog-e-il-plugin-geopress/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Form con CSS, secondo me</title>
		<link>http://www.diplod.it/2007/11/12/form-con-css-secondo-me/</link>
		<comments>http://www.diplod.it/2007/11/12/form-con-css-secondo-me/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 01:13:02 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[web standards]]></category>

		<guid isPermaLink="false">http://www.diplod.it/2007/11/12/form-con-css-secondo-me/</guid>
		<description><![CDATA[Form con CSS (e talvolta javascript) ne ho visti di tutti i tipi, ma non ho trovato nessuno che mi soddisfacesse in pieno. Me ne serviva uno, così l&#8217;ho realizzato prendendo spunto qua e là. Il punto di partenza è l&#8217;articolo su A List Apart, per la costruzione di form accessibili e semanticamente corretti a [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center"><img src="http://www.diplod.it/wp-content/uploads/2007/11/form.gif" alt="Form con CSS" /></p>
<p><strong>Form</strong> con <strong>CSS</strong> (e talvolta javascript) ne ho visti di tutti i tipi, ma non ho trovato nessuno che mi soddisfacesse in pieno.<br />
Me ne serviva uno, così l&#8217;ho realizzato prendendo spunto qua e là. Il punto di partenza è l&#8217;articolo su <a href="http://www.alistapart.com/articles/prettyaccessibleforms" title="Prettier Accesible Form" target="_blank">A List Apart</a>, per la costruzione di <strong>form accessibili</strong> e <strong>semanticamente corretti</strong> a livello di codice. Va bene essere pignoli, ma scomodare <a href="http://jquery.com/" title="JQuery - javascript library" target="_blank">JQuery</a> e avere qualche bug di visualizzazione su Mozilla mi sembra eccessivo (si veda a tal proposito lo <a href="http://css.html.it/articoli/leggi/1929/form-con-i-css/" title="HTML.it form" target="_blank">stesso form su html.it</a>). Preferisco la semplicità, pur rimandendo nella sfera del &#8220;semanticamente corretto&#8221; ed essere pienamente &#8220;acessibile&#8221;.</p>
<p><a href="http://www.diplod.it/dev/form/form.html" title="Form con CSS" target="_blank">Vediamo subito il risultato</a>, per poi analizzarlo in dettaglio.</p>
<p><span id="more-411"></span></p>
<p>Ci sono <strong>effetti sulle caselle di input </strong>che aiutano l&#8217;utente nella compilazione, rendendo verdi i bordi dei box, in caso di dati corretti, oppure rossi al contrario. Appaiono inoltre le <strong>istruzioni</strong> sulla destra che diventano visibili semplicemente sfruttando l&#8217;effetto  &#8220;hover&#8221; sugli elementi della lista (cambiando il colore del testo da bianco a scuro). Tale tecnica è molto semplice, ma non è supportata da IE6: poco male, se pensiamo che comunque sono dati aggiuntivi e non fondamentali. Mentre chi non ha CSS e javascript attivi riesce in ogni caso a vederle.</p>
<p><img src="http://www.diplod.it/wp-content/uploads/2007/11/form-effetti.gif" alt="Form effetti" /></p>
<p>La <strong>validazione</strong> è stata realizzata utilizzando l&#8217;utilissimo script <a href="http://www.livevalidation.com/" title="live validation" target="_blank">Live Validation</a>.</p>
<p><img src="http://www.diplod.it/wp-content/uploads/2007/11/form-validato.gif" alt="Form validato" /></p>
<p>La <strong>resa cross-browser</strong> è buona, questo screenshot ad esempio rappresenta la pagina caricata sullo schermo di un palmare.</p>
<p><img src="http://www.diplod.it/wp-content/uploads/2007/11/form-palmare.gif" alt="Form palmare" /></p>
<p>Anche <strong>senza CSS e javascript</strong> attivi il form risulta pienamente accessibile e di facile lettura. Ecco come appare a quegli utenti che non hanno nulla di attivo.</p>
<p><img src="http://www.diplod.it/wp-content/uploads/2007/11/form-nocssjava.gif" alt="Form senza CSS e javascript" /></p>
<h4>Il codice HTML</h4>
<p>Prendendo spunto da A List Apart, il codice HTML non deve avere tabelle, ma la solita lista &lt;ul&gt; dove poi inseriremo i vari box di input.</p>
<p>Gli unici accorgimenti sono l&#8217;inserimento delle istruzioni all&#8217;interno di una classe &#8220;help&#8221; e la specifica della classe &#8220;option&#8221; per le etichette delle caselline da spuntare.</p>
<p><code><br />
&lt;form action="#"&gt;<br />
&lt;fieldset&gt;<br />
&lt;legend&gt;I campi marcati con * sono obbligatori&lt;/legend&gt;<br />
&lt;ul&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Nome*&lt;/label&gt;<br />
&lt;span class="help"&gt;[Scrivi qui il tuo nome]&lt;/span&gt;<br />
&lt;input name="ddnome" id="ddnome" value="" type="text" size="30" /&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Cognome*&lt;/label&gt;<br />
&lt;span class="help"&gt;[Scrivi qui il tuo cognome]&lt;/span&gt;<br />
&lt;input name="ddcognome" id="ddcognome" value="" type="text" size="30" /&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Indirizzo&lt;/label&gt;<br />
&lt;span class="help"&gt;[Scrivi qui il tuo indirizzo]&lt;/span&gt;<br />
&lt;input name="ddindirizzo" id="ddindirizzo" value="" type="text" size="30" /&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Città*&lt;/label&gt;<br />
&lt;span class="help"&gt;[Scrivi qui la tua città]&lt;/span&gt;<br />
&lt;input name="ddcitta" id="ddcitta" value="" type="text" size="30" /&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Provincia*&lt;/label&gt;<br />
&lt;span class="help"&gt;[Scrivi qui la sigla della tua provincia]&lt;/span&gt;<br />
&lt;input name="ddprovincia" id="ddprovincia" class="small-text" value="" type="text" size="2" /&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Email*&lt;/label&gt;<br />
&lt;span class="help"&gt;[Scrivi qui la tua e-mail]&lt;/span&gt;<br />
&lt;input name="ddemail" id="ddemail" value="" type="text" size="30" /&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Data di Nascita&lt;/label&gt;<br />
&lt;span class="help"&gt;[Seleziona la tua data di nascita]&lt;/span&gt;<br />
&lt;select id="dob-d"&gt;&lt;option value="1"&gt;1&lt;/option&gt;&lt;option value="2"&gt;2&lt;/option&gt;&lt;/select&gt;<br />
&lt;select id="dob-m"&gt;&lt;option value="1"&gt;Jan&lt;/option&gt;&lt;option value="2"&gt;Feb&lt;/option&gt;&lt;/select&gt;<br />
&lt;select id="dob-y"&gt;&lt;option value="1980"&gt;1984&lt;/option&gt;&lt;option value="1985"&gt;1985&lt;/option&gt;&lt;/select&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Tuo commento&lt;/label&gt;<br />
&lt;span class="help"&gt;[Scrivi qui un tuo commento]&lt;/span&gt;<br />
&lt;textarea name="ddcommento" rows="5" cols="10"&gt;&lt;/textarea&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Il tuo sesso?&lt;/label&gt;<br />
&lt;span class="help"&gt;[Indica il tuo sesso]&lt;/span&gt;<br />
&lt;label class="option"&gt;&lt;input type="radio" name="ddsesso[key]" value="si" checked="checked" class="form-radio" /&gt;uomo&lt;/label&gt;<br />
&lt;label class="option"&gt;&lt;input type="radio" name="ddsesso[key]" value="no" class="form-radio" /&gt;donna&lt;/label&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label class="option"&gt;&lt;input name="ddcontratto" value="ok" type="checkbox" /&gt; Ho letto tutti i contratti di questa terra&lt;/label&gt;<br />
&lt;/li&gt;<br />
&lt;/ul&gt;<br />
&lt;/fieldset&gt;<br />
&lt;p&gt;&lt;input class="button" type="submit" value="Invia Form"/&gt;&lt;/p&gt;<br />
&lt;/form&gt;<br />
</code></p>
<h4>Il codice CSS</h4>
<p>Il CSS pesa in tutto 5Kb, compresa la parte per la struttura. Con una attenta formattazione si può migliorare di qualche Kb. Qui riporto solo la parte relativa al form vero e proprio.</p>
<p><code><br />
form {<br />
margin: 0 auto;<br />
padding: 10px;<br />
border: 1px solid #f3a251;<br />
font: normal 1em Verdana, sans-serif;<br />
background-color: #fff;<br />
width: 800px;<br />
text-align: left;<br />
}<br />
form ul {<br />
background: transparent;<br />
margin: 0;<br />
padding: 0;<br />
list-style: none;<br />
}<br />
form ul li {<br />
margin: 0;<br />
padding: .4em 0;<br />
background: #fff;<br />
color: #fff;<br />
list-style: none;<br />
font: normal 0.9em Verdana, sans-serif;<br />
border-bottom: 1px solid #dadada;<br />
}<br />
form ul li:hover {<br />
color: #333;<br />
background: #eee;<br />
}<br />
form span.help {<br />
float: right;<br />
width: 29%;<br />
}<br />
fieldset {<br />
margin: 0;<br />
padding: 0;<br />
border-top: 1px solid #dadada;<br />
color: #777;<br />
}<br />
label {<br />
display: block;<br />
font-weight:bold;<br />
margin: 0;<br />
font: normal 1.5em Verdana, sans-serif;<br />
color: #333;<br />
width: auto;<br />
}<br />
label.option {<br />
margin: .2em;<br />
font: normal 1.2em/1.2em Verdana, sans-serif;<br />
width: 60%;<br />
}<br />
input {<br />
padding: .4em;<br />
margin: 0;<br />
border: 1px solid #dadada;<br />
font: normal 1.5em Verdana, sans-serif;<br />
color: #333;<br />
background: #fafafa;<br />
}<br />
input.form-radio {<br />
padding: 0;<br />
margin: 0 .2em 0 0;<br />
border: none;<br />
}<br />
textarea {<br />
width: 66%;<br />
padding: .4em;<br />
font: normal 1.2em/1.2em Verdana, sans-serif;<br />
border: 1px solid #dadada;<br />
height: 10em;<br />
display:block;<br />
color:#333;<br />
background: #fafafa;<br />
}<br />
textarea.small-textarea {<br />
height: 3em;<br />
}<br />
select {<br />
padding: .2em 0;<br />
margin: 0;<br />
border: 1px solid #dadada;<br />
font: normal 1.5em Verdana, sans-serif;<br />
color: #333;<br />
background: #fafafa;<br />
}<br />
option {<br />
display: block;<br />
padding: .1em;<br />
margin: 0;<br />
font: normal 1em Verdana, sans-serif;<br />
color: #333;<br />
background: #fafafa;<br />
}<br />
input:focus, input:active, textarea:focus, textarea:active, select:focus, select:active {<br />
border: 1px solid #f3a251;<br />
background: #ffeddc;<br />
}<br />
input.button {<br />
margin: .3em;<br />
padding: .25em .3em;<br />
border: 1px solid #f3a251;<br />
background: #ffeddc;<br />
font: normal 1.5em Verdana, sans-serif;<br />
cursor: pointer;<br />
}<br />
input.button:hover {<br />
background: #f3a251;<br />
color: #fff;<br />
}<br />
</code></p>
<h4>Javascript per la validazione</h4>
<p>La parte javascript è molto semplice, per crearla basta seguire la <a href="http://www.livevalidation.com/examples" title="Esempi LiveValidation" target="_blank">documentazione di LiveValidation</a>. Tutte le validazioni avvengono dopo che l&#8217;utente ha abbandonato il box sul quale sta scrivendo. Questo è possibile specificando il parametro &#8220;onlyOnBlur: true&#8221;.</p>
<p>Per ogni singolo campo che deve essere validato viene costruito un oggetto LiveValidation() richiamandolo in base all&#8217;id.</p>
<p><code><br />
&lt;script type="text/javascript"&gt;<br />
var valNome = new LiveValidation( 'ddnome', {onlyOnBlur: true, validMessage: "OK" } );<br />
valNome.add( Validate.Presence, {failureMessage: "Devi inserire il nome"} );<br />
var valCognome = new LiveValidation( 'ddcognome', {onlyOnBlur: true, validMessage: "OK" } );<br />
valCognome.add( Validate.Presence, {failureMessage: "Devi inserire il cognome"} );<br />
var valCitta = new LiveValidation( 'ddcitta', {onlyOnBlur: true, validMessage: "OK" } );<br />
valCitta.add( Validate.Presence, {failureMessage: "Devi inserire una città"} );<br />
var valProvincia = new LiveValidation( 'ddprovincia', {onlyOnBlur: true, validMessage: "OK" } );<br />
valProvincia.add( Validate.Presence, {failureMessage: "Devi inserire la provincia"} );<br />
valProvincia.add( Validate.Length, { minimum: 2, maximum: 4, tooShortMessage: "Almeno due caratteri", tooLongMessage: "Inserisci la sigla della provincia, al massimo 4 caratteri (ROMA)"} );<br />
var valEmail = new LiveValidation( 'ddemail', {onlyOnBlur: true, validMessage: "OK" } );<br />
valEmail.add( Validate.Presence, {failureMessage: "Lascia un indirizzo e-mail"} );<br />
valEmail.add( Validate.Email, {failureMessage: "Indirizzo non valido"} );<br />
&lt;/script&gt;<br />
</code></p>
<p>Sia il codice CSS che quello HTML è validato W3C. Se vuoi scaricare l&#8217;esempio <a href="http://www.diplod.it/wp-content/uploads/2007/11/diplod-form.zip" title="diploD CSS Form">ecco il file zip</a>, con <a href="http://creativecommons.org/licenses/by/3.0/deed.it" title="Licenza CC" target="_blank">licenza CC</a>. Fammi sapere se apporti utili migliorie al codice o lo utilizzi per impieghi particolari.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2007/11/12/form-con-css-secondo-me/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Flash, web standards, tag embed e stress da validazione W3C</title>
		<link>http://www.diplod.it/2007/06/22/flash-web-standards-tag-embed-e-stress-da-validazione-w3c/</link>
		<comments>http://www.diplod.it/2007/06/22/flash-web-standards-tag-embed-e-stress-da-validazione-w3c/#comments</comments>
		<pubDate>Thu, 21 Jun 2007 23:50:28 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[web standards]]></category>

		<guid isPermaLink="false">http://www.diplod.it/2007/06/22/flash-web-standards-tag-embed-e-stress-da-validazione-w3c/</guid>
		<description><![CDATA[Tutto ebbe inizio con questo articolo di A List Apart, datato novembre 2002, ma tuttora attuale. Qui Drew McLellan presentava la sua soluzione ad uno dei problemi più antipatici del codice web, il famoso metodo Flash Satay. Quando si inserisce un filmato o un oggetto flash all&#8217;interno di una pagina html, è prassi comune utilizzare [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Tutto ebbe inizio con <a title="flash satay" target="_blank" href="http://www.alistapart.com/articles/flashsatay/">questo articolo di A List Apart</a>, datato novembre 2002, ma tuttora attuale. Qui Drew McLellan presentava la sua soluzione ad uno dei problemi più antipatici del codice web, il famoso metodo <strong>Flash Satay</strong>. Quando si inserisce un <strong>filmato o un oggetto flash</strong> all&#8217;interno di una pagina html, è prassi comune utilizzare il tag &#8220;<strong>embed</strong>&#8220;, che però non è riconosciuto tra le specifiche dell&#8217;XHTML, e questo fa fallire la validazione W3C.</p>
<p>Al giorno d&#8217;oggi Macromedia/Adobe continua a proporre questo codice per l&#8217;inserimento di file flash all&#8217;interno di pagine web (<a title="macromedia flash object and embed tag syntax" href="http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_4150&#038;sliceId=2">datato Novembre 2004</a>):</p>
<p><code>  &lt;OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"<br />
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"<br />
WIDTH="550" HEIGHT="400" id="myMovieName"&gt;&lt;PARAM<br />
NAME=movie VALUE="myFlashMovie.swf"&gt;&lt;PARAM NAME=quality<br />
VALUE=high&gt;&lt;PARAM NAME=bgcolor<br />
VALUE=#FFFFFF&gt;&lt;EMBED<br />
xsrc="/support/flash/ts/documents/myFlashMovie.swf" mce_src="/support/flash/ts/documents/myFlashMovie.swf"     quality=high<br />
bgcolor=#FFFFFF WIDTH="550" HEIGHT="400"<br />
NAME="myMovieName" ALIGN="" TYPE="application/x-shockwave-flash"<br />
PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/EMBED&gt;&lt;/OBJECT&gt;</code></p>
<p>Un <strong>vero mostro</strong>: informazioni ripetute, maiuscole e minuscole a caso, valori degli attributi espressi senza le virgolette e chi più ne ha più ne metta. Inutile dire che questo codice non supera la validazione W3C.</p>
<p><span id="more-306"></span></p>
<p>Il <a title="adobe" target="_blank" href="http://www.adobe.com/">sito di Adobe</a>, tanto per citarne uno, utilizza un javascript per richiamare il file .swf, ma gli errori di validazione restano..<br />
Esiste una soluzione per ottenere un codice valido e funzionante su tutti i browser, ma non è perfetta. In soldoni, si tratta di scrivere tutte le informazioni all&#8217;interno del tag &#8220;<strong>object</strong>&#8220;:</p>
<p><code>&lt;object type="application/x-shockwave-flash"<br />
data="mioFileFlash.swf"<br />
width="400" height="300"&gt;<br />
&lt;param name="movie"<br />
value="mioFileFlash.swf" /&gt;<br />
&lt;img xsrc="noflash.gif" mce_src="noflash.gif"<br />
width="200" height="100" alt="" /&gt;&lt;p&gt;Qui si<br />
possono aggiungere info per chi non ha il plugin flash&lt;/p&gt;<br />
&lt;/object&gt;<br />
</code></p>
<p>Su Html.it un <a title="Usare flash rimanendo validi" target="_blank" href="http://webdesign.html.it/articoli/leggi/494/usare-flash-rimanendo-validi/1/">articolo di Alessandro Fulciniti</a> (sempre datato 2004) affronta queste tematiche e presenta diverse tecniche, anche tramite l&#8217;utilizzo di javascript.<br />
Sto usando il flash per un nuovo progetto, e siccome mi piace far le cose per bene, non posso accettare che un&#8217;operazione banale come l&#8217;inserimento di un filmato sia una faccenda da guru internazionale degli standard web.</p>
<p>Succede poi che <a target="_blank" title="Pixel - post sul tag embed" href="http://www.dreamsworld.it/emanuele/2007-01-11/validazione-w3c-con-codici-embed/">scopri per caso</a> che <a target="_blank" title="YouTube" href="http://www.youtube.com/">YouTube</a> se ne infischia della validazione W3C, e con lui la stragrande maggioranza dei &#8220;<strong>mostri sacri</strong>&#8220;; finisci così su un articolo recentissimo di A List Apart dove si propone di <a target="_blank" title="web standards and large companies" href="http://alistapart.com/articles/standardsandcompanies">coinvolgere maggiormente le grosse compagnie all&#8217;interno del movimento sui web standard</a>.</p>
<p>Leggi che è tutto un <a target="_blank" title="w3c e wcag samurai" href="http://www.tomstardust.com/archives/laccessibilita-tra-w3c-e-wcag-samurai/">batti becco fra esperti</a> che non arrivano al dunque: c&#8217;è quello che propone le sue cose, quello che vorrebbe i css 2.2, quelli che vogliono l&#8217;HTML 5 e quelli che prefrirebbero l&#8217;XHTML 4.. Insomma, leggi <a target="_blank" title="Ma conta ancora il W3C?" href="http://blog.html.it/archivi/2007/06/11/ma-conta-ancora-il-w3c.php">questo</a> e <a target="_blank" title="Web standars play o pausa?" href="http://blog.html.it/archivi/2007/06/19/web-standards-play-o-pausa.php">questo</a>, poi sopraggiunge quello stress da validazione, che ti assale ogni volta che fai un nuovo progetto e ti vien voglia di lasciar perdere tutto: tanto ai &#8220;grandi&#8221; non interessa manco di striscio!</p>
<h4>Morale</h4>
<p>Le giuste conclusioni le trae <strong>Peter Paul Koch</strong> sull&#8217;articolo citato in precedenza.<br />
I sostenitori degli standard web sono le <strong>piccole agenzie</strong>, gli <strong>sviluppatori freelance</strong> e le istituzioni come le <strong>università</strong> o le <strong>organizzazioni di ricerca</strong>. Al giorno d&#8217;oggi l&#8217;interna infrastruttura è supportata da questi gruppi. Non è una coincidenza: queste persone hanno bisogno degli standard per farsi un nome e acquisire più clienti. E&#8217; un bene, perchè loro hanno bisogno degli standard così come questi hanno bisogno di loro. Resta un dato di fatto: finchè non si coinvolgeranno pienamente nel movimento le grandi aziende, allora sarà difficile imporre delle direttive che poi vengono rispettate e implementate dai produttori di browser.</p>
<p>Quando avere un sito validato sarà motivo di vanto, sia per Mtv che per la Tv locale, sia per Adobe che per il negozio di informatica sotto casa, allora si potrà dire di aver fatto passi avanti. E i produttori di browser si adegueranno.. si adegueranno?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2007/06/22/flash-web-standards-tag-embed-e-stress-da-validazione-w3c/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CSS: Strani bug su IE</title>
		<link>http://www.diplod.it/2007/03/11/css-strani-bug-su-ie/</link>
		<comments>http://www.diplod.it/2007/03/11/css-strani-bug-su-ie/#comments</comments>
		<pubDate>Sun, 11 Mar 2007 00:59:47 +0000</pubDate>
		<dc:creator><![CDATA[Davide]]></dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[errori]]></category>
		<category><![CDATA[ie]]></category>

		<guid isPermaLink="false">http://www.diplod.it/2007/03/11/css-strani-bug-su-ie/</guid>
		<description><![CDATA[Negli ultimi tempi sto lavorando a pieno ritmo sui fogli di stile CSS. Ho colto l&#8217;occasione per apportare anche qualche piccola miglioria a diploD e mentre facevo ciò ho notato alcuni strani bug. Non ho approfondito le mie ricerche quindi non posso essere certo che questi problemi siano sconosciuti, resta il fatto che sono perlomeno [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Negli ultimi tempi sto lavorando a pieno ritmo sui fogli di stile CSS. Ho colto l&#8217;occasione per apportare anche qualche piccola miglioria a diploD e mentre facevo ciò ho notato alcuni strani bug. Non ho approfondito le mie ricerche quindi non posso essere certo che questi problemi siano sconosciuti, resta il fatto che sono perlomeno &#8220;particolari&#8221;. Andiamo ad analizzarli.</p>
<h4>Margini mangiati</h4>
<p>Il problema è davvero particolare. Consideriamo un box con il seguente codice css:</p>
<p><code>blockquote {<br />
margin: 15px 30px 0 10px;<br />
padding: 2px 6px 2px 20px;<br />
border-left: 5px solid #F8BF24;<br />
background: #FFF6D9 url('images/quote.gif') no-repeat top left;<br />
} </code></p>
<p>Su Firefox e Opera nessun problema, su Internet Explorer invece l&#8217;immagine di sfondo allineata a sinistra va in conflitto con il margine sinistro e si sovrappone ad esso. Tutto ciò che sta sotto al box viene poi spostato verso sinistra di qualche pixel, e finisce nascosto dietro al box esterno che lo contiene. L&#8217;effetto è a cascata: ovvero se sotto ci sarà un altro box di tipo <em>blockquote</em>, tutto ciò che viene dopo subisce uno spostamento verso sinistra ancora maggiore. La faccenda è ancora più strana se pensiamo che passando il mouse sopra a un link, l&#8217;allineamento delle righe prossime al link torna normale, mentre le righe sottostanti restano allineate male. Il bug si coglie bene da questi screenshot.</p>
<p><span id="more-189"></span></p>
<div style="text-align: center"><img id="image184" title="bug css" src="http://www.diplod.it/wp-content/uploads/2007/03/ie1.gif" alt="bug css" /></div>
<div style="text-align: center"><img id="image187" src="http://www.diplod.it/wp-content/uploads/2007/03/ie2.gif" alt="bug css" /></div>
<div style="text-align: center"><img id="image186" src="http://www.diplod.it/wp-content/uploads/2007/03/ie3.gif" alt="bug css" /></div>
<div style="text-align: center"><img id="image188" src="http://www.diplod.it/wp-content/uploads/2007/03/ie4.gif" alt="bug css" /></div>
<p>Il bug è stato corretto semplicemente mettendo l&#8217;immagine di sfondo a destra. Con l&#8217;immagine allineata in questo modo il problema non si manifesta più. Il nuovo codice del box risulta essere:</p>
<p><code>blockquote {<br />
margin: 5px;<br />
padding: 2px 26px 2px 6px;<br />
border: 1px solid #f3dc9e;<br />
border-left: 4px solid #F8BF24;<br />
background: #FFF6D9 url('images/quote.gif') no-repeat top right;<br />
overflow: auto;<br />
} </code></p>
<h4>Immagine di sfondo mangiata</h4>
<p>Su IE (Microsoft Internet Explorer) se abbiamo a che fare con un box sul quale è impostata la regola <em>overflow: hidden</em> e dove una parte del contenuto viene nascosta, l&#8217;immagine di sfondo di questo box viene mangiata e si vede solo in parte.<br />
Prendiamo ad esempio questo codice, relativo al box di sinistra dell&#8217;home page di diploD:</p>
<p><code>#homeboxleft {<br />
float: left;<br />
width: 53%;<br />
padding: 10px;<br />
margin: 20px 1% 60px 0;<br />
overflow: hidden;<br />
background: #fff url('images/homeboxbg_left.gif') no-repeat top right;<br />
border: 1px solid #ccc;<br />
} </code>Questo box ha come immagine di sfondo l&#8217;arcobaleno a tre colori. Se all&#8217;interno andiamo a mettere un&#8217;immagine che sfora le dimensioni del box in larghezza essa viene tagliata, in virtù della regola di <em>overflow</em>. Lo si può vedere bene in questi screenshot. Il primo riporta l&#8217;immagine che sfora la larghezza del box mentre il secondo mette in evidenza l&#8217;immagine di sfondo &#8220;tagliata&#8221;.</p>
<div style="text-align: center"><img id="image181" src="http://www.diplod.it/wp-content/uploads/2007/03/immmagine_ie6.gif" alt="bug css" /></div>
<div style="text-align: center"><img id="image182" src="http://www.diplod.it/wp-content/uploads/2007/03/bug_ie.gif" alt="bug css" /></div>
<p>Ciò che accade è sintetizzato in questo schema.</p>
<div style="text-align: center"><img id="image183" src="http://www.diplod.it/wp-content/uploads/2007/03/schema.jpg" alt="bug css" /></div>
<p>Questo problema si manifesta su Internet Explorer sia con la versione 6 che con la versione 7, anche se con quest&#8217;ultima l&#8217;immagine che sfora viene ridimensionata. Su Firefox invece è tutto normale, l&#8217;immagine di sfondo viene allineata al bordo del box mentre l&#8217;immagine più larga viene automaticamente ridimensionata all&#8217;interno del box.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2007/03/11/css-strani-bug-su-ie/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
