From: Raphael Hertzog <[EMAIL PROTECTED]>
Subject: Re: Bug#255920: packages.qa.debian.org: package names should be 
URL-encoded
Date: Thu, 24 Jun 2004 19:23:34 +0200

> I know this problem for quite some time ... but I don't know how to do
> that correction with XSLT !
> 
> Because it's in the stylesheet that I need to make that conversion.
> Patch, input or anything else appreciated. :)
> 
> Code is in cvs.debian.org/cvs/qa module "pts" (file is www/xsl/pts.xsl)

Here is a patch for pts.xsl.
I tried to write a template to URL-encode (or URL-escape) a given package name,
and found that function already added to this XSL file in r1.16 on 2003-03-13.
(It was just the same as what I intended to write.)
The problem was simply that the template was not applied to all of package
names in the URLs.
So I applied it for all the URLs in this patch.

Since I don't have XML files to be transformed with this XSL file,
and I don't know the data structure of those files,
I can't test whether this XSL file can transform correctly.
I hope it would work.

Because Debian package names can contain only lowercase letters, numbers,
and the "-" and "+" characters,
only a function to convert "+" to "%2b" is required to solve the URL-encoding
problem.
So, if this patch can make pts.xsl process "+" correctly,
this bug (Bug#255920) might as well be closed.

Even if this bug is closed,
a portion of links will remain to be broken because of Bug#236773.
(e.g. a link in http://packages.qa.debian.org/libg/libg++27.html to
 http://packages.debian.org/libg++27 (or 
http://packages.debian.org/libg%2b%2b27))

Cheers,

-- 
|:  Noritada KOBAYASHI
|:  Dept. of General Systems Studies,
|:  Graduate School of Arts and Sciences, Univ. of Tokyo
|:  E-mail: [EMAIL PROTECTED] (preferable)
|:          [EMAIL PROTECTED]
--- pts.xsl.orig        Sat Jun 26 00:33:03 2004
+++ pts.xsl     Sat Jun 26 02:58:51 2004
@@ -157,9 +157,17 @@
   <tr class="normalrow">
   <td class="labelcell">All bugs</td>
   <td class="contentcell">
-  <a href="http://bugs.debian.org/src:{$package}";><xsl:if test="$hasother">
-    <xsl:value-of select="$other/bugs/@all"/>
-  </xsl:if></a>
+  <xsl:element name="a">
+    <xsl:attribute name="href">
+      <xsl:text>http://bugs.debian.org/src:</xsl:text>
+      <xsl:call-template name="escape-name">
+        <xsl:with-param name="text"><xsl:value-of 
select="$package"/></xsl:with-param>
+      </xsl:call-template>
+    </xsl:attribute>
+    <xsl:if test="$hasother">
+      <xsl:value-of select="$other/bugs/@all"/>
+    </xsl:if>
+  </xsl:element>
   </td>
   </tr>
   <tr class="normalrow">
@@ -390,22 +398,83 @@
   <tr>
   <td class="contentcell" colspan="2" style="text-align: left">
   <xsl:if test="architecture!='all'">
-    <li><a href="http://buildd.debian.org/build.php?pkg={$package}";>Buildd 
logs</a></li>
+    <li>
+      <xsl:element name="a">
+        <xsl:attribute name="href">
+          <xsl:text>http://buildd.debian.org/build.php?pkg=</xsl:text>
+          <xsl:call-template name="escape-name">
+            <xsl:with-param name="text"><xsl:value-of 
select="$package"/></xsl:with-param>
+          </xsl:call-template>
+        </xsl:attribute>
+        Buildd logs
+      </xsl:element>
+    </li>
   </xsl:if>
   <!-- DISABLED until ddtp.debian.org is back up
-    <li><a 
href="http://ddtp.debian.org/stats/pdesc/report.cgi?package={$package}&amp;lang=all&amp;type=src-drvbin&amp;subword=0";>Description's
 translations (DDTP)</a></li>
+    <li>
+      <xsl:element name="a">
+        <xsl:attribute name="href">
+          
<xsl:text>http://ddtp.debian.org/stats/pdesc/report.cgi?package=</xsl:text>
+          <xsl:call-template name="escape-name">
+            <xsl:with-param name="text"><xsl:value-of 
select="$package"/></xsl:with-param>
+          </xsl:call-template>
+          <xsl:text>&amp;lang=all&amp;type=src-drvbin&amp;subword=0</xsl:text>
+        </xsl:attribute>
+        Description's translations (DDTP)
+      </xsl:element>
+    </li>
   <xsl:if test="$other/@debconf='yes'">
-    <li><a 
href="http://ddtp.debian.org/cgi-bin/ddtp.cgi?part=debconf&amp;package={$package}";>Debconf
 templates's translations (DDTP)</a></li>
+    <li>
+      <xsl:element name="a">
+        <xsl:attribute name="href">
+          
<xsl:text>http://ddtp.debian.org/cgi-bin/ddtp.cgi?part=debconf&amp;package=</xsl:text>
+          <xsl:call-template name="escape-name">
+            <xsl:with-param name="text"><xsl:value-of 
select="$package"/></xsl:with-param>
+          </xsl:call-template>
+        </xsl:attribute>
+        Debconf templates's translations (DDTP)
+      </xsl:element>
+    </li>
   </xsl:if>
   -->
   <xsl:if test="$hasunstable and $other/debcheck/@unstable='yes'">
-    <li><a 
href="http://qa.debian.org/debcheck.php?dist=unstable&amp;package={$package}";>Debcheck
 on unstable</a></li>
+    <li>
+      <xsl:element name="a">
+        <xsl:attribute name="href">
+          
<xsl:text>http://qa.debian.org/debcheck.php?dist=unstable&amp;package=</xsl:text>
+          <xsl:call-template name="escape-name">
+            <xsl:with-param name="text"><xsl:value-of 
select="$package"/></xsl:with-param>
+          </xsl:call-template>
+        </xsl:attribute>
+        Debcheck on unstable
+      </xsl:element>
+    </li>
   </xsl:if>
   <xsl:if test="$hastesting and $other/debcheck/@testing='yes'">
-    <li><a 
href="http://qa.debian.org/debcheck.php?dist=testing&amp;package={$package}";>Debcheck
 on testing</a></li>
+    <li>
+      <xsl:element name="a">
+        <xsl:attribute name="href">
+          
<xsl:text>http://qa.debian.org/debcheck.php?dist=testing&amp;package=</xsl:text>
+          <xsl:call-template name="escape-name">
+            <xsl:with-param name="text"><xsl:value-of 
select="$package"/></xsl:with-param>
+          </xsl:call-template>
+        </xsl:attribute>
+        Debcheck on testing
+      </xsl:element>
+    </li>
   </xsl:if>
   <xsl:if test="$hasstable and $other/debcheck/@stable='yes'">
-    <li><a 
href="http://qa.debian.org/debcheck.php?dist=stable&amp;package={$package}";>Debcheck
 on stable</a></li>
+    <li>
+      <xsl:element name="a">
+        <xsl:attribute name="href">
+          
<xsl:text>http://qa.debian.org/debcheck.php?dist=stable&amp;package=</xsl:text>
+          <xsl:call-template name="escape-name">
+            <xsl:with-param name="text"><xsl:value-of 
select="$package"/></xsl:with-param>
+          </xsl:call-template>
+        </xsl:attribute>
+        Debcheck on stable
+      </xsl:element>
+    </li>
   </xsl:if>
   <!-- convert maintainer/name to follow lintian.debian.org convention [FG] -->
                               <xsl:variable name="pattern" 
select="concat('àáèéëêòöøîìùñ-/()&#34; ', &quot;'&quot;)"/>
@@ -502,7 +571,17 @@
       <li>The package has not yet entered <a
       
href="http://ftp-master.debian.org/testing/update_excuses.html.gz#{$package}";>testing</a>
       even though the <xsl:value-of select="document(concat('../base/', $dir, 
'/excuse.xml'))/excuse/@limit"/>-day
-      delay is over. <a 
href="http://bjorn.haxx.se/debian/testing.pl?package={$package}";>Check 
why</a>.</li>
+      delay is over.
+      <xsl:element name="a">
+        <xsl:attribute name="href">
+          <xsl:text>http://bjorn.haxx.se/debian/testing.pl?package=</xsl:text>
+          <xsl:call-template name="escape-name">
+            <xsl:with-param name="text"><xsl:value-of 
select="$package"/></xsl:with-param>
+          </xsl:call-template>
+        </xsl:attribute>
+        Check why
+      </xsl:element>
+      .</li>
     </xsl:if>
     <xsl:if test="not(starts-with(standards-version, $lastmajorsv))">
       <li>The package is severly out of date with respect to the Debian

Reply via email to