<?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>Tue, 10 Aug 2010 06:59:47 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Alertes de log4j en FOP</title>
		<link>http://blog.esbudellat.net/alertes-de-log4j-en-fop/</link>
		<comments>http://blog.esbudellat.net/alertes-de-log4j-en-fop/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 06:41:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[off topic]]></category>
<category>apache</category><category>configuració</category><category>fop</category><category>log</category><category>log4j</category><category>pdf</category><category>xml</category><category>xsl</category><category>xsl-fo</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/alertes-de-log4j-en-fop/</guid>
		<description><![CDATA[Recepta de configuració de log4j per al bon funcionament de FOP.]]></description>
			<content:encoded><![CDATA[<p>Si no es configura <a href="http://logging.apache.org/log4j/1.2/" hreflang="en">log4j</a>, a l'usar <a href="http://xmlgraphics.apache.org/fop/" hreflang="en">FOP</a> per transformar un XSL-FO a PDF apareix una alerta de <em>log4j</em> en comptes de les alertes de <em>FOP</em>.</p>
<pre><code>
$ fop input.fo output.pdf
log4j:WARN No appenders could be found for logger (org.apache.fop.util.ContentHandlerFactoryRegistry).
log4j:WARN Please initialize the log4j system properly.
</code></pre>
<p>Una recepta per configurar <em>log4j</em>:</p>
<ol>
  <li>Crear un <a href="#log4j-properties">fitxer de configuració</a> de <em>log4j</em> anomenat <code>log4j-properties.xml</code>.</li>
  <li>Ubicar el fitxer <code>log4j-properties.xml</code> dins l'àmbit del <code>CLASSPATH</code>.</li>
  <li>Afegir al <code>.bashrc</code>: <code>export LOG4J_OPTS="-Dlog4j.configuration=/path/for/log4j/log4j-properties.xml"</code>.</li>
</ol>
<pre id="log4j-properties"><code class="xml">
&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"&gt;
&lt;log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"&gt;
  &lt;appender name="console" class="org.apache.log4j.ConsoleAppender"&gt;
    &lt;layout class="org.apache.log4j.PatternLayout"&gt;
    &lt;/layout&gt;
  &lt;/appender&gt;
  &lt;appender name="logfile" class="org.apache.log4j.FileAppender"&gt;
    &lt;layout class="org.apache.log4j.PatternLayout"&gt;
    &lt;/layout&gt;
  &lt;/appender&gt;
  &lt;!-- ALL | DEBUG | INFO | WARN | ERROR | FATAL | OFF 
  &lt;root&gt;
    &lt;priority value ="warn" /&gt;
    &lt;appender-ref ref="console" /&gt;
    &lt;appender-ref ref="logfile" /&gt;
  &lt;/root&gt;
  --&gt;
  &lt;logger name="org.apache.fop"&gt;
    &lt;level value="warn"/&gt;
    &lt;appender-ref ref="console" /&gt;
  &lt;/logger&gt;
  &lt;logger name="org.apache.xmlgraphics"&gt;
    &lt;level value="warn"/&gt;
    &lt;appender-ref ref="console" /&gt;
  &lt;/logger&gt;
&lt;/log4j:configuration&gt;
</code></pre>

<h3>Recursos relacionats</h3>
<ul>
  <li><a href="http://wiki.apache.org/logging-log4j/Log4jXmlFormat" xml:lang="en">Log4j XML Format</a>. Logging-log4j Wiki.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/alertes-de-log4j-en-fop/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Variables d'entorn en sudo</title>
		<link>http://blog.esbudellat.net/variables-dentorn-en-sudo/</link>
		<comments>http://blog.esbudellat.net/variables-dentorn-en-sudo/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 11:33:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[shellscript]]></category>
<category>environment</category><category>linux</category><category>sudo</category><category>sudoers</category><category>ubuntu</category><category>unix</category><category>variable</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/variables-dentorn-en-sudo/</guid>
		<description><![CDATA[Com permetre variables d'entorn per un usuari en modalitat sudo.]]></description>
			<content:encoded><![CDATA[<p>Les variables d'entorn definides (p.ex. <code>PATH</code>, <code>CLASSPATH</code>, <code>RUBYOPT</code>) només estan disponibles pels usuaris permesos en funció de quin fitxer s'ha usat per definir-les. En el moment que aquest usuari entra en mode <code>sudo</code> les variables d'entron deixen d'estar disponibles (en versions antigues de <code>sudo</code> això no era així). La sentència clau és:</p>
<pre><code class="bash">
Defaults env_reset
</code></pre>
<p>Per permetre la disponibilitat d'aquestes variables en mode <code>sudo</code> cal definir-ho al fitxer <code>/etc/sudoers</code>.</p>
<p>Una sentència tal que:</p>
<pre><code class="bash">
Defaults env_keep+="RUBYOPT"
</code></pre>
<p>Afegeix la variable <code>RUBYOPT</code> <em>per tots els usuaris</em>. Per acotar-ho a un usuari cal variar la sentència a:</p>
<pre><code class="bash">
Defaults:<var>Usuari</var> env_keep+="RUBYOPT"
</code></pre>
<p>Si per motius extranys cal que totes les variables d'entorn estiguin diponibles en <code>sudo</code> negant la sentència <code>Defaults env_reset</code> n'hi ha prou:</p>
<pre><code class="bash">
Defaults !env_reset
</code></pre>

<h3>Recursos relacionats</h3>
<ul>
  <li><a href="https://help.ubuntu.com/community/EnvironmentVariables" hreflang="en" xml:lang="en">Environment Variables</a>. Ubuntu documentation.</li>
  <li><a href="https://help.ubuntu.com/community/Sudoers" hreflang="en" xml:lang="en">Sudoers</a> Ubuntu documentation.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/variables-dentorn-en-sudo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nokogiri en Mac OS X 10.5</title>
		<link>http://blog.esbudellat.net/nokogiri-en-mac-os-x-105/</link>
		<comments>http://blog.esbudellat.net/nokogiri-en-mac-os-x-105/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 15:12:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[mac os x]]></category>

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

		<category><![CDATA[xml]]></category>
<category>bug</category><category>error</category><category>gem</category><category>libxml</category><category>libxslt</category><category>macosx</category><category>nokogiri</category><category>ruby</category><category>xml</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/nokogiri-en-mac-os-x-105/</guid>
		<description><![CDATA[Explicació de com actualitzar libxml en mac os x 10.5 i com usar aquesta actualització amb la gema Nokogiri.]]></description>
			<content:encoded><![CDATA[<h3>Problema</h3>
<p>Mac OS X 10.5 duu de sèrie <a href="http://xmlsoft.org/" hreflang="en">libxml</a> 2.6.16 i <a href="http://xmlsoft.org/XSLT/" hreflang="en">libxslt</a> 1.1.12, versions que en el moment d'escriure aquest article tenen uns quatre anys d'antiguitat.</p>
<p>La gema ruby <a href="http://nokogiri.org/">Nokogiri</a> permet usar libxml i libxslt des de Ruby 1.8 o 1.9 de forma natural però cal que la versió de libxml sigui prou recent.</p>
<p>Si això no és així Nokogiri alerta amb un missatge clar:</p>
<blockquote xml:lang="en">
  <p>HI.  You're using libxml2 version 2.6.16 which is over 4 years old and has plenty of bugs.  We suggest that for maximum HTML/XML parsing pleasure, you upgrade your version of libxml2 and re-install nokogiri.  If you like using libxml2 version 2.6.16, but don't like this warning, please define the constant I_KNOW_I_AM_USING_AN_OLD_AND_BUGGY_VERSION_OF_LIBXML2 before requring nokogiri.</p>
</blockquote>
<p>A banda del missatge pot funcionar de forma imprevista degut a aquests <em xml:lang="en">bugs</em> de libxml.</p>
<p>Per exemple, si s'usa la classe <a href="http://nokogiri.org/Nokogiri/XML/RelaxNG.html"><code>Nokogiri::XML::RelaxNG</code></a>, segons documentació els errors s'allotgen en un <code>Array</code> anomenat <code>errors</code> on cada error és una instància de <code>Nokogiri::XML::SyntaxError</code>.</p>
<p>Usant libxml 2.6.16 el resultat és que els errors van directes a <code>stdout</code> i <code>errors</code> sempre està buit.</p>

<h3>Solució</h3>
<h4>Actualització de libxml i libxslt</h4>
<p>Per actualitzar la versió de libxml i libxslt en Mac OS X hi ha diverses alternatives; la menys intrusiva és instal·lar els paquets proporcionats per <a href="http://www.explain.com.au/oss/libxml2xslt.html" hreflang="en" xml:lang="en">libxml2, libxml2 Binaries</a>: Una imatge de disc amb els tres frameworks (libxml, libxslt i libexslt). Duu libxml 2.6.30 i libxslt 1.1.22 que tot i no ser la darrera versió és prou moderna.</p>

<p>La recepta (original de <a href="http://ripary.com/libxml2_leopoard.html" hreflang="en" xml:lang="en">Installing a Newer libxml2 on Mac OS X 10.5</a>):</p>
<ol>
  <li>Copiar <code>libxml.framework</code>, <code>libxslt.framework</code> i <code>libexslt.framework</code> a <code>/Library/Frameworks</code>.</li>
  <li>Copiar <code>xmllint</code>, <code>xsltproc</code> i <code>xmlcatalog</code> a <code>/usr/local/bin</code>.</li>
  <li>Crear enllaços a <code>/usr/local</code> dels <em xml:lang="en">scripts</em> de configuració, les biblioteques dinàmiques i les capçaleres. Per exemple amb un <em xml:lang="en">script</em> tal que:
<pre><code>
#!/bin/sh
sudo mkdir -p /usr/local/bin
cd /usr/local/bin
sudo ln -s /Library/Frameworks/libxml.framework/Resources/Scripts/*
sudo ln -s /Library/Frameworks/libxslt.framework/Resources/Scripts/*

sudo mkdir -p /usr/local/include
cd /usr/local/include
sudo ln -s /Library/Frameworks/libxml.framework/Headers libxml2
sudo ln -s /Library/Frameworks/libxslt.framework/Headers libxslt
sudo ln -s /Library/Frameworks/libexslt.framework/Headers libexslt

mkdir -p /usr/local/lib
cd /usr/local/lib
sudo ln -s /Library/Frameworks/libxml.framework/libxml libxml2.dylib
sudo ln -s /Library/Frameworks/libxslt.framework/libxslt libxslt.dylib
sudo ln -s /Library/Frameworks/libexslt.framework/libxslt libexslt.dylib

sudo mkdir -p /usr/local/man/man1
sudo mkdir -p /usr/local/man/man3
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.profile
echo 'export MANPATH=/usr/local/man:$MANPATH' >> ~/.profile
</code></pre>
  </li>
</ol>

<h4>Instal·lació de Nokogiri</h4>
<p>Cal instal·lar la gema assegurant que agafa els recursos nous i no els vells (com passa si s'instal·la la gema tal qual).</p>
<p>La recepta:</p>
<pre><code>
$ sudo gem install nokogiri -- --with-xml2-include=/usr/local/include/libxml2 --with-xml2-lib=/usr/local/lib --with-xslt-dir=/usr/local
</code></pre>

<h3>Test</h3>
<p>Aquest test permèt verificar que l'actualització de libxml i la instal·lació de Nokogiri donen un resultat satisfactòri.</p>
<pre><code class="ruby">
#!/usr/bin/env ruby
abort 'Usage: ruby relaxng_validate.rb &lt;version&gt;' if ARGV.empty?
nokogiri_version = ARGV[0]
require 'rubygems'
gem 'nokogiri', nokogiri_version
require 'nokogiri'
puts "Nokogiri version #{Nokogiri::VERSION}"

xml = &lt;&lt;EOXML
&lt;A/&gt;
EOXML

schema = &lt;&lt;EOSCHEMA
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;grammar xmlns="http://relaxng.org/ns/structure/1.0"&gt;
  &lt;start&gt;
    &lt;ref name="A"/&gt;
  &lt;/start&gt;
  &lt;define name="A"&gt;
    &lt;element name="A"&gt;
      &lt;interleave&gt;
        &lt;attribute name="B"/&gt;
        &lt;element name="C"&gt;
          &lt;text/&gt;
        &lt;/element&gt;
        &lt;element name="D"&gt;
          &lt;element name="E"&gt;
            &lt;text/&gt;
          &lt;/element&gt;
        &lt;/element&gt;
      &lt;/interleave&gt;
    &lt;/element&gt;
  &lt;/define&gt;
&lt;/grammar&gt;
EOSCHEMA

puts 'Loading xml...'
doc = Nokogiri::XML(xml)
puts 'Loading schema...'
relaxng = Nokogiri::XML::RelaxNG(schema)
puts 'Validating xml against schema...'
errors = relaxng.validate(doc)
puts "Errors.size = #{errors.size}"
errors.each { |error| puts "  Error: #{error}" }

puts 'Done.'
</code></pre>
<h3>Recursos relacionats</h3>
<ul>
  <li><a href="http://xmlsoft.org/" hreflang="en" xml:lang="en">The XML C parser and toolkit of Gnome</a>.</li>
  <li><a href="http://ripary.com/libxml2_leopoard.html" hreflang="en" xml:lang="en">Installing a Newer libxml2 on Mac OS X 10.5</a>. Robert Crews. 2009.</li>
  <li><a href="http://www.explain.com.au/oss/libxml2xslt.html" hreflang="en" xml:lang="en">libxml2, libxslt Binaries</a>. Explain. 2008.</li>
  <li><a href="http://nokogiri.org" hreflang="en" xml:lang="en">Nokogiri</a>.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/nokogiri-en-mac-os-x-105/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Article “La regla @font-face”</title>
		<link>http://blog.esbudellat.net/article-%e2%80%9cla-regla-font-face%e2%80%9d/</link>
		<comments>http://blog.esbudellat.net/article-%e2%80%9cla-regla-font-face%e2%80%9d/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 14:23:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[css]]></category>

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

		<guid isPermaLink="false">http://blog.esbudellat.net/?p=192</guid>
		<description><![CDATA[Recull d'eines de generació dels formats útils per treballar amb la regla @font-face de CSS.]]></description>
			<content:encoded><![CDATA[<p>Primera versió de l'article <a href="http://esbudellat.net/articles/font-face/">La regla <code>@font-face</code></a> on s'exposa la sintaxi de la regla <code>@font-face</code>, els diferents formats suportats i una sèrie d'eines de conversió.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/article-%e2%80%9cla-regla-font-face%e2%80%9d/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dades vinculades (Linked Data)</title>
		<link>http://blog.esbudellat.net/dades-vinculades-linked-data/</link>
		<comments>http://blog.esbudellat.net/dades-vinculades-linked-data/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 08:49:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[rdf]]></category>
<category>data</category><category>linked</category><category>rdf</category><category>semantic</category><category>sparql</category><category>tbl</category><category>w3c</category><category>web</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/dades-vinculades-linked-data/</guid>
		<description><![CDATA[Nota dels quatre principis de Linked Data.]]></description>
			<content:encoded><![CDATA[<p>Els quatre principis que en Tim Barners-Lee defineix al seu <a href="http://www.w3.org/DesignIssues/LinkedData.html" hreflang="en" xml:lang="en">Linked Data</a> (2006) són:</p>
<ol>
  <li>Usar URI per identificar coses.</li>
  <li>Usar HTTP URI per permetre que aquestes coses siguin ubicables.</li>
  <li>Proporcionar informació útil usant estàndards (RDF, SPARQL).</li>
  <li>Incloure enllaços a altres URI per permetre ubicar d'altres coses.</li>
</ol>

<p>Potser seria bo afegir un punt més que recomanés usar vocabularis coneguts sempre que sigui possible.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/dades-vinculades-linked-data/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Jerarquia de capçaleres en HTML5</title>
		<link>http://blog.esbudellat.net/jerarquia-de-capcaleres-en-html5/</link>
		<comments>http://blog.esbudellat.net/jerarquia-de-capcaleres-en-html5/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 12:43:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[xhtml]]></category>
<category>capçalera</category><category>header</category><category>html</category><category>jerarquia</category><category>w3c</category><category>xhtml</category><category>xml</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/jerarquia-de-capcaleres-en-html5/</guid>
		<description><![CDATA[Explicació del funcionament de capçaleres i jerarquia en l'esborrany d'HTML5]]></description>
			<content:encoded><![CDATA[<p>En HTML5 es consideren elements de capçalera els elements <a href="http://www.whatwg.org/specs/web-apps/current-work/#the-h1-h2-h3-h4-h5-and-h6-elements"><span class="element">h1</span>, <span class="element">h2</span>, <span class="element">h3</span>, <span class="element">h4</span>, <span class="element">h5</span>, <span class="element">h6</span></a> i <a href="http://www.whatwg.org/specs/web-apps/current-work/#the-hgroup-element"><span class="element">hgroup</span></a>. Aquest darrer element encara està en estat d'esborrany.</p>
<p>A efectes de jerarquia un element <span class="element">hgroup</span> representa la capçalera d'una secció implícita o explícita (<a href="http://www.whatwg.org/specs/web-apps/current-work/#the-section-element"><span class="element">section</span></a>) que conté una capçalera composta (<em xml:lang="la">i. e.</em> subtítols, títols alternatius o lemes).</p>

<p>El primer element de capçalera d'una secció representa la capçalera d'aquesta. Les següents capçaleres del mateix nivell o superior impliquen una nova secció; les capçaleres de menor nivell impliquen noves subseccions part de la secció explícita o implícita ancessora més propera.</p>
<p>Els elements <span class="element">blockquote</span>, <span class="element">body</span>, <span class="element">figure</span> i <span class="element">td</span> tenen la particularitat de ser <em xml:lang="en">sectioning root</em>; aquests elements encapsulen una jerarquia pròpia, independentment dels elements ancessors.</p>
<p>Exemple de seccions implícites:</p>
<pre><code class="xml">
&lt;body&gt;
  &lt;h1&gt;Foo&lt;/h1&gt;
  &lt;h2&gt;Bar&lt;/h2&gt;
  &lt;h2&gt;Bla&lt;/h2&gt;
&lt;/body&gt;
</code></pre>
<p>Exemple de seccions explícites:</p>
<pre><code class="xml">
&lt;body&gt;
  &lt;h1&gt;Foo&lt;/h1&gt;
  &lt;section&gt;
    &lt;h2&gt;Bar&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section&gt;
    &lt;h2&gt;Bla&lt;/h2&gt;
  &lt;/section&gt;
&lt;/body&gt;
</code></pre>
<p>Els exemples anteriors reflexen la mateixa jerarquia, amb seccions implícites o amb seccions explícites. L'element <span class="element">body</span> és una secció explícita.</p>
<p>En un exemple més complex, com el que proporciona l'especificació d'HTML5 es pot apreciar millor la complexitat de lectura i manteniment d'aquest sistema de jerarquia.</p>
<pre><code class="xml">
&lt;body&gt;
  &lt;h1&gt;Foo&lt;/h1&gt;
  &lt;h2&gt;Bar&lt;/h2&gt;
  &lt;blockquote&gt;
    &lt;h3&gt;Bla&lt;/h3&gt;
  &lt;/blockquote&gt;
  &lt;p&gt;Baz&lt;/p&gt;
  &lt;h2&gt;Quux&lt;/h2&gt;
  &lt;section&gt;
    &lt;h3&gt;Thud&lt;/h3&gt;
  &lt;/section&gt;
  &lt;p&gt;Grunt&lt;/p&gt;
&lt;/body&gt;
</code></pre>
<p>La jerarquia es pot descriure com:</p>
<ul>
  <li>Una secció explícita de tipus <span class="element">body</span> amb una capçalera "Foo" que conté dues seccions implícites: "Bar" i "Quux" i un paràgraf "Grunt".</li>
  <li>La secció implícita "Bar" conté una citació i un paràgraf "Baz".</li>
  <li>La secció implícita "Quux" conté una secció explícita de tipus <span class="element">section</span> amb una capçalera "Thud".</li>
</ul>
<p>La secció implícita "Bla" (l'element <span class="element">h3</span> fill de l'element <span class="element">blockquote</span>) no és part d'aquesta jerarquia ja que aquest element inicia la seva pròpia jeraquia.</p>

<p>La descripció anterior afirma que el paràgraf "Grunt" és part de la secció explícita de tipus <span class="element">body</span>. Això és degut a que la secció explícita "Thud" tanca la secció implícita "Quux".</p>

<p>Donat que una secció només pot contenir un element de capçalera els següents fragments són equivalents:</p>
<pre><code class="xml">
&lt;body&gt;
  &lt;h1&gt;Foo&lt;/h1&gt;
  &lt;section&gt;
    &lt;h2&gt;Bar&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section&gt;
    &lt;h2&gt;Bla&lt;/h2&gt;
  &lt;/section&gt;
&lt;/body&gt;
</code></pre>
<pre><code class="xml">
&lt;body&gt;
  &lt;h1&gt;Foo&lt;/h1&gt;
  &lt;section&gt;
    &lt;h3&gt;Bar&lt;/h3&gt;
  &lt;/section&gt;
  &lt;section&gt;
    &lt;h2&gt;Bla&lt;/h2&gt;
  &lt;/section&gt;
&lt;/body&gt;
</code></pre>
<pre><code class="xml">
&lt;body&gt;
  &lt;h1&gt;Foo&lt;/h1&gt;
  &lt;section&gt;
    &lt;h1&gt;Bar&lt;/h1&gt;
  &lt;/section&gt;
  &lt;section&gt;
    &lt;h1&gt;Bla&lt;/h1&gt;
  &lt;/section&gt;
&lt;/body&gt;
</code></pre>
<p>Confusió asegurada. Tot i així l'especificació anima als desenvolupadors a usar sempre seccions explícites i capçaleres <span class="element">h1</span>.</p>
<p>L'especificació il·lustra aquestes regles tan flexibles amb un parell d'exemples equivalents:</p>
<pre><code class="xml">
&lt;body&gt;
  &lt;h4&gt;Apples&lt;/h4&gt;
  &lt;p&gt;Apples are fruit.&lt;/p&gt;
  &lt;section&gt;
    &lt;h2&gt;Taste&lt;/h2&gt;
    &lt;p&gt;They taste lovely.&lt;/p&gt;
    &lt;h6&gt;Sweet&lt;/h6&gt;
    &lt;p&gt;Red apples are sweeter than green ones.&lt;/p&gt;
    &lt;h1&gt;Color&lt;/h1&gt;
    &lt;p&gt;Apples come in various colors.&lt;/p&gt;
  &lt;/section&gt;
&lt;/body&gt;
</code></pre>
<pre><code class="xml">
&lt;body&gt;
  &lt;h1&gt;Apples&lt;/h1&gt;
  &lt;p&gt;Apples are fruit.&lt;/p&gt;
  &lt;section&gt;
    &lt;h2&gt;Taste&lt;/h2&gt;
    &lt;p&gt;They taste lovely.&lt;/p&gt;
    &lt;section&gt;
      &lt;h3&gt;Sweet&lt;/h3&gt;
      &lt;p&gt;Red apples are sweeter than green ones.&lt;/p&gt;
    &lt;/section&gt;
  &lt;/section&gt;
  &lt;section&gt;
    &lt;h2&gt;Color&lt;/h2&gt;
    &lt;p&gt;Apples come in various colors.&lt;/p&gt;
  &lt;/section&gt;
&lt;/body&gt;
</code></pre>
<p>Seguint les regles es pot afegir un exemple equivalent:</p>
<pre><code class="xml">
&lt;body&gt;
  &lt;h1&gt;Apples&lt;/h1&gt;
  &lt;p&gt;Apples are fruit.&lt;/p&gt;
  &lt;section&gt;
    &lt;h1&gt;Taste&lt;/h1&gt;
    &lt;p&gt;They taste lovely.&lt;/p&gt;
    &lt;section&gt;
      &lt;h1&gt;Sweet&lt;/h1&gt;
      &lt;p&gt;Red apples are sweeter than green ones.&lt;/p&gt;
    &lt;/section&gt;
  &lt;/section&gt;
  &lt;section&gt;
    &lt;h1&gt;Color&lt;/h1&gt;
    &lt;p&gt;Apples come in various colors.&lt;/p&gt;
  &lt;/section&gt;
&lt;/body&gt;
</code></pre>
<p>Aquest és el resultat d'intentar permetre dos models d'expressió d'una jerarquia: l'explícit (com <a href="http://www.w3.org/TR/html401/">HTML 4.01</a>) i l'implícit (com <a href="http://www.w3.org/TR/xhtml2/">XHTML 2.0</a> o <a href="http://purl.oclc.org/NET/dml/1.0/">DML</a>). <a href="http://www.docbook.org/tdg5/en/html/docbook.html">Docbook</a> permèt ambdós models però de forma alternativa, no mesclable.</p>
<p>Exemple de jerarquia explícita (HTML 4.01):</p>
<pre><code class="xml">
  &lt;h1&gt;Foo&lt;/h1&gt;
  &lt;h2&gt;Bar&lt;/h2&gt;
  &lt;h2&gt;Bla&lt;/h2&gt;
</code></pre>
<p>Exemple de jerarquia implícita (DocBook o DML):</p>
<pre><code class="xml">
&lt;title&gt;Foo&lt;/title&gt;
&lt;section&gt;
  &lt;title&gt;Bar&lt;/title&gt;
&lt;/section&gt;
&lt;section&gt;
  &lt;title&gt;Bla&lt;/title&gt;
&lt;/section&gt;
</code></pre>


<h3>Recursos relacionats</h3>
<ul>
	<li><a href="http://www.w3.org/TR/xhtml2/" hreflang="en" xml:lang="en">XHTML™ 2.0</a>. W3C. 2006.</li>
	<li><a href="http://www.w3.org/TR/html401/" hreflang="en" xml:lang="en">HTML 4.01 Specification</a>. W3C. 1999.</li>
	<li><a href="http://www.docbook.org/tdg5/en/html/docbook.html" hreflang="en" xml:lang="en">DocBook 5.0: The Definitive Guide</a>. N. Walsh. 2008.</li>
	<li><a href="http://www.whatwg.org/specs/web-apps/current-work/" hreflang="en" xml:lang="en">HTML 5</a>. WHATWG. 2009.</li>
	<li><a href="http://purl.oclc.org/NET/dml/1.0/" hreflang="en" xml:lang="en">DML 1.0</a>. A. Siches. 2009.</li>
	<li><a href="http://boblet.tumblr.com/post/134276674/html5-structure2" hreflang="en" xml:lang="en">HTML5 structure—header, hgroup &amp; h1-h6</a>. Oli Studholme. 2009.</li>
	<li><a href="http://www.w3.org/TR/html5/" hreflang="en" xml:lang="en">HTML 5</a>. W3C. 2009.</li>
	<li><a href="http://www.paciellogroup.com/blog/misc/ARIA/html5-elements1.html#the-h1-h2-h3-h4-h5-and-h6-elements" xml:lang="en" hreflang="en">Document conformance suggestions for ARIA roles and properties in HTML 5</a>. Paciello Group. 2009.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/jerarquia-de-capcaleres-en-html5/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Comanda Ubiquity per l'Optimot</title>
		<link>http://blog.esbudellat.net/comanda-ubiquity-per-loptimot/</link>
		<comments>http://blog.esbudellat.net/comanda-ubiquity-per-loptimot/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 07:21:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[recursos]]></category>
<category>dictionary</category><category>firefox</category><category>optimot</category><category>ubiquity</category>
		<guid isPermaLink="false">http://blog.esbudellat.net/?p=189</guid>
		<description><![CDATA[Comanda de l'extensió Ubiquity per Firefox per cercar al diccionari Optimot.
Instal·lador de la comanda Optimot]]></description>
			<content:encoded><![CDATA[<p property="dct:description">Comanda de l'extensió <a href="https://addons.mozilla.org/en-US/firefox/addon/9527" hreflang="en" xml:lang="en">Ubiquity</a> per Firefox per cercar al diccionari <a href="http://optimot.gencat.cat" hreflang="ca">Optimot</a>.</p>
<p><a href="/resources/ubiquity/optimot/optimot.html">Instal·lador de la comanda Optimot</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.esbudellat.net/comanda-ubiquity-per-loptimot/feed/</wfw:commentRss>
		</item>
		<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>
	</channel>
</rss>
