- From: Bob Clary <bc@bclary.com>
- Date: Mon, 22 Mar 2004 12:32:29 -0500
- To: Dominique Hazaël-Massieux <dom@w3.org>
- Cc: www-archive@w3.org
- Message-ID: <405F232D.5080307@bclary.com>
Dom, Here is a patch which brings the CVS version of rdfs2html.xsl on dev.w3.org to match the most recent development version I have been using. Let me know what you think. I have some ideas on how to add more support for RDF/XML syntax shortcuts that I may be able to get to in a few days. Bob
Index: rdfs2html.xsl =================================================================== RCS file: /sources/public/2004/rdfs2html/rdfs2html.xsl,v retrieving revision 1.1 diff -u -p -u -r1.1 rdfs2html.xsl --- rdfs2html.xsl 18 Mar 2004 09:59:09 -0000 1.1 +++ rdfs2html.xsl 22 Mar 2004 17:25:14 -0000 @@ -15,12 +15,13 @@ xmlns:rdf="&rdfnsuri;" xmlns:rdfs="&rdfsnsuri;" xmlns:rcs="http://www.w3.org/2001/03swell/rcs#" - exclude-result-prefixes="dc ont rdf rdfs rcs r2h" + xmlns:owl="http://www.w3.org/2002/07/owl#" + exclude-result-prefixes="dc ont rdf rdfs rcs r2h owl" xmlns:r2h='http://www.w3.org/2002/06/rdfs2html.xsl'> <xsl:output method="xml" indent='yes' doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/> - <xsl:param name="recursive" select="'yes'"/> + <xsl:param name="recursive" select="'no'"/> <xsl:variable name="ns" select="/rdf:RDF/rdf:Description/@rdf:about"/> <html> @@ -43,33 +44,66 @@ href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>, <a href="http://www.keio.ac.jp/">Keio University</a>). All Rights Reserved. http://www.w3.org/Consortium/Legal/. W3C <a href="http://www.w3.org/Consortium/Legal/copyright-software">software licensing</a> rules apply.</p> - <address><a href="http://www.w3.org/People/Dom/">Dominique Hazaël-Massieux</a> - $Id: rdfs2html.xsl,v 1.1 2004/03/18 09:59:09 dom Exp $</address> + <address><a href="http://www.w3.org/People/Dom/">Dominique Hazaël-Massieux</a> - $Id: rdfs2html.xsl,v 1.4 2004/03/19 16:49:16 bclary Exp $</address> </html> <xsl:template match="/"> + <xsl:variable name="schemacount" select="count(/rdf:RDF/*[@rdf:about]/dc:title | /rdf:RDF/*[@rdf:about and @dc:title])"/> <xsl:variable name="title"> <xsl:choose> - <xsl:when test="//*[@rdf:about='']/dc:title"> - <xsl:value-of select="//*[@rdf:about]/dc:title"/> - </xsl:when> - <xsl:when test="//rdf:Description[@rdf:about and contains(@rdf:about,'#') and substring-after(@rdf:about,'#')='']/dc:title"> - <xsl:value-of select="//rdf:Description[@rdf:about and contains(@rdf:about,'#') and substring-after(@rdf:about,'#')='']/dc:title"/> + <xsl:when test="$schemacount=1"> + <xsl:choose> + <xsl:when test="//*[@rdf:about='']/dc:title"> + <xsl:value-of select="//*[@rdf:about='']/dc:title"/> + </xsl:when> + <xsl:when test="//rdf:Description[@rdf:about and contains(@rdf:about,'#') and substring-after(@rdf:about,'#')='']/dc:title"> + <xsl:value-of select="//rdf:Description[@rdf:about and contains(@rdf:about,'#') and substring-after(@rdf:about,'#')='']/dc:title"/> + </xsl:when> + <xsl:when test="//owl:Ontology[@rdf:about and contains(@rdf:about,'#') and substring-after(@rdf:about,'#')='']/dc:title"> + <xsl:value-of select="//owl:Ontology[@rdf:about and contains(@rdf:about,'#') and substring-after(@rdf:about,'#')='']/dc:title"/> + </xsl:when> + <xsl:when test="//rdf:Description[@rdf:about]/dc:title"> + <xsl:value-of select="//rdf:Description[@rdf:about]/dc:title"/> + </xsl:when> + <xsl:when test="//*[@rdf:about and @dc:title]"> + <xsl:value-of select="//*/@dc:title"/> + </xsl:when> + <xsl:otherwise> + Untitled RDF Schema + </xsl:otherwise> + </xsl:choose> </xsl:when> <xsl:otherwise> - Untitled RDF Schema + Multiple Schemas </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="description"> - <xsl:choose> - <xsl:when test=".//*[@rdf:about='']/dc:description"> - <xsl:value-of select=".//*[@rdf:about='']/dc:description"/> - </xsl:when> - <xsl:when test=".//rdf:Description[@rdf:about and contains(@rdf:about,'#') and substring-after(@rdf:about,'#')='']/dc:description"> - <xsl:value-of select=".//rdf:Description[@rdf:about and contains(@rdf:about,'#') and substring-after(@rdf:about,'#')='']/dc:description"/> - </xsl:when> - <xsl:otherwise></xsl:otherwise> - </xsl:choose> + <xsl:choose> + <xsl:when test="$schemacount=1"> + <xsl:choose> + <xsl:when test=".//*[@rdf:about='']/dc:description"> + <xsl:value-of select=".//*[@rdf:about='']/dc:description"/> + </xsl:when> + <xsl:when test=".//rdf:Description[@rdf:about and contains(@rdf:about,'#') and substring-after(@rdf:about,'#')='']/dc:description"> + <xsl:value-of select=".//rdf:Description[@rdf:about and contains(@rdf:about,'#') and substring-after(@rdf:about,'#')='']/dc:description"/> + </xsl:when> + <xsl:when test=".//owl:Ontology[@rdf:about and contains(@rdf:about,'#') and substring-after(@rdf:about,'#')='']/dc:description"> + <xsl:value-of select=".//owl:Ontology[@rdf:about and contains(@rdf:about,'#') and substring-after(@rdf:about,'#')='']/dc:description"/> + </xsl:when> + <xsl:when test=".//rdf:Description[@rdf:about]/dc:description"> + <xsl:value-of select=".//rdf:Description[@rdf:about]/dc:description"/> + </xsl:when> + <xsl:when test=".//*[@rdf:about and @dc:title and @dc:description]"> + <xsl:value-of select=".//*/@dc:description"/> + </xsl:when> + <xsl:otherwise></xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + This document contains multiple schemas + </xsl:otherwise> + </xsl:choose> </xsl:variable> <html> <head> @@ -84,9 +118,16 @@ href="http://www.keio.ac.jp/">Keio Unive <body> <div id="header"> <h1><xsl:value-of select="$title"/></h1> - <xsl:if test="normalize-space($description)"> - <p><xsl:value-of select="$description"/></p> - </xsl:if> + <xsl:choose> + <xsl:when test="$schemacount=1"> + <xsl:if test="normalize-space($description)"> + <p><xsl:value-of select="$description"/></p> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/rdf:RDF/*[@rdf:about]/dc:title"/> + </xsl:otherwise> + </xsl:choose> </div> <div id="note"> <h4>Important note</h4> @@ -133,7 +174,7 @@ href="http://www.keio.ac.jp/">Keio Unive </ul> <hr/> <address> - <xsl:value-of select=".//*[@rdf:about='']/rcs:id"/> (HTML display done through <a href="http://www.w3.org/2002/06/rdfs2html.xsl">http://www.w3.org/2002/06/rdfs2html.xsl</a> $Id: rdfs2html.xsl,v 1.1 2004/03/18 09:59:09 dom Exp $) + <xsl:value-of select=".//*[@rdf:about='']/rcs:id"/> (HTML display done through <a href="http://www.w3.org/2002/06/rdfs2html.xsl">http://www.w3.org/2002/06/rdfs2html.xsl</a> $Id: rdfs2html.xsl,v 1.4 2004/03/19 16:49:16 bclary Exp $) </address> </body> </html> @@ -157,14 +198,12 @@ href="http://www.keio.ac.jp/">Keio Unive </xsl:when> </xsl:choose> </xsl:variable> + <dt> + <span class="about"> <xsl:call-template name="labelize"> <xsl:with-param name="resource" select="$ref"/> </xsl:call-template> - <span class="about"> - <xsl:text> [</xsl:text> - <a href="{$ref}"><xsl:value-of select="substring-after($ref,'#')"/></a> - <xsl:text>]</xsl:text> </span> </dt> <xsl:if test="rdfs:comment"> @@ -198,18 +237,25 @@ href="http://www.keio.ac.jp/">Keio Unive <xsl:text>Sub class of </xsl:text> </xsl:when> <xsl:otherwise> - <a href="{concat(namespace-uri(),local-name())}"><xsl:call-template name="labelize"> + <xsl:call-template name="labelize"> <xsl:with-param name="resource" select="concat(namespace-uri(),local-name())"/> </xsl:call-template> - </a><xsl:text> </xsl:text> + <xsl:text> </xsl:text> </xsl:otherwise> </xsl:choose> - <a href="{@rdf:resource}"><xsl:call-template name="labelize"><xsl:with-param name="resource" select='@rdf:resource'/></xsl:call-template></a> + <xsl:call-template name="labelize"><xsl:with-param name="resource" select='@rdf:resource'/></xsl:call-template> </dd> </xsl:template> <xsl:template name="labelize"> <xsl:param name="resource"/> + + <xsl:variable name="qname"> + <xsl:call-template name="create-qname"> + <xsl:with-param name="resource"><xsl:value-of select="$resource"/></xsl:with-param> + </xsl:call-template> + </xsl:variable> + <xsl:choose> <!-- Testing if this is a URI relative to the current doc, an HTTP URI, or something else --> <xsl:when test="starts-with($resource,'#')"> @@ -218,14 +264,25 @@ href="http://www.keio.ac.jp/">Keio Unive <xsl:value-of select="/rdf:RDF/*[@rdf:about=$resource or @rdf:ID=substring-after($resource,'#') or (@ID=substring-after($resource,'#') and namespace-uri()='&rdfnsuri;') or (@about=$resource and namespace-uri()='&rdfnsuri;')]/rdfs:label"/> </xsl:when> <xsl:otherwise> - <xsl:value-of select="$resource"/> </xsl:otherwise> </xsl:choose> </xsl:when> + <xsl:when test="starts-with($resource,'http://') and + /rdf:RDF/*[@rdf:about=$resource or @rdf:ID=substring-after($resource,'#') or (@about=$resource and namespace-uri()='&rdfnsuri;') or (@ID=substring-after($resource,'#') and namespace-uri()='&rdfnsuri;')]/rdfs:label"> + <xsl:choose> + <!-- This test doesn't handle the case where the resouce doesn't use #--> + <xsl:when test="/rdf:RDF/*[@rdf:about=$resource or @rdf:ID=substring-after($resource,'#') or (@about=$resource and namespace-uri()='&rdfnsuri;') or (@ID=substring-after($resource,'#') and namespace-uri()='&rdfnsuri;')]/rdfs:label"> + <xsl:value-of select="/rdf:RDF/*[@rdf:about=$resource or @rdf:ID=substring-after($resource,'#') or (@about=$resource and namespace-uri()='&rdfnsuri;') or (@ID=substring-after($resource,'#') and namespace-uri()='&rdfnsuri;')]/rdfs:label[1]"/> + </xsl:when> + <xsl:otherwise> + </xsl:otherwise> + </xsl:choose> + </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="starts-with($resource,'http://') and contains($resource,'#') and concat(substring-before($resource,'#'),'#')=$ns and /rdf:RDF/*[@rdf:about=$resource or @about=$resource]/rdfs:label"> <xsl:value-of select="/rdf:RDF/*[@rdf:about=$resource or @about=$resource]/rdfs:label"/> + <xsl:value-of select="$qname"/> </xsl:when> <xsl:when test="starts-with($resource,'http://') and $recursive='yes'"> <xsl:message> @@ -238,7 +295,6 @@ href="http://www.keio.ac.jp/">Keio Unive <xsl:value-of select="document($resource)/rdf:RDF/*[@rdf:about=$resource or @rdf:ID=substring-after($resource,'#') or (@about=$resource and namespace-uri()='&rdfnsuri;') or (@ID=substring-after($resource,'#') and namespace-uri()='&rdfnsuri;')]/rdfs:label[1]"/> </xsl:when> <xsl:otherwise> - <xsl:value-of select="$resource"/> </xsl:otherwise> </xsl:choose> </xsl:when> @@ -246,10 +302,132 @@ href="http://www.keio.ac.jp/">Keio Unive <xsl:text>this schema</xsl:text> </xsl:when> <xsl:otherwise> - <xsl:value-of select="$resource"/> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> + <xsl:if test="$resource!='' and $qname!=''"> <!-- bc handle sick cases like log.n3->log.rdfs --> + [<a href="{$resource}"><xsl:value-of select="$qname"/></a>] + </xsl:if> </xsl:template> + + <xsl:template name="get-name"> + <xsl:param name="head"/> + + <xsl:choose> + + <xsl:when test="contains($head, '#')"> + + <xsl:value-of select="substring-after($head, '#')"/> + + </xsl:when> + + <xsl:otherwise> + + <xsl:variable name="tail"> + <xsl:if test="contains($head, '/')"> + <xsl:value-of select="substring-after($head, '/')"/> + </xsl:if> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$tail!=''"> + <xsl:call-template name="get-name"> + <xsl:with-param name="head"> + <xsl:value-of select="$tail"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$head"/> + </xsl:otherwise> + </xsl:choose> + + </xsl:otherwise> + + </xsl:choose> + + </xsl:template> + + <xsl:template name="get-namespace"> + <xsl:param name="uri"/> + + <xsl:variable name="name"> + <xsl:call-template name="get-name"> + <xsl:with-param name="head"> + <xsl:value-of select="$uri"/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:value-of select="substring-before($uri, $name)"/> + </xsl:template> + + <xsl:template name="get-prefix"> + <xsl:param name="uri"/> + + <xsl:variable name="namespace"> + <xsl:call-template name="get-namespace"> + <xsl:with-param name="uri"> + <xsl:value-of select="$uri"/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:for-each select="/rdf:RDF/namespace::*"> + <xsl:if test=".=$namespace"> + <xsl:value-of select="name()"/> + </xsl:if> + </xsl:for-each> + + </xsl:template> + + <xsl:template name="create-qname"> + <xsl:param name="resource"/> + + <xsl:variable name="name"> + <xsl:call-template name="get-name"> + <xsl:with-param name="head"> + <xsl:value-of select="$resource"/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="namespace"> + <xsl:call-template name="get-namespace"> + <xsl:with-param name="uri"> + <xsl:value-of select="$resource"/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="prefix"> + <xsl:call-template name="get-prefix"> + <xsl:with-param name="uri"> + <xsl:value-of select="$resource"/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$prefix!='' and $name!=''"> + <xsl:value-of select="$prefix"/>:<xsl:value-of select="$name"/> + </xsl:when> + <xsl:when test="$namespace!='' and $name!=''"> + <xsl:value-of select="$namespace"/><xsl:value-of select="$name"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$resource"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="dc:title"> + <xsl:if test="parent::rdf:Description or parent::owl:Ontology"> + <h2><xsl:value-of select="."/></h2> + <p><xsl:value-of select="../dc:description"/></p> + </xsl:if> + </xsl:template> + + </xsl:stylesheet>
Received on Monday, 22 March 2004 12:34:54 UTC