<?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>Sat, 25 Apr 2009 10:34:54 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Llenguatge natural en nodes de tipus atribut</title>
		<link>http://blog.esbudellat.net/llenguatge-natural-en-nodes-de-tipus-atribut/</link>
		<comments>http://blog.esbudellat.net/llenguatge-natural-en-nodes-de-tipus-atribut/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 10:34:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://blog.esbudellat.net/llenguatge-natural-en-nodes-de-tipus-atribut/</guid>
		<description><![CDATA[El contingut permès en un node de tipus atribut és text sense format, la qual cosa és útil per valors tancats o per tipus de valors sense ambigüitat (xs:anyURI, xs:QName, etc) però en el cas de valors de llenguatge natural apareixen deficiències.

	No es pot marcar un idioma diferent per l'atribut i pel contingut de l'element [...]]]></description>
			<content:encoded><![CDATA[<p>El contingut permès en un node de tipus atribut és text sense format, la qual cosa és útil per valors tancats o per tipus de valors sense ambigüitat (<code>xs:anyURI</code>, <code>xs:QName</code>, etc) però en el cas de valors de llenguatge natural apareixen deficiències.</p>
<ul>
	<li>No es pot marcar un idioma diferent per l'atribut i pel contingut de l'element pare.</li>
	<li>No es pot marcar canvi d'idioma en un fragment.</li>
	<li>La internacionalització no és possible en tots els idiomes i grafies. Per exemple les grafies que necessiten marcar elements compostos mitjançant <a href="http://www.w3.org/TR/ruby/" hreflang="en">ruby</a>.</li>
</ul>
<p>En X/HTML el problema es pot notar en atributs com <span class="attribute">@title</span> o <span class="attribute">@alt</span>.</p>
<p>En RDFa el problema apareix en l'atribut <span class="attribute">@content</span> tot i que la definició diu que és per allotjar un text <em xml:lang="en">machine-readable</em> el resultat pot ser deficient en algun cas.</p>

<p>Per altre banda, un atribut té la virtud de ser molt compacte i de considerar-se implícitament, a parer meu, una metadada de l'element pare.</p>
<p>Agafant el cas de l'atribut <span class="attribute">@title</span> d'X/HTML i fent l'exercici de convertir-lo a element per solucionar els problemes mencionats s'obté quelcom tipus:</p>
<pre><code class="xml">
&lt;abbr&gt;
  &lt;title&gt;eXtensible Markup Language&lt;/title&gt;
  XML
&lt;/abbr&gt;
</code></pre>
<p>El problema d'una estructura com aquesta és que no és distingible el contingut del metacontingut. En <a href="http://purl.oclc.org/NET/dml/1.0/" hreflang="en">DML</a>, aprofitant que qualsevol element pot dur un contenidor per metadades es pot expressar com:</p>
<pre><code class="xml">
&lt;abbr&gt;
  &lt;metadata&gt;
    &lt;span property="dct:description"&gt;eXtensible Markup Language&lt;/span&gt;
  &lt;/metadata&gt;
  XML
&lt;/abbr&gt;
</code></pre>
<p>Fins i tot es pot estendre a quelcom tipus:</p>
<pre><code class="xml">
&lt;abbr&gt;
  &lt;metadata&gt;
    &lt;list typeof="rdf:Alt"&gt;
      &lt;item property="dct:description" xml:lang="en"&gt;eXtensible Markup Language&lt;/item&gt;
      &lt;item property="dct:description" xml:lang="ca"&gt;Llenguatge de marcatge extensible&lt;/item&gt;
    &lt;/list&gt;
  &lt;/metadata&gt;
  XML
&lt;/abbr&gt;
</code></pre>
<p>Tot i permetre expressar molt més, la verbositat augmenta extraordinariament, la qual cosa no ajuda a la legibilitat del document.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/llenguatge-natural-en-nodes-de-tipus-atribut/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Definició d'RDF</title>
		<link>http://blog.esbudellat.net/definicio-rdf/</link>
		<comments>http://blog.esbudellat.net/definicio-rdf/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 17:15:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[rdf]]></category>

		<guid isPermaLink="false">http://blog.esbudellat.net/rdf-2/</guid>
		<description><![CDATA[RDF (Resource Description Framework) és un model de dades per representar informació sobre recursos basat en assercions en forma de tripla: (subject, predicate, object)
.
Tot i que el W3C recomana l'ús d'RDF/XML com a representació del model, es poden usar altres formes, ja siguin grafs, N3, RDFa, etc.
Per exemple, per relacionar la citació del títol d'un [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.w3.org/TR/rdf-mt/" hreflang="en">RDF (<em xml:lang="en">Resource Description Framework</em>)</a> és un model de dades per representar informació sobre recursos basat en assercions en forma de tripla: <code>(<var xml:lang="en">subject</var>, <var xml:lang="en">predicate</var>, <var xml:lang="en">object</var>)
</code>.</p>
<p>Tot i que el W3C recomana l'ús d'RDF/XML com a representació del model, es poden usar altres formes, ja siguin grafs, N3, RDFa, etc.</p>
<p>Per exemple, per relacionar la citació del títol d'un llibre amb el seu corresponent ISBN es pot fer usant el vocabulari definit per Dublin Core concretament amb la propietat <a href="http://dublincore.org/documents/dcmi-terms/#terms-source"><code>source</code></a>. Expressat com a graf:</p>

<!--[if !IE]> <-->
<object data="/exemples/example-isbn-graph.svg" type="image/svg+xml" width="494" height="38">
	<p class="imatgeIlustrativa"><img src="/exemples/example-isbn-graph.png" alt="" /></p>

</object>
<!--> <![endif]-->
<!--[if IE]>
	<p class="imatgeIlustrativa"><img src="/exemples/example-isbn-graph.png" alt="" /></p>
<![endif]-->

<p>Com a RDF/XML:</p>
<pre><code class="xml">
&lt;rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:dct="http://purl.org/dc/terms/"&gt;
  &lt;rdf:Description rdf:about="urn:ISBN:0-596-00263-7"&gt;
    &lt;dct:source&gt;Practical RDF&lt;/dct:source&gt;
  &lt;/rdf:Description&gt;
&lt;/rdf:RDF&gt;
</code></pre>
<p>Com a N3:</p>
<pre><code class="n3">
@prefix dct: &lt;http://purl.org/dc/terms/&gt; .
&lt;urn:ISBN:0-596-00263-7&gt; dct:source "Practical RDF" .
</code></pre>
<p>I com a XHTML+RDFa</p>
<pre><code class="xml">
&lt;html xmlns="http://www.w3.org/1999/xhtml" 
  xmlns:dct="http://purl.org/dc/terms/"&gt;
(…)
&lt;em about="urn:ISBN:0-596-00263-7" property="dct:source"&gt;
  Practical RDF
&lt;/em&gt;
(…)
&lt;/html&gt;
</code></pre>

<p>Tots aquest exemples són representacions equivalents del mateix model RDF. Tots ells acaben generant la mateixa tripla: <code>(urn:ISBN:0-596-00263-7, http://purl.org/dc/terms/source, Practical RDF)</code>.</p>


<h3>Recursos relacionats</h3>
<ul>
	<li><a href="http://www.w3.org/TR/rdf-mt/" hreflang="en" xml:lang="en">RDF Semantics</a>. W3C. 2004.</li>
	<li><a href="http://www.w3.org/TR/rdf-concepts/" hreflang="en" xml:lang="en">Resource Description Framework (RDF): Concepts and Abstract Syntax</a>. W3C. 2004.</li>
	<li><a href="http://www.w3.org/TR/rdf-primer/" hreflang="en" xml:lang="en">RDF Primer</a>. W3C. 2004.</li>
	<li><a href="http://www.w3.org/TR/rdf-syntax-grammar/" hreflang="en" xml:lang="en">RDF/XML Syntax Specification (Revised)</a>. W3C. 2004.</li>
	<li><a href="http://www.w3.org/TR/rdfa-syntax/" hreflang="en" xml:lang="en">RDFa in XHTML: Syntax and Processing</a>. W3C. 2008.</li>
	<li><a href="http://www.w3.org/TR/xhtml-rdfa-primer/" hreflang="en" xml:lang="en">RDFa Primer</a>. W3C. 2008.</li>
	<li><a href="http://www.w3.org/TR/xml-infoset/" hreflang="en" xml:lang="en">XML Information Set</a>. W3C. 2004.</li>
	<li><a href="http://www.w3.org/DesignIssues/Notation3" hreflang="en" xml:lang="en">Notation 3 (N3) A readable RDF syntax</a>. T. Berners-Lee. 2006.</li>
	<li><a href="http://www.w3.org/2000/10/swap/doc/" hreflang="en" xml:lang="en">Semantic Web Tutorial Using N3</a>. T. Berners-Lee, Sandro Hawke, Dan Connolly. 2004.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/definicio-rdf/feed/</wfw:commentRss>
		</item>
		<item>
		<title>XInclude i XPointer</title>
		<link>http://blog.esbudellat.net/xinclude-i-xpointer/</link>
		<comments>http://blog.esbudellat.net/xinclude-i-xpointer/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 23:15:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[xml]]></category>

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

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

		<guid isPermaLink="false">http://blog.esbudellat.net/gestio-de-documents-xml-amb-xinclude/</guid>
		<description><![CDATA[XInclude és la forma que proporciona el W3C per inserir documents XML o text dins de documents XML obtenint un únic infoset. Amb l'ajuda d'XPointer es poden inserir fragments d'un document XML (inclusive ell mateix sempre que no sigui una crida recursiva infinita).
A diferència de les entitats DTD que cal primer definir i després invocar, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.w3.org/TR/xinclude/" hreflang="en" xml:lang="en">XInclude</a> és la forma que proporciona el W3C per inserir documents XML o text dins de documents XML obtenint un únic <a href="http://www.w3.org/TR/xml-infoset/" hreflang="en">infoset</a>. Amb l'ajuda d'<a href="http://www.w3.org/TR/xptr-framework/" hreflang="en" xml:lang="en">XPointer</a> es poden inserir fragments d'un document XML (inclusive ell mateix sempre que no sigui una crida recursiva infinita).</p>
<p>A diferència de les <a href="http://www.w3.org/TR/REC-xml/#dt-entref" hreflang="en">entitats DTD</a> que cal primer definir i després invocar, <em xml:lang="en">XInclude</em> permet invocar directament mitjançant l'atribut <span class="attribute">@href</span> combinable amb l'atribut <span class="attribute">@xpointer</span>.</p>
<p>A més a més, si una entitat falla en el procés de substitució habitualment resulta en un error fatal. <em xml:lang="en">XInclude</em> proporciona un procés de recuperació de l'error mitjançant l'element <span class="element">/xi:fallback</span> el pot contenir un fragment XML o un element <span class="element">/xi:include</span> que faci una crida alternativa a l'element <span class="element">/xi:include</span> inicial. És a dir, donat un XML tal que:</p>
<pre><code class="xml">
&lt;dml
  xmlns="http://purl.oclc.org/NET/dml/1.0"
  xmlns:xi="http://www.w3.org/2001/XInclude"&gt;
  &lt;xi:include href="chapter-1.xml"&gt;
    &lt;xi:fallback&gt;
      &lt;p&gt;Contingut alternatiu a la inserció fallida.&lt;/p&gt;
    &lt;/xi:fallback&gt;
  &lt;/xi:include&gt;
&lt;/dml&gt;
</code></pre>

<p>Si falla la crida a l'arxiu <code>"chapter-1.xml"</code>, l'infoset resultant contindrà el paràgraf amb el text, mentre que amb:</p>

<pre><code class="xml">
&lt;dml
  xmlns="http://purl.oclc.org/NET/dml/1.0"
  xmlns:xi="http://www.w3.org/2001/XInclude"&gt;
  &lt;xi:include href="chapter-1.xml"&gt;
    &lt;xi:fallback&gt;
      &lt;xi:include href="chapter-fallback-1.xml"/&gt;
    &lt;/xi:fallback&gt;
  &lt;/xi:include&gt;
&lt;/dml&gt;
</code></pre>

<p>Si falla la crida a l'arxiu <code>"chapter-1.xml"</code>, s'intenta la crida a l'arxiu <code>"chapter-fallback-1.xml"</code> i si aquesta crida falla, com que no té cap element <span class="element">/xi:fallback</span> definit, el resultat és un error fatal.</p>

<p><em xml:lang="en">XPointer</em> és un sistema que permet referenciar un punt concret (més enllà dels nodes) d'un document XML mitjançant la sintaxi d'<em xml:lang="en">XPath</em> 1.0 ampliada.</p>
<p>Per poder fer aquestes referencies l'<em xml:lang="en">XPointer Framework</em> defineix els esquemes <code>xpointer()</code>, <code>id()</code>, <code>element()</code> i <code>xmlns()</code>.</p>
<p>Per exemple, donat un document <code>"chapter-1.xml"</code> tal que:</p>
<pre><code class="xml">
&lt;dml xmlns="http://purl.oclc.org/NET/dml/1.0"&gt;
  &lt;section id="intro"&gt;
    &lt;title&gt;Introducció&lt;/title&gt;
    &lt;p&gt;Lorem ipsum dolor sit amet&lt;/p&gt;
    ( … )
  &lt;/section&gt;
  &lt;section id="seccio-1"&gt;
    &lt;title&gt;secció 1&lt;/title&gt;
    &lt;p&gt;Lorem ipsum dolor sit amet&lt;/p&gt;
    ( … )
  &lt;/section&gt;
  ( … )
&lt;/dml&gt;
</code></pre>
<p>Fent una crida des del document inicial tal que:</p>
<pre><code class="xml">
&lt;dml
  xmlns="http://purl.oclc.org/NET/dml/1.0"
  xmlns:xi="http://www.w3.org/2001/XInclude"&gt;
    &lt;title&gt;Document inicial&lt;/title&gt;
    &lt;xi:include href="chapter-1.xml" xpointer="xpointer(/dml/section)"/&gt;
&lt;/dml&gt;
</code></pre>
<p>El resultat és:</p>
<pre><code class="xml">
&lt;dml
  xmlns="http://purl.oclc.org/NET/dml/1.0"
  xmlns:xi="http://www.w3.org/2001/XInclude"&gt;
    &lt;title&gt;Document inicial&lt;/title&gt;
  &lt;section id="intro"&gt;
    &lt;title&gt;Introducció&lt;/title&gt;
    &lt;p&gt;Lorem ipsum dolor sit amet&lt;/p&gt;
    ( … )
  &lt;/section&gt;
&lt;/dml&gt;
</code></pre>
<p>Alternativament es pot fer:</p>
<pre><code class="xml">
&lt;xi:include href="chapter-1.xml" xpointer="id('intro')"/&gt;
</code></pre>
<pre><code class="xml">
&lt;xi:include href="chapter-1.xml" xpointer="element(/1/1)"/&gt;
</code></pre>
<p>En síntesi, l'esquema <code>id()</code> permet fer crides a un identificador del document. Si la crida no té alternativa, és simplificable a:</p>
<pre><code class="xml">
&lt;xi:include href="chapter-1.xml" xpointer="intro"/&gt;
</code></pre>
<p>L'esquema <a href="http://www.w3.org/TR/xptr-element/" hreflang="en"><code>element()</code></a> permet apuntar per posició del node. És una forma simplificada de:</p>
<pre><code class="xml">
&lt;xi:include href="chapter-1.xml" xpointer="xpointer(/*[1]/*[1])"/&gt;
</code></pre>

<p>Una sóla crida XPointer pot contenir més d'una opció a mode d'alternativa en cas de fallar la primera:</p>
<pre><code class="xml">
&lt;xi:include href="chapter-1.xml" xpointer="id('intro') xpointer(/dml/section[1]) element(/1/1)"/&gt;
</code></pre>
<p>D'aquesta manera, si l'identificador <code>"intro"</code> no existeix actua l'esquema <code>xpointer()</code> i si, per exemple, l'element arrel ja no es diu <code>"dml"</code>, actua l'esquema <code>element()</code> obtenint el primer element fill de l'element root.</p>
<p>L'esquema <code>xmlns()</code> permet definir espais de noms associats als elements seleccionats.</p>

<p>Els processador més comú amb un bon suport d'<em xml:lang="en">XInclude</em> i d'<em xml:lang="en">XPointer</em> és <a href="http://xmlsoft.org/XSLT/xsltproc2.html" hreflang="en">xsltproc</a>.</p>
<p><a href="http://saxon.sourceforge.net/">Saxon</a> no suporta <em xml:lang="en">XPointer</em> cosa que redueix molt la potència d'<em xml:lang="en">XInclude</em>.</p>

<p>N'Erik Wilde va fer <a href="http://dret.net/projects/xipr/" hreflang="en">XIPr</a> el qual implementa l'esquema <code>element()</code> mitjançant XSLT 2.0.</p>
<p>Això em va donar la idea d'intentar implementar l'esquema <code>xpointer()</code> mitjançant XSLT 2.0. El projecte, <a href="http://github.com/arnau/xiproc/tree/master">XIProc</a>, de moment només implementa els quatre selectors més comuns d'<em xml:lang="en">XPath</em>.</p>

<h3>Recursos relacionats</h3>
<ul>
	<li><a href="http://www.w3.org/TR/2006/REC-xinclude-20061115/" hreflang="en" xml:lang="en">XML Inclusions (XInclude) Version 1.0 (Second Edition)</a>. W3C. 2006.</li>
	<li><a href="http://www.w3.org/TR/2003/REC-xptr-framework-20030325/" hreflang="en" xml:lang="en">XPointer Framework</a>. W3C. 2003.</li>
	<li><a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204" hreflang="en" xml:lang="en">XML Information Set (Second Edition)</a>. W3C. 2004.</li>
	<li><a href="http://dret.net/projects/xipr/" hreflang="en" xml:lang="en">XIPr (XInclude Processor)</a>. Erik Wilde.</li>
	<li><a href="http://github.com/arnau/xiproc/tree/master" hreflang="en" xml:lang="en">XIProc (XSLT XInclude Processor)</a></li>
	<li><a href="http://commons.oreilly.com/wiki/index.php/XPath_and_XPointer/XPointer_Background" hreflang="en" xml:lang="en">XPath and XPointer/XPointer Background</a>. J. E. Simpson. 2002.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/xinclude-i-xpointer/feed/</wfw:commentRss>
		</item>
		<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>
	</channel>
</rss>
