<?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"
	>

<channel>
	<title>esbudellant estàndards</title>
	<atom:link href="http://blog.esbudellat.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.esbudellat.net</link>
	<description></description>
	<pubDate>Mon, 03 Nov 2008 09:11:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>RDFa, estructura i verbositat</title>
		<link>http://blog.esbudellat.net/rdfa-estructura-i-verbositat/</link>
		<comments>http://blog.esbudellat.net/rdfa-estructura-i-verbositat/#comments</comments>
		<pubDate>Sun, 14 Sep 2008 14:30:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[rdf]]></category>

		<category><![CDATA[semàntica]]></category>

		<category><![CDATA[xhtml]]></category>
<category>earl</category><category>n3</category><category>rdf</category><category>rdfa</category><category>semàntica</category><category>w3c</category><category>wcag</category><category>xhtml</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/rdfa-estructura-i-verbositat/</guid>
		<description><![CDATA[Breu reflexió sobre RDFa i la verbosistat derivada.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.w3.org/TR/rdfa-syntax/" hreflang="en">RDFa</a> és l'esforç més recent del W3C de dur la integració entre metadades i contingut a quelcom real tant per l'usuari que ho ha d'escriure com per les eines d'extracció d'aquesta informació.</p>
<p>En contrast amb els <a href="http://microformats.org" hreflang="en">Microformats</a>, permet una extracció de les dades sense que l'extractor hagi d'estar preparat per aquell model alhora que la dificultat per l'usuari és similar.</p>
<p>A més a més, a través dels <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114" hreflang="en">espais de nom</a> permet un model distribuït de creació de vocabularis, agilitzant-ne la creació i evitant els conflictes.</p>
<p>RDFa és un <a href="http://www.w3.org/TR/rdfa-syntax/#rdfa-attributes" hreflang="en">conjunt d'atributs</a> —antics i nous— per permetre definir triples RDF.</p>
<p>Entrant en matèria i definint que:</p>
<dl>
	<dt>cal:</dt>
	<dd>http://www.w3.org/2002/12/cal/ical#</dd>
	<dt>dc:</dt>
	<dd>http://purl.org/dc/elements/1.1/</dd>
	<dt>earl:</dt>
	<dd>http://www.w3.org/ns/earl#</dd>
	<dt>rdf:</dt>
	<dd>http://www.w3.org/1999/02/22-rdf-syntax-ns#</dd>
</dl>
<p>Un exemple fàcil és marcar l'autor d'aquest post. En <a href="http://www.w3.org/2000/10/swap/doc/">N3</a> seria:</p>
<pre><code class="n3">
&lt;http://blog.esbudellat.net/rdfa-estructura-i-verbositat&gt; dc:creator "Arnau Siches" .
</code></pre>
<p>En RDF/XML:</p>
<pre><code class="xml">
&lt;rdf:Description rdf:about="http://blog.esbudellat.net/rdfa-estructura-i-verbositat"&gt;
   &lt;dc:creator&gt;Arnau Siches&lt;/dc:creator&gt;
&lt;/rdf:Description&gt;
</code></pre>
<p>I finalment en RDFa, considerant que el fragment és part del document al qual fa referència:</p>
<pre><code class="xml">
&lt;p property="dc:creator"&gt;Arnau Siches&lt;/p&gt;
</code></pre>
<p>Una molt bona introducció que mostra altres exemples senzills: <a href="http://www.w3.org/TR/xhtml-rdfa-primer/" hreflang="en" xml:lang="en">RDF Primer</a>.</p>

<p>Quan diverses triples comparteixen el mateix subjecte, la verbositat augmenta, igual que amb els microformats.</p>
<p>Per exemple, a l'expressar un esdeveniment en <a href="http://microformats.org/wiki/hcalendar" hreflang="en">hcalendar</a> obtenim:</p>
<pre><code class="xml">
&lt;div class="vevent"&gt;
  &lt;p class="summary"&gt;Trobada per xerrar sobre desenvolupament web de maig.&lt;/p&gt;
  &lt;h3&gt;Dades de la trobada&lt;/h3&gt;
  &lt;dl&gt;
    &lt;dt&gt;Dia:&lt;/dt&gt;
    &lt;dd&gt;
      &lt;abbr title="2008-05-23T19:30+1:00" class="dtstart"&gt;23 de maig a les 19:30h&lt;/abbr&gt;
    &lt;/dd&gt;
    &lt;dt&gt;Lloc:&lt;/dt&gt;
    &lt;dd class="location"&gt;
      &lt;abbr class="geo" title="41.401745;2.155166"&gt;Bar Billar H.D.P.&lt;/abbr&gt; de Gràcia
    &lt;/dd&gt;
  &lt;/dl&gt;
&lt;/div&gt;
</code></pre>
<p>Molt similar a expressar-ho en <a href="http://www.w3.org/TR/rdfcal/" hreflang="en" xml:lang="en">RDF Calendar</a> via RDFa:</p>
<pre><code class="xml">
&lt;div typeof="cal:Vevent"&gt;
  &lt;p property="cal:summary"&gt;Trobada per xerrar sobre desenvolupament web de maig.&lt;/p&gt;
  &lt;h3&gt;Dades de la trobada&lt;/h3&gt;
  &lt;dl&gt;
    &lt;dt&gt;Dia:&lt;/dt&gt;
    &lt;dd property="cal:dtstart" content="2008-05-23T19:30+1:00" datatype="xs:datetime"&gt;
      23 de maig a les 19:30h
    &lt;/dd&gt;
    &lt;dt&gt;Lloc:&lt;/dt&gt;
    &lt;dd property="cal:location"&gt;
      &lt;span property="cal:geo" content="41.401745 2.155166"&gt;Bar Billar H.D.P.&lt;/span&gt; de Gràcia
    &lt;/dd&gt;
  &lt;/dl&gt;
&lt;/div&gt;
</code></pre>
<p>En casos on l'estructura és complexa com per exemple un informe <a href="http://www.w3.org/TR/EARL10/" hreflang="en" xml:lang="en">EARL</a> de validació de les <a href="http://www.w3.org/TR/WCAG10/" hreflang="en">WCAG 1.0</a>:</p>
<pre><code class="xml">
&lt;earl:Assertion&gt;
  &lt;earl:assertedBy rdf:resource="#assertor"/&gt;
  &lt;earl:subject rdf:resource="#subject"/&gt;
  &lt;earl:test rdf:resource="http://www.w3.org/TR/WCAG10#tech-color-convey"&gt;
    &lt;dc:description rdf:parseType="Literal" xml:lang="ca"&gt;
      &lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
        Assegureu-vos que tota la informació transmesa amb colors…
      &lt;/div&gt;
    &lt;/dc:description&gt;
  &lt;/earl:test&gt;
  &lt;earl:mode rdf:resource="http://www.w3.org/ns/earl#manual"/&gt;
  &lt;earl:result rdf:resource="http://www.w3.org/ns/earl#fail"&gt;
    &lt;dc:description rdf:parseType="Literal" xml:lang="ca"&gt;
      &lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
        &lt;p&gt;Els enllaços només es poden distingir a través del color.&lt;/p&gt;
      &lt;/div&gt;
    &lt;/dc:description&gt;
  &lt;/earl:result&gt;
&lt;/earl:Assertion&gt;
</code></pre>
<p>Passat a RDFa seria quelcom semblant a:</p>
<pre><code class="xml">
&lt;div typeof="earl:Assertion" about="#subject"&gt;
  &lt;h2 property="earl:test" resource="http://www.w3.org/TR/WCAG10/#tech-color-convey"&gt;
    Assegureu-vos que tota la informació transmesa amb colors…
  &lt;/h2&gt;
  &lt;div property="earl:mode" resource="http://www.w3.org/ns/earl#manual"&gt;
    &lt;div property="earl:result" resource="http://www.w3.org/ns/earl#fail"&gt;
      &lt;p&gt;Els enllaços només es poden distingir a través del color.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
</code></pre>
<p>L'estructura no permet per exemple, usar una llista de definició amb tots els punts de les WCAG 1.0 ja que cal un contenidor per cada <span class="element">/earl:Assertion</span> (gran part de la culpa és de la mala estructura de les llistes de definició en X/HTML). I cal un <span class="element">/div</span> per cada <span class="element">/earl:result</span> ja que pot haver-hi múltiples paràgrafs.</p>

<p>En conclusió, no millora en verbositat respecte els microformats però permet més flexibilitat d'expressió de relacions.</p>

<h3>Recursos relacionats</h3>
<ul>
	<li><a href="http://www.w3.org/TR/rdfa-syntax/" hreflang="en" xml:lang="en">RDFa in XHTML: Syntax and Processing, W3C</a></li>
	<li><a href="http://www.w3.org/TR/xhtml-rdfa-primer/" hreflang="en" xml:lang="en">RDFa Primer, W3C</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/rdfa-estructura-i-verbositat/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Referència bàsica d'ISO Schematron</title>
		<link>http://blog.esbudellat.net/referencia-basica-iso-schematron/</link>
		<comments>http://blog.esbudellat.net/referencia-basica-iso-schematron/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 16:55:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[xml]]></category>

		<category><![CDATA[xpath]]></category>

		<category><![CDATA[xsl]]></category>
<category>dsl</category><category>esquema</category><category>iso</category><category>relaxng</category><category>sch</category><category>schematron</category><category>xml</category><category>xpath</category><category>xsd</category><category>xslt</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/sintaxi-basica-diso-schematron/</guid>
		<description><![CDATA[Referència d'elements i atributs d'iso schematron]]></description>
			<content:encoded><![CDATA[<p>L'espai de noms d'ISO Schematron és <code>http://purl.oclc.org/dsdl/schematron</code>.</p>

<dl>
	<dt>Element <span class="element">/active</span></dt>
	<dd>
		<p>Permet definir el patró actiu.</p>
		<dl>
			<dt>Atribut <span class="attribute">@pattern</span></dt>
			<dd>Referència del patró actiu.</dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/assert</span></dt>
	<dd>
		<p>Permet definir un test mitjançant l'atribut <span class="attribute">@test</span> que, si dóna fals, retorna el contingut del node.</p>
		<dl>
			<dt>Atribut <span class="attribute">@test</span></dt>
			<dd>Expressió XPath relativa al context de l'element <span class="element">/rule</span> ancessor.</dd>
			<dt>Atribut <span class="attribute">@diagnostics</span></dt>
			<dd>Referència a un element <span class="element">/diagnostic</span>.</dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/extends</span></dt>
	<dd>
		<p>Permet referenciar regles sense context.</p>
		<!-- 
			Abstract rules are named lists of assertions without a context expression. The required rule attribute references an abstract rule. The current rule uses all the assertions from the abstract rule it extends. 
		-->
		<dl>
			<dt>Atribut <span class="attribute">@rule</span></dt>
			<dd>Referència a un element <span class="element">/rule[@abstract="true"]</span></dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/include</span></dt>
	<dd>
		<p>Permet inserir fragments Schematron al punt on es declari l'element.</p>
		<dl>
			<dt>Atribut <span class="attribute">@href</span></dt>
			<dd>Referència a un document XML ben format l'arrel del qual ha de ser un element Schematron permès al punt on s'ha declarat l'element.</dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/let</span></dt>
	<dd>
		<p>Permet definir una variable. Si es defineix com a fill d'un element <span class="element">/rule</span> el context de la variable serà el d'aquesta. Sinó, el context de la variable és l'arrel.</p>
		<p>La variable sempre s'ha de declarar abans d'usar-la en una expressió i no es pot definir més d'una vegada la mateixa variable. (comportament igual a les variables XSLT).</p>
		<dl>
			<dt>Atribut <span class="attribute">@name</span></dt>
			<dd>Nom de la variable.</dd>
			<dt>Atribut <span class="attribute">@value</span></dt>
			<dd>Expressió XPath.</dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/name</span></dt>
	<dd>
		<p>Permet obtenir el nom del node del context.</p>
		<dl>
			<dt>Atribut <span class="attribute">@path</span></dt>
			<dd>Expressió XPath relativa al context actual.</dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/ns</span></dt>
	<dd>
		<p>Permet definir els espais de nom que s'usen en les expressions XPath. La declaració d'espais de nom del document no afecta a les expressions.</p>
		<dl>
			<dt>Atribut <span class="attribute">@uri</span></dt>
			<dd>URI de l'espai de noms.</dd>
			<dt>Atribut <span class="attribute">@prefix</span></dt>
			<dd>Prefix de l'espai de noms.</dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/param</span></dt>
	<dd>
		<p>Permet definir una parella nom-valor per parametritzar patrons abstractes.</p>
		<dl>
			<dt>Atribut <span class="attribute">@name</span></dt>
			<dd>Nom del paràmetre.</dd>
			<dt>Atribut <span class="attribute">@value</span></dt>
			<dd>Expressió XPath.</dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/pattern</span></dt>
	<dd>
		<p>Permet agrupar regles i definir agrupacions genèriques parametritzables.</p>
		<p>Permet usar l'element <span class="element">/title</span> i l'element <span class="element">/p</span> per documentar.</p>
		<!-- The icon, see and fpi attributes allow rich interfaces and documentation. -->
		<dl>
			<dt>Atribut <span class="attribute">@id</span></dt>
			<dd>Identificador únic per esquema.</dd>
			<dt>Atribut <span class="attribute">@abstract</span></dt>
			<dd>Amb valor <code>true</code> permet definir patrons genèrics parametritzables.</dd>
			<dt>Atribut <span class="attribute">@is-a</span></dt>
			<dd>Permet instanciar un patró genèric.</dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/phase</span></dt>
	<dd>
		<p>Permet agrupar patrons per poder fer validacions progressives o parcials.</p>
		<!-- The icon, see and fpi attributes allow rich interfaces and documentation. -->
		<dl>
			<dt>Atribut <span class="attribute">@id</span></dt>
			<dd>Identifica una fase. No es pot usar ni <code>#ALL</code> ni <code>#DEFAULT</code> com a valor.</dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/report</span></dt>
	<dd>
		<p>Permet definir un test mitjançant l'atribut <span class="attribute">@test</span> que, si dóna cert, retorna el contingut del node.</p>
		<dl>
			<dt>Atribut <span class="attribute">@test</span></dt>
			<dd>Expressió XPath relativa al context de l'element <span class="element">/rule</span> ancessor.</dd>
			<dt>Atribut <span class="attribute">@diagnostics</span></dt>
			<dd>Referència a un element <span class="element">/diagnostic</span>.</dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/rule</span></dt>
	<dd>
		<p>Llista de tests (<span class="element">/assert</span> i <span class="element">/report</span>) relacionats a un context.</p>
		<!-- The icon, see and fpi attributes allow rich interfaces and documentation.
		The flag attribute allows more detailed outcomes. It is defined below.
		The role and subject attributes allow explicit identification of some part of a pattern as part of the validation outcome. -->
		<dl>
			<dt>Atribut <span class="attribute">@context</span></dt>
			<dd>Expressió XPath.</dd>
			<dt>Atribut <span class="attribute">@abstract</span></dt>
			<dd>Amb valor <code>true</code> permet definir regles genèriques, sense context.</dd>
			<dt>Atribut <span class="attribute">@id</span></dt>
			<dd>Identificador de la regla.</dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/schema</span></dt>
	<dd>
		<p>Arrel de l'esquema.</p>
		<p>Permet usar l'element <span class="element">/title</span> i l'element <span class="element">/p</span> per documentar.</p>
		<!-- The icon, see and fpi attributes allow rich interfaces and documentation. -->
		<dl>
			<dt>Atribut <span class="attribute">@schemaVersion</span></dt>
			<dd>Versió de l'esquema. Normalment <code>ISO19757-3</code>. Depèn de l'implementador.</dd>
			<dt>Atribut <span class="attribute">@queryBinding</span></dt>
			<dd>Llenguatge d'interrogació. Normalment <code>xslt1</code>, <code>xslt2</code>, <code>xpath</code>, <code>exslt</code>. Depèn de l'implementador.</dd>
			<dt>Atribut <span class="attribute">@defaultPhase</span></dt>
			<dd>Nom de la fase per defecte.</dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/value-of</span></dt>
	<dd>
		<p>Valor d'una expressió XPath en context d'un test.</p>
		<dl>
			<dt>Atribut <span class="attribute">@select</span></dt>
			<dd>Expressió XPath.</dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/diagnostic</span></dt>
	<dd>
		<p>Permet definir un text resultat del test. Per definir missatges multiidioma, cada idioma ha d'usar un element <span class="element">/diagnostic</span> diferent amb l'atribut <span class="attribute">@xml:lang</span> adequat i referenciant tots els identificadors a l'atribut <span class="attribute">@diagnostics</span> del test.</p>
		<dl>
			<dt>Atribut <span class="attribute">@id</span></dt>
			<dd>Identificador de l'element.</dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/dir</span></dt>
	<dd>
		<p>Permet definir la direcció del text.</p>
		<dl>
			<dt>Atribut <span class="attribute">@value</span></dt>
			<dd>Els valors poden ser <code>ltr</code> o <code>rtl</code>.</dd>
		</dl>
	</dd>
	<dt>Element <span class="element">/emph</span></dt>
	<dd>
		<p>Fragment de text emfatitzat.</p>
	</dd>
	<dt>Element <span class="element">/title</span></dt>
	<dd>
		<p>Títol, resum d'un fragment de l'esquema.</p>
	</dd>
	<dt>Element <span class="element">/p</span></dt>
	<dd>
		<p>Paràgraf per documentar l'squema.</p>
	</dd>
	<dt>Element <span class="element">/span</span></dt>
	<dd>
		<p>Fragment d'un paràgraf.</p>
		<dl>
			<dt>Atribut <span class="attribute">@class</span></dt>
			<dd>Modificador de l'element.</dd>
		</dl>
	</dd>
	<dt>Atribut <span class="attribute">@flag</span></dt>
	<dd>
		<p>Variable booleana amb valor inicial <code>false</code>.</p>
		<p>Permet activar/desactivar tests o regles permetent així diferents graus de validació.</p>
	</dd>
	<dt>Atribut <span class="attribute">@fpi</span></dt>
	<dd>
		<p>Identificador formal public (<span xml:lang="en">Formal Public Identifier</span>) de l'esquema, fase o altre element.</p>
	</dd>
	<dt>Atribut <span class="attribute">@icon</span></dt>
	<dd>
		<p>Localització d'un gràfic significatiu de l'element.</p>
	</dd>
	<dt>Atribut <span class="attribute">@role</span></dt>
	<dd>
		<p>Nom descriptor de la funció del test o del context d'un patró. Si el test té un atribut <span class="attribute">@subject</span> el rol fa d'arc entre el context i qualsevol node que coincideixi amb l'expressió de l'atribut <span class="attribute">subject</span>.</p>
	</dd>
	<dt>Atribut <span class="attribute">@see</span></dt>
	<dd>
		<p>URI d'informació externa d'interès pels usuaris de l'esquema.</p>
	</dd>
	<dt>Atribut <span class="attribute">@subject</span></dt>
	<dd>
		<p>Expressió que permet precisar el context d'un test.</p>
	</dd>
</dl>

<h3>Recursos relacionats</h3>
<ul>
	<li><a href="http://www.schematron.com" hreflang="en">Lloc oficial d'Schematron</a></li>
	<li><a href="http://www.dpawson.co.uk/schematron/" hreflang="en">Tutorial d'Schematron</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/referencia-basica-iso-schematron/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Negociació de contingut amb .htaccess</title>
		<link>http://blog.esbudellat.net/negociacio-de-contingut-amb-htaccess/</link>
		<comments>http://blog.esbudellat.net/negociacio-de-contingut-amb-htaccess/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 20:01:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[apache]]></category>

		<category><![CDATA[codificació]]></category>

		<category><![CDATA[internet explorer]]></category>

		<category><![CDATA[navegadors]]></category>
<category>accept</category><category>content</category><category>contingut</category><category>html</category><category>http</category><category>internet explorer</category><category>mime</category><category>negociació</category><category>xhtml</category><category>xml</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/negociacio-de-contingut-amb-htaccess/</guid>
		<description><![CDATA[Explicació de com usar negociació de contingut amb mod_rewrite]]></description>
			<content:encoded><![CDATA[<p>Usar documents XHTML estàtics amb un MIME Type correcte (<code>application/xhtml+xml</code>) i alhora degradar correctament per Internet Explorer i altres navegadors deficients és un problema.</p>
<p>Si el servidor web és un Apache, es pot usar el mòdul <em>mod_rewrite</em> per decidir en funció de la capçalera HTTP <code>Accept</code> si servir <code>application/xhtml+xml</code> o <code>text/html</code>.</p>
<p>Usant .htaccess per fer la reescriptura el problema es resol amb:</p>
<pre><code class="htaccess">
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} application/xhtml\+xml
RewriteRule ^(.+\.html)$ $1 [T=application/xhtml+xml]
</code></pre>
<p>La primera línia activa el mòdul.</p>
<p>La segona és una condició que rep la variable <code>HTTP_ACCEPT</code> (la qual conté la capçalera HTTP <code>Accept</code>) i l'expressió regular <code>application/xhtml\+xml</code> i mira si hi ha coincidència.</p>
<p>La darrera línia aplica només si la condició anterior és certa. En aquest cas, reescriu la URI deixant-la igual però afegint el modificador <code>T</code> amb valor <code>application/xhtml+xml</code>.</p>
<p>El modificador <code>T</code> permet forçar el tipus de contingut (<code>Content-Type</code>) de la URI reescrita.</p>
<p>Donat que s'usa aquesta decisió en el moment de servir el document i que el document no es modifica, usar un <code>&lt;meta http-equiv="Content-Type" …/&gt;</code> ja que caldria posar un MIME Type a l'atribut <span class="attribute">@content</span> i en algun cas no seria correcte. Per tant millor no usar l'element <span class="element">/meta</span> en aquest cas.</p>
<p>Al no posar l'element <span class="element">/meta</span> no s'està especificant la codificació del document. Això quan s'usa XML (<code>application/xhtml+xml</code>) no és un problema ja que la codificació per defecte és UTF-8 però quan el contingut es serveix com a HTML (<code>text/html</code>) la codificació per defecte és la d'HTTP: ISO-8859-1.</p>
<p>Per evitar problemes, val la pena forçar la codificació des del document .htaccess amb una regla <code>AddCharset</code>.</p>
<p>Usant UTF-8 als documents XHTML, el document .htaccess final queda com:</p>
<pre><code class="httaccess">
AddCharset utf-8 html

RewriteEngine On
RewriteCond %{HTTP_ACCEPT} application/xhtml\+xml
RewriteRule ^(.+\.html)$ $1 [T=application/xhtml+xml]
</code></pre>
<p>Per descomptat, si s'usen diverses codificacions en documents HTML, aquesta regla caldrà condicionar-la perquè només afecti als documents correctes.</p>

<p>Com a últim afegit, per aconseguir que validadors com el del W3C, agafin el MIME Type correcte, es poden afegir condicionals opcionals:</p>
<pre><code class="httaccess">
AddCharset utf-8 html

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} W3C_Validator [OR]
RewriteCond %{HTTP_USER_AGENT} WDG_SiteValidator [OR]
RewriteCond %{HTTP_USER_AGENT} W3C-checklink [OR]
RewriteCond %{HTTP_USER_AGENT} Web-Sniffer [OR]
RewriteCond %{HTTP_ACCEPT} application/xhtml\+xml
RewriteRule ^(.+\.html)$ $1 [T=application/xhtml+xml]
</code></pre>

<h3>Recursos relacionats</h3>
<ul>
	<li><a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html" hreflang="en" xml:lang="en">Module mod_rewrite</a></li>
	<li><a href="http://www.w3.org/International/O-charset" hreflang="en" xml:lang="en">Character encodings</a></li>
	<li><a href="http://www.w3.org/International/O-HTTP-charset" hreflang="en" xml:lang="en">Setting the HTTP charset parameter</a></li>
	<li><a href="http://www.faqs.org/rfcs/rfc1945.html" hreflang="en" xml:lang="en">RFC1945 - Hypertext Transfer Protocol -- HTTP/1.0</a></li>
	<li><a href="http://www.faqs.org/rfcs/rfc2616.html" hreflang="en" xml:lang="en">RFC2616 - Hypertext Transfer Protocol -- HTTP/1.1</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/negociacio-de-contingut-amb-htaccess/feed/</wfw:commentRss>
		</item>
		<item>
		<title>XSLT i XPath esbudellats</title>
		<link>http://blog.esbudellat.net/xslt-i-xpath-esbudellats/</link>
		<comments>http://blog.esbudellat.net/xslt-i-xpath-esbudellats/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 14:34:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[xml]]></category>

		<category><![CDATA[xpath]]></category>

		<category><![CDATA[xsl]]></category>
<category>selectors</category><category>seti</category><category>w3c</category><category>xpath</category><category>xslt</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/?p=182</guid>
		<description><![CDATA[Anunci del nou lloc XSLT esbudellat.]]></description>
			<content:encoded><![CDATA[<p>Inauguro <a href="http://xslt.esbudellat.net" hreflang="ca">XSLT esbudellat</a> on aniré recopilant informació sobre XSLT i XPath.</p>
<p>Per començar, un <a href="http://xslt.esbudellat.net/xpath/funcions/" hreflang="ca">llistat de les funcions XPath</a> amb una breu explicació.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/xslt-i-xpath-esbudellats/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Format dels períodes en dates ISO 8601</title>
		<link>http://blog.esbudellat.net/format-dels-periodes-en-dates-iso-860/</link>
		<comments>http://blog.esbudellat.net/format-dels-periodes-en-dates-iso-860/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 19:50:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[xpath]]></category>

		<category><![CDATA[xsd]]></category>

		<category><![CDATA[xsl]]></category>
<category>canònic</category><category>data</category><category>formats</category><category>iso</category><category>schema</category><category>w3c</category><category>xpath</category><category>xsd</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/forma-canonica-de-les-dates-en-iso-8601/</guid>
		<description><![CDATA[Explicació de com funciona una data ISO 8601 per un període.]]></description>
			<content:encoded><![CDATA[<p>El format de data <a href="http://www.w3.org/TR/NOTE-datetime" hreflang="en">ISO 8601</a> es pot expressar en la seva forma màxima com a <var>YYYY-MM-DDThh:mm:ss.sTZD</var>:</p>
<pre><code>
2008-07-31T21:23:15.45+02:00
</code></pre>
<p>Aquest cas es considera un tipus de dada primitiva <a href="http://www.w3.org/TR/xmlschema-2/#dateTime"><code>xs:dateTime</code></a> o en casos reduïts com <var>YYY-MM-DD</var> el tipus de dada és <a href="http://www.w3.org/TR/xmlschema-2/#date"><code>xs:date</code></a></p>

<p>En altres tipus de dada en els que s'expressa una durada o període com <a href="http://www.w3.org/TR/xmlschema-2/#duration"><code>xs:duration</code></a> o <a href="http://www.w3.org/TR/xmlschema-2/#dayTimeDuration"><code>xs:dayTimeDuration</code></a> el format és diferent, s'expressa amb <var>PnYnMnDTnHnMnS</var>:</p>
<pre><code>
P2008Y7M31DT21H23M15.45S
</code></pre>
<p>És a dir, comença amb un marcador <code>P</code> obligatòri seguit de forma opcional per:</p>
<dl>
	<dt><code><var>n</var>Y</code></dt>
	<dd>Enter (<a href="http://www.w3.org/TR/xmlschema-2/#integer"><code>xs:integer</code></a>) seguit del caràcter <code>Y</code> que representa els anys.</dd>
	<dt><code><var>n</var>M</code></dt>
	<dd>Enter (<a href="http://www.w3.org/TR/xmlschema-2/#integer"><code>xs:integer</code></a>) seguit del caràcter <code>M</code> que representa els mesos.</dd>
	<dt><code><var>n</var>D</code></dt>
	<dd>Enter (<a href="http://www.w3.org/TR/xmlschema-2/#integer"><code>xs:integer</code></a>) seguit del caràcter <code>D</code> que representa els dies.</dd>
	<dt><code>T</code></dt>
	<dd>Obligatòri només si es proporciona alguna dada de temps inferior a un dia.</dd>
	<dt><code><var>n</var>H</code></dt>
	<dd>Enter (<a href="http://www.w3.org/TR/xmlschema-2/#integer"><code>xs:integer</code></a>) seguit del caràcter <code>H</code> que representa les hores.</dd>
	<dt><code><var>n</var>M</code></dt>
	<dd>Enter (<a href="http://www.w3.org/TR/xmlschema-2/#integer"><code>xs:integer</code></a>) seguit del caràcter <code>H</code> que representa els minuts.</dd>
	<dt><code><var>n</var>S</code></dt>
	<dd>Decimal (<a href="http://www.w3.org/TR/xmlschema-2/#decimal"><code>xs:decimal</code></a>) seguit del caràcter <code>S</code> que representa els segons.</dd>
</dl>
<p>La data pot ser negativa usant un guió (<code>-</code>) davant del marcador <code>P</code>.</p>
<h3>Recursos relacionats</h3>
<ul>
	<li><a href="http://www.w3.org/TR/xmlschema-2/#isoformats" hreflang="en" xml:lang="en">ISO 8601 Date and Time Formats (XML Schema)</a></li>
	<li><a href="http://www.w3.org/TR/NOTE-datetime" hreflang="en" xml:lang="en">Date and Time Formats (W3C Note)</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/format-dels-periodes-en-dates-iso-860/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Error en el reposicionament d'una caixa posicionada de forma absoluta en Internet Explorer 6</title>
		<link>http://blog.esbudellat.net/error-en-el-reposicionament-duna-caixa-posicionada-de-forma-absoluta-en-internet-explorer-6/</link>
		<comments>http://blog.esbudellat.net/error-en-el-reposicionament-duna-caixa-posicionada-de-forma-absoluta-en-internet-explorer-6/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 07:22:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[css]]></category>

		<category><![CDATA[hacks]]></category>

		<category><![CDATA[internet explorer]]></category>

		<category><![CDATA[navegadors]]></category>

		<category><![CDATA[tècniques]]></category>
<category>absolute</category><category>bug</category><category>càlcul</category><category>css</category><category>error</category><category>hack</category><category>internet explorer</category><category>postion</category><category>reposicionar</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/error-en-el-reposicionament-duna-caixa-posicionada-de-forma-absoluta-en-internet-explorer-6/</guid>
		<description><![CDATA[Hack per evitar l'error de reposicionament de caixes absolutes a la part inferior d'una caixa en Internet Explorer 6.]]></description>
			<content:encoded><![CDATA[<p>Una tècnica comú per crear cantonades personalitzades és usar quatre elements (<span class="element">/span</span>, <span class="element">/div</span>, etc.) amb quatre classes que permetin des de CSS posicionar-les amb un <code>position: absolute</code> i el parell de coordenades necessàries (<code>top</code>, <code>right</code>, <code>bottom</code>, <code>left</code>).</p>
<p>És a dir, quelcom tipus:</p>
<pre><code class="css">
.bottom-left {
   position: absolute;
   bottom: 0;
   left: 0;
}
</code></pre>
<p>Aquesta tècnica falla en Internet Explorer 6 quan es modifica la quantitat de contingut, és a dir, quan es modifica l'alçada degut a l'augment o disminució de contingut.</p>
<p>Quan hi ha una variació d'aquest tipus les caixes inferiors no recalculen la posició <code>bottom: 0</code> de l'actual caixa. <a href="/exemples/margin-corners/margin-corners.html">A l'exemple s'il·lustra l'error</a>.</p>

<p>La solució és senzillament no usar la propietat <code>bottom</code>. Si les caixes ja es posicionen a lloc (si s'insereixen com a darrers fills) no cal afegir res ja que el <code>top</code> del flux coincideix amb la posició desitjada. Aparentment aquesta solució funciona amb tots els navegadors recents (Firefox 3, Opera 9.5, Safari 3, IE7).</p>
<p>Alternativament, si aquesta solució no funciona (Internet Explorer no se'l coneix per la seva consistència), es pot assignar a cada acció del commutador un valor de <code>height</code> diferent (per exemple 1% i 2%) de manera que a cada acció s'obliga l'IE a recalcular.</p>
<h3>Recursos relacionats</h3>
<ul>
	<li><a href="http://www.pmob.co.uk/temp/onepxgap.htm" hreflang="en" xml:lang="en">IE 1px discrepancy</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/error-en-el-reposicionament-duna-caixa-posicionada-de-forma-absoluta-en-internet-explorer-6/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Relació de selectors XPath i CSS</title>
		<link>http://blog.esbudellat.net/relacio-de-selectors-xpath-i-css/</link>
		<comments>http://blog.esbudellat.net/relacio-de-selectors-xpath-i-css/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 18:53:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[css]]></category>

		<category><![CDATA[xpath]]></category>
<category>css</category><category>equivalència</category><category>html</category><category>selecció</category><category>selector</category><category>w3c</category><category>xml</category><category>xpath</category><category>xsl</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/relacio-de-selectors-xpath-i-css/</guid>
		<description><![CDATA[Taula d'equivalència dels selectors més comuns d'XPath i CSS.]]></description>
			<content:encoded><![CDATA[<p>Els dos llenguatges de selecció de documents XML (i d'HTML) que proporciona el W3C són divergents en sintaxi. Aquesta taula intenta recollir els casos més usuals d'ambdós móns.</p>

<table summary="Equivalència de sintaxi entre XPath 2.0 i els selectors CSS 2.1" class="equivalencia">
	<thead>
		<tr>
			<th>Significat</th>
			<th>CSS</th>
			<th>XPath</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>Qualsevol element</td>
			<td><code>*</code></td>
			<td><code>*</code></td>
		</tr>
		<tr>
			<td>Qualsevol element <span class="element">/e</span></td>
			<td><code>e</code></td>
			<td><code>//e</code></td>
		</tr>
		<tr>
			<td>Qualsevol element <span class="element">/f</span> descendent d'<span class="element">/e</span></td>
			<td><code>e f</code></td>
			<td><code>//e//f</code></td>
		</tr>
		<tr>
			<td>Qualsevol element <span class="element">/f</span> fill d'<span class="element">/e</span></td>
			<td><code>e > f</code></td>
			<td><code>//e/f</code></td>
		</tr>
		<tr>
			<td>El primer element d'una col·lecció si aquest és un element <span class="element">/e</span></td>
			<td><code>e:first-child</code></td>
			<td><code>//*[1]/self::e</code></td>
		</tr>
		<tr>
			<td>El primer element <span class="element">/e</span> d'una col·lecció.</td>
			<td>No existeix en CSS 2.1, en CSS 3 seria <code>e:first-of-type</code></td>
			<td><code>//e[1]</code></td>
		</tr>
		<tr>
			<td>El darrer fill d'una col·lecció si aquest és un element <span class="element">/e</span></td>
			<td>No existeix en CSS 2.1, en CSS 3 seria <code>e:last-child</code></td>
			<td><code>//*[last()]/self::e</code></td>
		</tr>
		<tr>
			<td>El darrer element <span class="element">/e</span> d'una col·lecció.</td>
			<td>No existeix en CSS 2.1, en CSS 3 seria <code>e:last-of-type</code></td>
			<td><code>//e[last()]</code></td>
		</tr>
		<tr>
			<td>L'element <span class="element">/e</span> si aquest és un hipervincle i no està visitat.</td>
			<td><code>e:link</code></td>
			<td>No existeix en XPath 2.0</td>
		</tr>
		<tr>
			<td>L'element <span class="element">/e</span> si aquest és un hipervincle i està visitat.</td>
			<td><code>e:visited</code></td>
			<td>No existeix en XPath 2.0</td>
		</tr>
		<tr>
			<td>L'element <span class="element">/e</span> durant accions de l'usuari.</td>
			<td><code>e:hover, e:active, e:focus</code></td>
			<td>No existeix en XPath 2.0</td>
		</tr>
		<tr>
			<td>L'element <span class="element">/e</span> amb l'idioma <em>c</em> (l'idioma pot ser heredat d'un ancessor per tant no funciona un selector d'atribut).</td>
			<td><code>e:lang(c)</code></td>
			<td><code>//e[lang(c)]</code></td>
		</tr>
		<tr>
			<td>L'element <span class="element">/f</span> amb un element <span class="element">/e</span> germà que el precedeix inmediatament.</td>
			<td><code>e + f</code></td>
			<td><code>//e/following-sibling::*[1]/self::f</code></td>
		</tr>
		<tr>
			<td>L'element <span class="element">/f</span> amb un element <span class="element">/e</span> germà que el succeeix inmediatament.</td>
			<td>No existeix en CSS 2.1</td>
			<td><code>//e/preceding-sibling::*[1]/self::f</code></td>
		</tr>
		<tr>
			<td>Tots els elements <span class="element">/f</span> amb un element <span class="element">/e</span> germà que els precedeix.</td>
			<td>No existeix en CSS 2.1, en CSS 3 seria <code>e ~ f</code></td>
			<td><code>//e/following-sibling::f</code></td>
		</tr>
		<tr>
			<td>Tots els elements <span class="element">/f</span> amb un element <span class="element">/e</span> germà que els succeeix.</td>
			<td>No existeix en CSS 2.1</td>
			<td><code>//e/preceding-sibling::f</code></td>
		</tr>
		<tr>
			<td>Qualsevol element <span class="element">/e</span> amb un element <span class="element">/f</span> fill.</td>
			<td>No existeix en CSS 2.1</td>
			<td><code>//e[f]</code></td>
		</tr>
		<tr>
			<td>Qualsevol element <span class="element">/e</span> amb un atribut <span class="attribute">@attr</span>.</td>
			<td><code>e[attr]</code></td>
			<td><code>//e[@attr]</code></td>
		</tr>
		<tr>
			<td>Qualsevol element <span class="element">/e</span> amb un atribut <span class="attribute">@attr</span> amb valor “foo”.</td>
			<td><code>e[attr="foo"]</code></td>
			<td><code>//e[@attr="foo"]</code></td>
		</tr>
		<tr>
			<td rowspan="2">Qualsevol element <span class="element">/e</span> amb un atribut <span class="attribute">@attr</span> amb una llista de valors separats per espais on un d'ells és exactament “foo”.</td>
			<td rowspan="2"><code>e[attr~="foo"]</code></td>
			<td><code>//e[tokenize( @attr, "\s+" ) = "foo"]</code> Només funciona en XPath 2.0</td>
		</tr>
		<tr>
			<td><code>//e[contains( concat( " ", @attr, " " ), concat( " ", "foo", " " ) )]</code></td>
		</tr>
		<tr>
			<td rowspan="2">Qualsevol element <span class="element">/e</span> amb un atribut <span class="attribute">@attr</span> amb una llista de valors separats per guions on el primer valor és “foo”.</td>
			<td rowspan="2"><code>e[attr|="foo"]</code></td>
			<td><code>//e[tokenize( @attr, "-" )[1] = "foo"]</code> Només funciona en XPath 2.0</td>
		</tr>
		<tr>
			<td><code>//e[@attr = "foo" or starts-with( @lang, concat( "foo", "-" ) )]</code></td>
		</tr>
		<tr>
			<td rowspan="2">Qualsevol element <span class="element">/e</span> amb un atribut <span class="attribute">@class</span> amb valor “foo”.</td>
			<td rowspan="2"><code>e.foo</code> (només en X/HTML)</td>
			<td><code>//e[tokenize( @class, "\s+" ) = "foo"]</code> Només funciona en XPath 2.0</td>
		</tr>
		<tr>
			<td><code>//e[contains( concat( " ", @class, " " ), concat( " ", "foo", " " ) )]</code></td>
		</tr>
		<tr>
			<td rowspan="2">Qualsevol element <span class="element">/e</span> amb un atribut <span class="attribute">@id</span> amb valor “foo”.</td>
			<td rowspan="2"><code>e#foo</code></td>
			<td><code>//e[@id="foo"]</code></td>
		</tr>
		<tr>
			<td><code>id("foo")</code></td>
		</tr>
		<tr>
			<td>Qualsevol element <span class="element">/e</span> que no tingui cap fill <span class="element">/f</span></td>
			<td>No existeix en CSS 2.1</td>
			<td><code>//e[not( f )]</code></td>
		</tr>
		<tr>
			<td>Qualsevol element <span class="element">/e</span> que no tingui cap atribut <span class="attribute">@attr</span></td>
			<td>No existeix en CSS 2.1</td>
			<td><code>//e[not( @attr )]</code></td>
		</tr>
		<tr>
			<td>Qualsevol element <span class="element">/e</span> o <span class="element">/f</span></td>
			<td><code>e, f</code></td>
			<td><code>//e | //f</code></td>
		</tr>
		<tr>
			<td>La primera lletra d'un element <span class="element">/e</span></td>
			<td><code>e:first-letter</code></td>
			<td>No existeix en XPath 2.0</td>
		</tr>
		<tr>
			<td>La primera línia d'un element <span class="element">/e</span></td>
			<td><code>e:first-line</code></td>
			<td>No existeix en XPath 2.0</td>
		</tr>
	</tbody>
</table>
<p>XPath no té equivalent per cap pseudo-classe degut a que està pensat per seleccionar nodes i atributs d'un arbre existent, no pas d'estats ni d'slots computats (com passa amb els pseudo-elements).</p>

<h3>Recursos relacionats</h3>
<ul>
	<li><a href="http://www.w3.org/TR/CSS21/selector.html" hreflang="en" xml:lang="en">Selectors, Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification</a></li>
	<li><a href="http://www.w3.org/TR/2007/REC-xpath20-20070123/" hreflang="en" xml:lang="en">XML Path Language (XPath) 2.0</a></li>
	<li><a href="http://plasmasturm.org/log/444/" hreflang="en" xml:lang="en">How to map CSS selectors to XPath queries</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/relacio-de-selectors-xpath-i-css/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Primer HTML5, primer problema</title>
		<link>http://blog.esbudellat.net/primer-html5-primer-problema/</link>
		<comments>http://blog.esbudellat.net/primer-html5-primer-problema/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 08:26:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[css]]></category>

		<category><![CDATA[xhtml]]></category>
<category>compatibilitat</category><category>css</category><category>error</category><category>html</category><category>html5</category><category>safari</category><category>xhtml</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/primer-html5-primer-problema/</guid>
		<description><![CDATA[Problemes de renderització d'HTML5 en Safari 3]]></description>
			<content:encoded><![CDATA[<p>Tot i que moltes coses de X/HTML 5 no m'agraden, he començat a fer alguna prova.</p>
<p><a href="http://html5.esbudellat.net/html5.html">El primer HTML5 que he fet</a> m'ha permès veure que:</p>
<ul>
	<li>Si no tanques un element (a l'exemple un element <span class="element">/p</span>) i aquest té estils associats, en Safari els següents nodes hereden les propietats heredables.</li>
	<li>No sembla haver-hi efecte dels pseudo-elements <code>:before</code> i <code>:after</code> en elements nous tals com el <span class="element">/footer</span></li>
</ul>
<p>Així doncs, quan s'omplen la boca de que mantenen la compatibilitat enrere, exactament què volen dir?</p>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/primer-html5-primer-problema/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Deficiència al model de taula de CSS amb @colspan i @rowspan</title>
		<link>http://blog.esbudellat.net/deficiencia-al-model-de-taula-de-css-amb-colspan-i-rowspan/</link>
		<comments>http://blog.esbudellat.net/deficiencia-al-model-de-taula-de-css-amb-colspan-i-rowspan/#comments</comments>
		<pubDate>Sat, 28 Jun 2008 20:36:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[css]]></category>

		<category><![CDATA[xhtml]]></category>

		<category><![CDATA[xml]]></category>
<category>css</category><category>deficiència</category><category>error</category><category>especificació</category><category>flux</category><category>futur</category><category>html</category><category>layout</category><category>model</category><category>taules</category><category>xhtml</category><category>xml</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/deficiencia-al-model-de-taula-de-css-amb-colspan-i-rowspan/</guid>
		<description><![CDATA[Explicació de la deficiència per modelar taules que no siguin X/HTML mitjançant CSS.]]></description>
			<content:encoded><![CDATA[<p>Independentment de si se'ls considera atributs de presentació o semàntics, el comportament dels atributs <span class="attribute">@colspan</span> i <span class="attribute">@rowspan</span> no són replicables en un marcatge que no sigui X/HTML.</p>
<p>A l'especificació de CSS 2.1 es pot llegir:</p>
<blockquote cite="http://www.w3.org/TR/CSS21/tables.html#table-layout" xml:lang="en">
<p>Cells may span several rows or columns. (Although CSS 2.1 doesn't define how the number of spanned rows or columns is determined, a user agent may have special knowledge about the source document; a future update of CSS may provide a way to express this knowledge in CSS syntax.)</p>
<p class="citacio"><a href="http://www.w3.org/TR/CSS21/tables.html#table-layout" hreflang="en">Table Layout</a> (CSS 2.1 Specification)</p>
</blockquote>
<p>És a dir, existeix una deficiència greu al model de taula de CSS 2.1 que potser quan aparegui el primer esborrany del mòdul de taules de CSS 3 arreglen.</p>
<p>De moment aquesta deficiència és suficient com per no permetre que en un marcatge tan estès com DocBook es puguin fer taules cobrint tots els possibles casos.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/deficiencia-al-model-de-taula-de-css-amb-colspan-i-rowspan/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Noms de classe ambigus</title>
		<link>http://blog.esbudellat.net/noms-de-classe-ambigus/</link>
		<comments>http://blog.esbudellat.net/noms-de-classe-ambigus/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 17:35:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[css]]></category>
<category>class</category><category>css</category><category>escapat</category><category>html</category><category>navegadors</category><category>problema</category><category>selector</category><category>xhtml</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/noms-de-classe-ambigus/</guid>
		<description><![CDATA[Explicació d'un problema mal explicat a les especificacions de CSS i HTML sobre l'ús de classes amb punts]]></description>
			<content:encoded><![CDATA[<p>L'atribut d'X/HTML <span class="attribute">@class</span> té una aplicació ambigua al usar el selector resumit de CSS.</p>
<p>L'especificació d'HTML 4.01 defineix el contingut de l'atribut <span class="attribute">@class</span> com un <a href="http://www.w3.org/TR/html401/types.html#type-cdata" hreflang="en">cdata-list</a>:</p>
<blockquote cite="http://www.w3.org/TR/html401/types.html#type-cdata" xml:lang="en">
<p>
	<strong>CDATA</strong> is a sequence of characters from
	the document character set and may include character entities. User agents
	should interpret attribute values as follows: 
</p>
<ul>
	<li>Replace character entities with characters,</li>
	<li>Ignore line feeds,</li>
	<li>Replace each carriage return or tab with a single space.</li>
</ul>
<p>
	User agents may ignore leading and trailing white space in CDATA attribute
	values (e.g., "&nbsp;&nbsp;&nbsp;myval&nbsp;&nbsp;&nbsp;" may be interpreted as
	"myval"). Authors should not declare attribute values with leading or trailing
	white space.
</p>
	<p class="citacio"><a href="http://www.w3.org/TR/html401/types.html#type-cdata" hreflang="en">SGML basic types</a> (HTML 4.01 Specification)</p>
</blockquote>
<p>És a dir, un token CDATA permèt qualsevol caràcter i es llista separant amb un espai:</p>
<blockquote cite="http://www.w3.org/TR/html401/struct/global.html#adef-class" xml:lang="en">
<p>This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters.</p>
<p class="citacio"><a href="http://www.w3.org/TR/html401/struct/global.html#adef-class" hreflang="en">Element identifiers: the id and class attributes</a> (HTML 4.01 Specification)</p>
</blockquote>

<p>El selector CSS més habitual per un atribut <span class="attribute">@class</span> d'X/HTML és amb la forma <code>.valor</code> en comptes del selector d'atribut <code>node[class~=valor]</code>.</p>
<p>A més a més, tal com diu l'especificació de CSS:</p>
<blockquote cite="http://www.w3.org/TR/CSS21/selector.html#class-html" xml:lang="en">
	<p>To match a subset of "class" values, each value must be preceded
	by a ".".</p>
	<p>For example, the following rule matches any P element whose "class" attribute
	has been assigned a list of space-separated values that includes "pastoral"
	and "marine":</p>
	<pre> 
p.marine.pastoral { color: green }
	</pre>
	<p>This rule matches when <samp>class="pastoral blue aqua
	marine"</samp> but does not match for <samp>class="pastoral
	blue"</samp>.</p>
<p class="citacio"><a href="http://www.w3.org/TR/CSS21/selector.html#class-html" hreflang="en">Class selectors</a> (CSS 2.1 Specification)</p>
</blockquote>
<p>És a dir, que els selectors de classe es poden combinar sense problema.</p>
<p>El problema apareix aquí, en CSS el punt (.) és un caràter reservat mentre que en X/HTML no.</p>
<p>Donat el següent XHTML:</p>
<pre><code class="xml">
&lt;p class="dc title"&gt;
   lorem ipsum...
&lt;/p&gt;
&lt;p class="dc.title"&gt;
   lorem ipsum...
&lt;/p&gt;
</code></pre>
<p>La regla:</p>
<pre><code class="css">
.dc.title {
   background: orange;
}
</code></pre>
<p>Només aplica <strong>al primer</strong> paràgraf ja que s'està seleccionant un element que tingui un atribut <span class="attribute">@class</span> amb dos token CDATA (“dc” i “title”)</p>
<p>El segon cas, al ser un token que conté un punt (.) cal escapar-lo:</p>
<pre><code class="css">
.dc\.title {
   background: orange;
}
</code></pre>
<p><a href="/exemples/classes-ambigues.html">L'exemple en funcionament</a>.</p>
<table summary="taula de resultats de l'ús de selectors de classe amb un punt escapat" class="suport">
<caption>Resultat dels navegadors</caption>
<thead>
	<tr>
		<th scope="col">Navegador</th>
		<th scope="col">Windows</th>
		<th scope="col">Mac</th>
		<th scope="col">Linux</th>
		<th scope="col">Mòbil</th>
	</tr>
</thead>
<tfoot>
	<tr>
		<td colspan="5">Si ho proveu en algun navegador que no estigui aquí llistat us agrairia que <a href="/contactar/">m'informessiu del resultat</a></td>
	</tr>
</tfoot>
<tbody>

	<tr>
		<th scope="row">Firefox 2.0.0.13</th>
		<td>sí</td>
		<td>Sí</td>
		<td>Sí</td>
		<td>-</td>

	</tr>
	<tr>
		<th scope="row">Firefox 3</th>
		<td>Sí</td>
		<td>Sí</td>
		<td>Sí</td>
		<td>-</td>

	</tr>
	<tr>
		<th scope="row">Opera 9.5</th>
		<td>Sí</td>
		<td>Sí</td>
		<td>?</td>
		<td>-</td>

	</tr>
	<tr>
		<th scope="row">Opera Mini Simulator</th>
		<td>-</td>
		<td>-</td>
		<td>-</td>
		<td>Sí</td>

	</tr>
	<tr>
		<th scope="row">Safari 3.1</th>
		<td>Sí</td>
		<td>Sí</td>
		<td>-</td>
		<td>-</td>

	</tr>
	<tr>
		<th scope="row">Safari Mobile 1.1.1</th>
		<td>-</td>
		<td>-</td>
		<td>-</td>
		<td>Sí</td>

	</tr>
	<tr>
		<th scope="row">Camino 1.5.5</th>
		<td>-</td>
		<td>No</td>
		<td>-</td>
		<td>-</td>

	</tr>
	<tr>
		<th scope="row">Internet Explorer 6</th>
		<td><a href="#ie6-parcial">Parcial<sup>†</sup></a></td>
		<td>-</td>
		<td>-</td>
		<td>-</td>

	</tr>
	<tr>
		<th scope="row">Internet Explorer 7</th>
		<td>Sí</td>
		<td>-</td>
		<td>-</td>
		<td>-</td>

	</tr>
	<tr>
		<th scope="row">Internet Explorer 8b1</th>
		<td>Sí</td>
		<td>-</td>
		<td>-</td>
		<td>-</td>

	</tr>
</tbody>
</table>
<p id="ie6-parcial"><sup>†</sup> Internet Explorer 6 no suporta els selectors de classe combinats però sí l'escapat del punt (.).</p>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/noms-de-classe-ambigus/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
