forrest-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Crossley <cross...@apache.org>
Subject Re: How do you add a link tag?
Date Fri, 06 Jul 2007 07:23:56 GMT
Ross Gardler wrote:
> Oshani Seneviratne wrote:
> >
> >In the FOAF plugin, I was trying to make the FOAF data get
> >auto-discovered by a tool like Semantic Radar [1]. To do that, I
> >believe there should be a link tag, such as the following, inside the
> >head element of the page.
> >
> ><link rel="meta" type="application/rdf+xml" href="foaf.rdf" />
> >
> >I could not find any DTD in document-v20 [2] for 'link', so I was
> >unable to add it in the xsl which transforms the FOAF into XDoc.
> >
> >However, I see that some link tags are included (css files for
> >example) in the final HTML page generated. But I couldn't figure out
> >where those are picked up in the pipeline.
> >
> >So I would really appreciate any advice on what I should do to get a
> >link tag included in a page.
> 
> These are added by the skinning system. Using skins there is no easy
> way to do this since there is no (easy) way for the skin to know when
> it should be adding the link. I'm afraid it is one of the drawbacks of
> the skinning system. It is possible, but it is hacky and I don't
> recommend going down that route as it will mean having to maintain a
> new skin, which we don't want to do.
> 
> We could consider adding handling of the link element in XDoc (it is
> XHTML2 compat, so is likely to be accepted by the community).

Yes this would be fine. As said in our mail archives,
anything that is in our xhtml subset [1] can be added
to xdoc. We are only doing it element-by-element as they
are needed.
[1] $FORREST_HOME/main/main/webapp/resources/schema/relaxng/WD-xhtml2-20050527

However i wonder if there is an issue:
Adding it to document-v2 would be okay. As our
internal format is document-v13, then it would also
need to be enabled there. However we already have
a "link" element with a different purpose.

I can see a workaround. We don't xml validate
the internal format, so we can inject any element
that we need.

I will add it to the v2 DTD.

Meanwhile, to test you can add header/link elements
to a document-v20 doc and exclude the relevant docs from
validation by using forrest.properties config.

Here is a patch for the skins stylesheets common and pelt:

----------
Index: common/xslt/html/site-to-xhtml.xsl
===================================================================
--- common/xslt/html/site-to-xhtml.xsl  (revision 553769)
+++ common/xslt/html/site-to-xhtml.xsl  (working copy)
@@ -330,6 +330,13 @@
         </xsl:if>
       </xsl:element>
     </xsl:for-each>
+    <xsl:for-each select="//meta-data/a">
+<!-- FIXME: the document/header/link elements were earlier transformed to "a"
+along with all other "link" elements. -->
+      <xsl:element name="link">
+        <xsl:apply-templates select="@*"/>
+      </xsl:element>
+    </xsl:for-each>
   </xsl:template>
   <xsl:template name="feedback">
     <div id="feedback">
Index: pelt/xslt/html/document-to-html.xsl
===================================================================
--- pelt/xslt/html/document-to-html.xsl (revision 553072)
+++ pelt/xslt/html/document-to-html.xsl (working copy)
@@ -24,6 +24,7 @@
   <xsl:template match="document">
     <meta-data>
       <xsl:apply-templates select="header/meta"/>
+      <xsl:apply-templates select="header/link"/>
     </meta-data>
     <div id="content">
       <div id="skinconf-printlink"/>
----------

Does anyone see any problem with doing this?

-David

Mime
View raw message