W3C home > Mailing lists > Public > www-tag@w3.org > September 2002

Re: Is XHTML a dead end?

From: Tim Bray <tbray@textuality.com>
Date: Fri, 27 Sep 2002 12:05:39 -0700
Cc: www-tag@w3.org
To: Eric van der Vlist <vdv@dyomedea.com>
Message-Id: <1CEBDC16-D24C-11D6-8E90-0003938E7308@textuality.com>

On Friday, September 27, 2002, at 11:38 AM, Eric van der Vlist wrote:

> Since you seem to feel that it's an important issue, I have done the  
> exercise and that's not *that* complex!

Thanks Eric.  So if I wanted to write some XSLT to extract & process  
all the XLinks and some other stuff in the XHTML, I'd use a two-step  
process?  Step one like this to generate XLinks in an easily-accessible  
names, then step 2 is straightforward generic XSLT to reorganize the  
XHTML and XLink and whatever else it contained?

For example... suppose we had some nice modern XHTML2 with  
properly-nested DIVs and so on, and hyperlinks scattered around.   
Suppose I wanted to produce a nested table of contents with just  
hyperlinks, losing all the other text; basically lose anything that's  
not a <div>, <h[0-8]>, or hyperlink.

How would the approaches compare if the source were XLink vs HLink?

  -Tim

>
> Source:
>
> <html xmlns="http://www.w3.org/1999/xhtml"
> xmlns:hlink="http://www.w3.org/2002/06/hlink"
> xmlns:vdv="http://eric.van-der-vlist.com/whatever">
> <head>
> <hlink:hlink namespace="http://www.w3.org/1999/xhtml"
>        element="img"
>        locator="@src"
>        effect="embed"
>        actuate="onLoad"
>        onFailure="warn"/>
> </head>
> <body>
> <br vdv:foo="bar"/>
> <img src="whatever" vdv:foo="bar"/>
> </body>
> </html>
>
> XSLT (could easily be adapted to external HLinks):
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
>   xmlns:xhtml="http://www.w3.org/1999/xhtml"
> 	xmlns:hlink="http://www.w3.org/2002/06/hlink"
> 	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
>
> 	<xsl:template match="@*">
> 		<xsl:param name="hlink"/>
> 		<xsl:if test="not(concat('@', name()) = $hlink/@locator)">
> 			<xsl:copy>
> 				<xsl:apply-templates/>
> 			</xsl:copy>
> 		</xsl:if>
> 	</xsl:template>
>
> 	<xsl:template match="*">
> 		<xsl:copy>
> 			<xsl:variable name="hlink"
> select="/xhtml:html/xhtml:head/hlink:hlink[@element=local- 
> name(current()) and @namespace=namespace-uri(current())]"/>
> 			<xsl:apply-templates select="$hlink/@*" mode="hlink">
> 				<xsl:with-param name="node" select="."/>
> 			</xsl:apply-templates>
> 			<xsl:apply-templates select="@*">
> 				<xsl:with-param name="hlink" select="$hlink"/>
> 			</xsl:apply-templates>
> 			<xsl:apply-templates/>
> 		</xsl:copy>
> 	</xsl:template>
> 	
> 	<xsl:template match="@*" mode="hlink"/>
> 	<xsl:template match="@element" mode="hlink">
> 		<xsl:attribute name="xlink:type"
> namespace="http://www.w3.org/1999/xlink">
> 			<xsl:text>simple</xsl:text>
> 		</xsl:attribute>
> 	</xsl:template>
> 	<xsl:template match="@effect" mode="hlink">
> 		<xsl:attribute name="xlink:show"
> namespace="http://www.w3.org/1999/xlink">
> 			<xsl:value-of select="."/>
> 		</xsl:attribute>
> 	</xsl:template>
> 	<xsl:template match="@actuate" mode="hlink">
> 		<xsl:attribute name="xlink:actuate"
> namespace="http://www.w3.org/1999/xlink">
> 			<xsl:value-of select="."/>
> 		</xsl:attribute>
> 	</xsl:template>
> 	<xsl:template match="@locator" mode="hlink">
> 		<xsl:attribute name="xlink:href"
> namespace="http://www.w3.org/1999/xlink">
> 			<xsl:value-of select="."/>
> 		</xsl:attribute>
> 	</xsl:template>
> 	<xsl:template match="@locator[starts-with(., '@')]" mode="hlink">
> 	  <xsl:param name="node"/>
> 		<xsl:attribute name="xlink:href"
> namespace="http://www.w3.org/1999/xlink">
> 			<xsl:value-of select="$node/@*[name() = substring-after(current(),
> '@')]"/>
> 		</xsl:attribute>
> 	</xsl:template>
>
> <!-- more attributes to be defined -->
>
> </xsl:stylesheet>
>
> Result:
>
> vdv@ibook:~/repros/libxslt$ xslt hlink.xml hlink.xsl
> using libxslt
> <?xml version="1.0"?>
> <html xmlns="http://www.w3.org/1999/xhtml"
> xmlns:hlink="http://www.w3.org/2002/06/hlink"
> xmlns:vdv="http://eric.van-der-vlist.com/whatever">
> <head>
> <hlink:hlink namespace="http://www.w3.org/1999/xhtml" element="img"
> locator="@src" effect="embed" actuate="onLoad" onFailure="warn"/>
> </head>
> <body>
> <br vdv:foo="bar"/>
> <img xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
> xlink:href="whatever" xlink:show="embed" xlink:actuate="onLoad"
> vdv:foo="bar"/>
> </body>
> </html>
>
>
> Enjoy,
>
> Eric
>
> -- 
> Rendez-vous  Paris.
>                            
> http://www.technoforum.fr/integ2002/index.html
> ----------------------------------------------------------------------- 
> -
> Eric van der Vlist       http://xmlfr.org             
> http://dyomedea.com
> (W3C) XML Schema ISBN:0-596-00252-1  
> http://oreilly.com/catalog/xmlschema
> ----------------------------------------------------------------------- 
> -
>
>
>
Received on Friday, 27 September 2002 15:05:41 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 26 April 2012 12:47:11 GMT