]> granicus.if.org Git - docbook-dsssl/commitdiff
Support well-formed documents, use key() instead of id()
authorNorman Walsh <ndw@nwalsh.com>
Mon, 12 Nov 2001 20:41:45 +0000 (20:41 +0000)
committerNorman Walsh <ndw@nwalsh.com>
Mon, 12 Nov 2001 20:41:45 +0000 (20:41 +0000)
18 files changed:
xsl/common/common.xsl
xsl/fo/docbook.xsl
xsl/fo/ebnf.xsl
xsl/fo/footnote.xsl
xsl/fo/lists.xsl
xsl/fo/synop.xsl
xsl/fo/xref.xsl
xsl/html/chunk-experimental.xsl
xsl/html/chunk.xsl
xsl/html/docbook.xsl
xsl/html/ebnf.xsl
xsl/html/footnote.xsl
xsl/html/inline.xsl
xsl/html/lists.xsl
xsl/html/param.xweb
xsl/html/synop.xsl
xsl/html/toc.xsl
xsl/html/xref.xsl

index 6874cc27fc3452241cfe581a237400b4b78f817d..4241d5d7f2521d6f42e507ecad48b9579230d2fb 100644 (file)
@@ -971,7 +971,7 @@ the ID is not unique.</para>
 <xsl:template name="check.id.unique">
   <xsl:param name="linkend"></xsl:param>
   <xsl:if test="$linkend != ''">
-    <xsl:variable name="targets" select="id($linkend)"/>
+    <xsl:variable name="targets" select="key('id',$linkend)"/>
     <xsl:variable name="target" select="$targets[1]"/>
 
     <xsl:if test="count($targets)=0">
@@ -1012,7 +1012,7 @@ pointed to by the link is one of the elements listed in
   <xsl:param name="linkend"></xsl:param>
   <xsl:param name="element-list"></xsl:param>
   <xsl:if test="$linkend != ''">
-    <xsl:variable name="targets" select="id($linkend)"/>
+    <xsl:variable name="targets" select="key('id',$linkend)"/>
     <xsl:variable name="target" select="$targets[1]"/>
 
     <xsl:if test="count($target) &gt; 0">
index 2029640bb8e058df95f08f70a10c6a471afee4ee..1cdf05b4b7196f5395fd11ac2e25fa36a2b2c4d1 100644 (file)
 
 <!-- ==================================================================== -->
 
+<xsl:key name="id" match="*" use="@id"/>
+
+<!-- ==================================================================== -->
+
 <xsl:template match="*">
   <xsl:message>
     <xsl:value-of select="name(.)"/>
     <xsl:choose>
       <xsl:when test="$rootid != ''">
         <xsl:choose>
-          <xsl:when test="count(id($rootid)) = 0">
+          <xsl:when test="count(key('id',$rootid)) = 0">
             <xsl:message terminate="yes">
               <xsl:text>ID '</xsl:text>
               <xsl:value-of select="$rootid"/>
           </xsl:when>
           <xsl:otherwise>
             <xsl:if test="$fop.extensions != 0">
-              <xsl:apply-templates select="id($rootid)" mode="outline"/>
+              <xsl:apply-templates select="key('id',$rootid)" mode="outline"/>
             </xsl:if>
             <xsl:if test="$xep.extensions != 0">
               <rx:outline xmlns:rx="http://www.renderx.com/XSL/Extensions">
-                <xsl:apply-templates select="id($rootid)" mode="xep.outline"/>
+                <xsl:apply-templates select="key('id',$rootid)" mode="xep.outline"/>
               </rx:outline>
             </xsl:if>
-            <xsl:apply-templates select="id($rootid)"/>
+            <xsl:apply-templates select="key('id',$rootid)"/>
           </xsl:otherwise>
         </xsl:choose>
       </xsl:when>
index 168060c68ba0d39554f8e54d7330f982ab5e8d7b..43e9d499ae33696de51a1e138475a4c4e2e7dbd7 100644 (file)
@@ -141,7 +141,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
 </xsl:template>
 
 <xsl:template match="productionrecap">
-  <xsl:variable name="targets" select="id(@linkend)"/>
+  <xsl:variable name="targets" select="key('id',@linkend)"/>
   <xsl:variable name="target" select="$targets[1]"/>
 
   <xsl:if test="count($targets)=0">
@@ -209,7 +209,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
   <xsl:variable name="href">
     <xsl:choose>
       <xsl:when test="$linkend != ''">
-       <xsl:variable name="targets" select="id($linkend)"/>
+       <xsl:variable name="targets" select="key('id',$linkend)"/>
        <xsl:variable name="target" select="$targets[1]"/>
         <xsl:call-template name="object.id">
           <xsl:with-param name="object" select="$target"/>
@@ -230,7 +230,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
       <xsl:otherwise>
         <xsl:choose>
           <xsl:when test="$linkend != ''">
-            <xsl:variable name="targets" select="id($linkend)"/>
+            <xsl:variable name="targets" select="key('id',$linkend)"/>
             <xsl:variable name="target" select="$targets[1]"/>
             <xsl:apply-templates select="$target/lhs"/>
           </xsl:when>
@@ -264,7 +264,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
   </xsl:call-template>
 
   <xsl:variable name="href">
-    <xsl:variable name="targets" select="id(@linkend)"/>
+    <xsl:variable name="targets" select="key('id',@linkend)"/>
     <xsl:variable name="target" select="$targets[1]"/>
     <xsl:call-template name="object.id">
       <xsl:with-param name="object" select="$target"/>
@@ -282,7 +282,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
       <xsl:text>: </xsl:text>
     </xsl:when>
     <xsl:otherwise>
-      <xsl:variable name="targets" select="id(@linkend)"/>
+      <xsl:variable name="targets" select="key('id',@linkend)"/>
       <xsl:variable name="target" select="$targets[1]"/>
       <xsl:if test="$target/@role">
        <xsl:value-of select="$target/@role"/>
@@ -293,7 +293,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
 
   <fo:basic-link internal-destination="{$href}"
                  xsl:use-attribute-sets="xref.properties">
-    <xsl:variable name="targets" select="id(@linkend)"/>
+    <xsl:variable name="targets" select="key('id',@linkend)"/>
     <xsl:variable name="target" select="$targets[1]"/>
     <xsl:apply-templates select="$target" mode="title.markup"/>
   </fo:basic-link>
index 014f34efbe2b04156092932ce44e1bbbd64e2a81..0102721818a3f9904da67b529ffa53775373a6f3 100644 (file)
@@ -27,7 +27,7 @@
 </xsl:template>
 
 <xsl:template match="footnoteref">
-  <xsl:variable name="footnote" select="id(@linkend)"/>
+  <xsl:variable name="footnote" select="key('id',@linkend)"/>
   <fo:inline>
     <xsl:text>[</xsl:text>
     <xsl:apply-templates select="$footnote" mode="footnote.number"/>
index 7116207c83b24817ae49a26b76679e9484693209..29ab93f1fd8a1da937282a1ad05b3ec48737500a 100644 (file)
 
 <xsl:template name="callout.arearef">
   <xsl:param name="arearef"></xsl:param>
-  <xsl:variable name="targets" select="id($arearef)"/>
+  <xsl:variable name="targets" select="key('id',$arearef)"/>
   <xsl:variable name="target" select="$targets[1]"/>
 
   <xsl:choose>
index 1dade1abab98be025a6c6e46e81ed5e9721e0c9b..120704343fab154f31d562600fe31ecbea0bcd65 100644 (file)
 <!-- ==================================================================== -->
 
 <xsl:template match="synopfragmentref">
-  <xsl:variable name="target" select="id(@linkend)"/>
+  <xsl:variable name="target" select="key('id',@linkend)"/>
   <xsl:variable name="snum">
     <xsl:apply-templates select="$target" mode="synopfragment.number"/>
   </xsl:variable>
index adfcbf05081325d0c85644dd07fbac5558fc81e2..57350cec845fe0bbc1a7538fe3324f37947df2e0 100644 (file)
@@ -22,7 +22,7 @@
 <!-- ==================================================================== -->
 
 <xsl:template match="xref" name="xref">
-  <xsl:variable name="targets" select="id(@linkend)"/>
+  <xsl:variable name="targets" select="key('id',@linkend)"/>
   <xsl:variable name="target" select="$targets[1]"/>
   <xsl:variable name="refelem" select="local-name($target)"/>
 
@@ -53,7 +53,7 @@
                      xsl:use-attribute-sets="xref.properties">
         <xsl:choose>
          <xsl:when test="@endterm">
-           <xsl:variable name="etargets" select="id(@endterm)"/>
+           <xsl:variable name="etargets" select="key('id',@endterm)"/>
            <xsl:variable name="etarget" select="$etargets[1]"/>
            <xsl:choose>
              <xsl:when test="count($etarget) = 0">
 <!-- ==================================================================== -->
 
 <xsl:template match="link" name="link">
-  <xsl:variable name="targets" select="id(@linkend)"/>
+  <xsl:variable name="targets" select="key('id',@linkend)"/>
   <xsl:variable name="target" select="$targets[1]"/>
 
   <xsl:call-template name="check.id.unique">
         <!-- else look for an endterm -->
         <xsl:choose>
           <xsl:when test="@endterm">
-            <xsl:variable name="etargets" select="id(@endterm)"/>
+            <xsl:variable name="etargets" select="key('id',@endterm)"/>
             <xsl:variable name="etarget" select="$etargets[1]"/>
             <xsl:choose>
               <xsl:when test="count($etarget) = 0">
index 64a1f232a404e561b566e21343fc21472a5112ad..f8fb9f3864566882fe293f6d7c8c0b14af326bd4 100644 (file)
   <xsl:variable name="next-id"
                 select="$chunk/following-sibling::chunk[1]/@id"/>
 
-  <xsl:variable name="prev" select="id($prev-id)"/>
-  <xsl:variable name="next" select="id($next-id)"/>
+  <xsl:variable name="prev" select="key('id',$prev-id)"/>
+  <xsl:variable name="next" select="key('id',$next-id)"/>
 
   <xsl:variable name="ischunk">
     <xsl:call-template name="chunk"/>
   <xsl:choose>
     <xsl:when test="$rootid != ''">
       <xsl:choose>
-        <xsl:when test="count(id($rootid)) = 0">
+        <xsl:when test="count(key('id',$rootid)) = 0">
           <xsl:message terminate="yes">
             <xsl:text>ID '</xsl:text>
             <xsl:value-of select="$rootid"/>
           </xsl:message>
         </xsl:when>
         <xsl:otherwise>
-          <xsl:apply-templates select="id($rootid)"/>
+          <xsl:apply-templates select="key('id',$rootid)"/>
         </xsl:otherwise>
       </xsl:choose>
     </xsl:when>
index 01a438117768b80161ece4e8db51e52f2a94ba98..e88e89d9d8ce3ced53d6f61c6d006fb312a0308c 100644 (file)
   <xsl:choose>
     <xsl:when test="$rootid != ''">
       <xsl:choose>
-        <xsl:when test="count(id($rootid)) = 0">
+        <xsl:when test="count(key('id',$rootid)) = 0">
           <xsl:message terminate="yes">
             <xsl:text>ID '</xsl:text>
             <xsl:value-of select="$rootid"/>
           </xsl:message>
         </xsl:when>
         <xsl:otherwise>
-          <xsl:apply-templates select="id($rootid)"/>
+          <xsl:apply-templates select="key('id',$rootid)"/>
         </xsl:otherwise>
       </xsl:choose>
     </xsl:when>
index d6a4b98c92b5ab86dccd21bc9238623fe597c4c7..b5b447b510686959d9a07f73cdf891fb5ec2da10 100644 (file)
 
 <!-- ==================================================================== -->
 
+<xsl:key name="id" match="*" use="@id"/>
+
+<!-- ==================================================================== -->
+
 <xsl:template match="*">
   <xsl:message>
     <xsl:text>No template matches </xsl:text>
   <xsl:choose>
     <xsl:when test="$rootid != ''">
       <xsl:choose>
-        <xsl:when test="count(id($rootid)) = 0">
+        <xsl:when test="count(key('id',$rootid)) = 0">
           <xsl:message terminate="yes">
             <xsl:text>ID '</xsl:text>
             <xsl:value-of select="$rootid"/>
           </xsl:message>
         </xsl:when>
         <xsl:otherwise>
-          <xsl:apply-templates select="id($rootid)" mode="process.root"/>
+          <xsl:apply-templates select="key('id',$rootid)" mode="process.root"/>
         </xsl:otherwise>
       </xsl:choose>
     </xsl:when>
index 29c70212cbcdc9d9e59a2617a13e72158b111c27..897192c95ee7510690b3ccd1af04840bc2d9d492 100644 (file)
@@ -146,7 +146,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
 </xsl:template>
 
 <xsl:template match="productionrecap">
-  <xsl:variable name="targets" select="id(@linkend)"/>
+  <xsl:variable name="targets" select="key('id',@linkend)"/>
   <xsl:variable name="target" select="$targets[1]"/>
 
   <xsl:if test="count($targets)=0">
@@ -218,7 +218,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
   <xsl:variable name="href">
     <xsl:choose>
       <xsl:when test="$linkend != ''">
-       <xsl:variable name="targets" select="id($linkend)"/>
+       <xsl:variable name="targets" select="key('id',$linkend)"/>
        <xsl:variable name="target" select="$targets[1]"/>
        <xsl:call-template name="href.target">
          <xsl:with-param name="object" select="$target"/>
@@ -238,7 +238,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
       <xsl:otherwise>
        <xsl:choose>
          <xsl:when test="$linkend != ''">
-           <xsl:variable name="targets" select="id($linkend)"/>
+           <xsl:variable name="targets" select="key('id',$linkend)"/>
            <xsl:variable name="target" select="$targets[1]"/>
            <xsl:apply-templates select="$target/lhs"/>
          </xsl:when>
@@ -273,7 +273,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
   </xsl:call-template>
 
   <xsl:variable name="href">
-    <xsl:variable name="targets" select="id(@linkend)"/>
+    <xsl:variable name="targets" select="key('id',@linkend)"/>
     <xsl:variable name="target" select="$targets[1]"/>
     <xsl:call-template name="href.target">
       <xsl:with-param name="object" select="$target"/>
@@ -288,7 +288,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
       <xsl:text>: </xsl:text>
     </xsl:when>
     <xsl:otherwise>
-      <xsl:variable name="targets" select="id(@linkend)"/>
+      <xsl:variable name="targets" select="key('id',@linkend)"/>
       <xsl:variable name="target" select="$targets[1]"/>
       <xsl:if test="$target/@role">
        <xsl:value-of select="$target/@role"/>
@@ -298,7 +298,7 @@ to be incomplete. Don't forget to read the source, too :-)</para>
   </xsl:choose>
 
   <a href="{$href}">
-    <xsl:variable name="targets" select="id(@linkend)"/>
+    <xsl:variable name="targets" select="key('id',@linkend)"/>
     <xsl:variable name="target" select="$targets[1]"/>
     <xsl:apply-templates select="$target" mode="title.markup"/>
   </a>
index ee2607b8f0922574e098bdcafb3bdc6d1a59ee28..64b9b3d1b1c625d3f6e1a57136de3c8f5b822a6c 100644 (file)
@@ -44,7 +44,7 @@
 </xsl:template>
 
 <xsl:template match="footnoteref">
-  <xsl:variable name="targets" select="id(@linkend)"/>
+  <xsl:variable name="targets" select="key('id',@linkend)"/>
   <xsl:variable name="footnote" select="$targets[1]"/>
   <xsl:variable name="href">
     <xsl:text>#ftn.</xsl:text>
index fa8c07227317e7024cf87ea8770954182f58fd4e..7416db1f0449690002c85a817d1a800847172e7d 100644 (file)
 <xsl:template match="glossterm">
   <xsl:choose>
     <xsl:when test="@linkend">
-      <xsl:variable name="targets" select="id(@linkend)"/>
+      <xsl:variable name="targets" select="key('id',@linkend)"/>
       <xsl:variable name="target" select="$targets[1]"/>
 
       <xsl:call-template name="check.id.unique">
index 338b23169575e5ab799a4f959b9975a28ee9d8ff..050f7ce556da7fe0d9e2688927c0fb7d9fc211a0 100644 (file)
 
 <xsl:template name="callout.arearef">
   <xsl:param name="arearef"></xsl:param>
-  <xsl:variable name="targets" select="id($arearef)"/>
+  <xsl:variable name="targets" select="key('id',$arearef)"/>
   <xsl:variable name="target" select="$targets[1]"/>
 
   <xsl:call-template name="check.id.unique">
index 40a2dace48ec26e4d7cb1be341676b752242b373..234b41d475083591f72ec10e46925dd335cc43dd 100644 (file)
@@ -156,7 +156,6 @@ to be incomplete. Don't forget to read the source, too :-)</para>
 </reference>
 
 <reference><title>XSLT Processing</title>
-&use.id.function;
 &rootid;
 &suppress.navigation;
 </reference>
@@ -382,7 +381,6 @@ around all these parameters.</para>
 <src:fragref linkend="ulink.target.frag"/>
 <src:fragref linkend="use.extensions.frag"/>
 <src:fragref linkend="use.id.as.filename.frag"/>
-<src:fragref linkend="use.id.function.frag"/>
 <src:fragref linkend="using.chunker.frag"/>
 <src:fragref linkend="table.borders.with.css.frag"/>
 <src:fragref linkend="table.border.thickness.frag"/>
index ee908a2d4db7d1ba980285f4f5bdb01f682afcfd..883ad4820b8c0ff8f0d6f52ce169b30ccadb33da 100644 (file)
 <!-- ==================================================================== -->
 
 <xsl:template match="synopfragmentref">
-  <xsl:variable name="target" select="id(@linkend)"/>
+  <xsl:variable name="target" select="key('id',@linkend)"/>
   <xsl:variable name="snum">
     <xsl:apply-templates select="$target" mode="synopfragment.number"/>
   </xsl:variable>
index f33a1a141d81395cfc583d74d2071eb05e9662a3..f2f6b511795489f3a4b4885005d7b213a146eb02 100644 (file)
 </xsl:template>
 
 <xsl:template name="tocentry-content">
-  <xsl:variable name="targets" select="id(@linkend)"/>
+  <xsl:variable name="targets" select="key('id',@linkend)"/>
   <xsl:variable name="target" select="$targets[1]"/>
 
   <xsl:choose>
index 8713d73bb12cc0d695679fc250ce74fd69c189c3..4fec41a6c9ce6d7f0737692a280ee2b7b471bdfc 100644 (file)
@@ -23,7 +23,7 @@
 <!-- ==================================================================== -->
 
 <xsl:template match="xref" name="xref">
-  <xsl:variable name="targets" select="id(@linkend)"/>
+  <xsl:variable name="targets" select="key('id',@linkend)"/>
   <xsl:variable name="target" select="$targets[1]"/>
   <xsl:variable name="refelem" select="local-name($target)"/>
 
@@ -64,7 +64,7 @@
 
       <xsl:choose>
         <xsl:when test="@endterm">
-          <xsl:variable name="etargets" select="id(@endterm)"/>
+          <xsl:variable name="etargets" select="key('id',@endterm)"/>
           <xsl:variable name="etarget" select="$etargets[1]"/>
           <xsl:choose>
             <xsl:when test="count($etarget) = 0">
 <!-- ==================================================================== -->
 
 <xsl:template match="link" name="link">
-  <xsl:variable name="targets" select="id(@linkend)"/>
+  <xsl:variable name="targets" select="key('id',@linkend)"/>
   <xsl:variable name="target" select="$targets[1]"/>
 
   <xsl:call-template name="check.id.unique">
         <!-- else look for an endterm -->
         <xsl:choose>
           <xsl:when test="@endterm">
-            <xsl:variable name="etargets" select="id(@endterm)"/>
+            <xsl:variable name="etargets" select="key('id',@endterm)"/>
             <xsl:variable name="etarget" select="$etargets[1]"/>
             <xsl:choose>
               <xsl:when test="count($etarget) = 0">
     <xsl:choose>
       <xsl:when test="@linkmode">
         <!-- use the linkmode to get the base URI, use localinfo as fragid -->
-        <xsl:variable name="modespec" select="id(@linkmode)"/>
+        <xsl:variable name="modespec" select="key('id',@linkmode)"/>
         <xsl:if test="count($modespec) != 1
                       or local-name($modespec) != 'modespec'">
           <xsl:message>Warning: olink linkmode pointer is wrong.</xsl:message>