Ignore:
Timestamp:
Jan 31, 2010, 3:09:48 PM (10 years ago)
Author:
julian.reschke@…
Message:

Update to latest version of xml2rfc and rfc2629.xslt, bump document dates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rfc2629xslt/rfc2629toXHTML.xslt

    r741 r754  
    242242    <xsl:with-param name="nodes" select="/processing-instruction('rfc-ext')"/>
    243243    <xsl:with-param name="attr" select="'duplex'"/>
    244     <xsl:with-param name="default" select="'no'"/>
    245   </xsl:call-template>
    246 </xsl:param>
    247 
    248 <!-- experimental support for RFC 5741, work in progress -->
    249 
    250 <xsl:param name="xml2rfc-ext-hab">
    251   <xsl:call-template name="parse-pis">
    252     <xsl:with-param name="nodes" select="/processing-instruction('rfc-ext')"/>
    253     <xsl:with-param name="attr" select="'h-a-b'"/>
    254244    <xsl:with-param name="default" select="'no'"/>
    255245  </xsl:call-template>
     
    370360</xsl:variable>
    371361
     362<xsl:variable name="rfc-boilerplate">
     363  <xsl:choose>
     364    <!-- RFC boilerplate as defined in RFC 5741, and deployed end of Dec 2009 -->
     365    <xsl:when test="$pub-yearmonth &gt;= 201001 or       ($rfcno=5741 or $rfcno=5742 or $rfcno=5743)">2010</xsl:when>
     366    <xsl:when test="$xml2rfc-ext-tlp='4'">2010</xsl:when>
     367    <xsl:otherwise/>
     368  </xsl:choose>   
     369</xsl:variable>
     370
     371<xsl:variable name="id-boilerplate">
     372  <xsl:choose>
     373    <!-- ID boilerplate approved by IESG on Jan 14 2010-->
     374    <xsl:when test="$pub-yearmonth &gt;= 201004">2010</xsl:when>
     375    <xsl:otherwise/>
     376  </xsl:choose>   
     377</xsl:variable>
     378
    372379<xsl:variable name="ipr-rfc4748" select="(   $ipr-rfc3667 and     ( $rfcno &gt;= 4715 and ( $rfcno != 4718 and $rfcno != 4735 and $rfcno != 4749 ))     or     ( $rfcno=4578 or $rfcno=4582 or $rfcno=4583 or $rfcno=4628 or $rfcno=4629 or $rfcno=4639 or $rfcno=4651 or $rfcno=4682 or $rfcno=4684 or $rfcno=4695 or $rfcno=4696 )     or     ( not(/rfc/@number) and $pub-yearmonth &gt;= 200611)   )"/>
    373380
     
    381388     for IDs, and around 2009-09 for RFCs-->
    382389<xsl:variable name="ipr-2009-09" select="(     ( not(/rfc/@number) and $pub-yearmonth &gt;= 200911 )     or     (       /rfc/@number and $pub-yearmonth &gt;= 200909 and       $rfcno!=5582 and $rfcno!=5621 and $rfcno!=5632 and $rfcno!=5645 and $rfcno!=5646 and $rfcno!=5681      )   )"/>
     390
     391<!-- this makes the Jan 2010 TLP text depend on the tlp ext PI
     392     for IDs, and around 2010-01 for RFCs-->
     393<xsl:variable name="ipr-2010-01" select="(     ( not(/rfc/@number) and $xml2rfc-ext-tlp='4' )     or     (       /rfc/@number and ($pub-yearmonth &gt;= 201001 or       $rfcno=5741 or $rfcno=5742 or $rfcno=5743)      )   )"/>
    383394
    384395<!-- see http://mailman.rfc-editor.org/pipermail/rfc-interest/2009-June/001373.html -->
     
    400411<!-- does the document contain edits? -->
    401412<xsl:variable name="has-edits" select="//ed:ins | //ed:del | //ed:replace"/>
    402 
    403 <!-- Templates for the various elements of rfc2629.dtd -->
    404413             
    405414<xsl:template match="text()[not(ancestor::artwork)]">
    406   <xsl:variable name="starts-with-ws" select="translate(substring(.,1,1),'&#x9;&#xA;&#xD; ','')"/>
    407   <xsl:variable name="ends-with-ws" select="translate(substring(.,string-length(.),1),'&#x9;&#xA;&#xD; ','')"/>
     415  <xsl:variable name="ws" select="'&#x9;&#xA;&#xD; '"/>
     416  <xsl:variable name="starts-with-ws" select="translate(substring(.,1,1),$ws,'')"/>
     417  <xsl:variable name="ends-with-ws" select="translate(substring(.,string-length(.),1),$ws,'')"/>
    408418  <!--<xsl:message> Orig: "<xsl:value-of select="."/>"</xsl:message>
    409419  <xsl:message>Start: "<xsl:value-of select="$starts-with-ws"/>"</xsl:message>
     
    764774</xsl:template>
    765775
    766 <xsl:template match="back">
     776<!-- this is a named template because <back> may be absent -->
     777<xsl:template name="back">
    767778
    768779  <!-- add editorial comments -->
     
    777788     
    778789  <!-- add all other top-level sections under <back> -->
    779   <xsl:apply-templates select="*[not(self::references) and not(self::ed:replace and .//references)]"/>
     790  <xsl:apply-templates select="back/*[not(self::references) and not(self::ed:replace and .//references)]"/>
    780791
    781792  <!-- insert the index if index entries exist -->
     
    15751586      <link rel="Author" href="#{$anchor-prefix}.authors"/>
    15761587      <xsl:if test="$xml2rfc-private=''">
    1577         <link rel="Copyright" href="#{$anchor-prefix}.copyright"/>
     1588        <xsl:choose>
     1589          <xsl:when test="$no-copylong">
     1590            <link rel="Copyright" href="#{$anchor-prefix}.copyrightnotice"/>
     1591          </xsl:when>
     1592          <xsl:otherwise>
     1593            <link rel="Copyright" href="#{$anchor-prefix}.copyright"/>
     1594          </xsl:otherwise>
     1595        </xsl:choose>
    15781596      </xsl:if>
    15791597      <xsl:if test="$has-index">
     
    16131631      <xsl:if test="$xml2rfc-ext-support-rfc2731!='no'">
    16141632        <!-- Dublin Core Metadata -->
    1615         <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"/>
     1633        <link rel="schema.dct" href="http://purl.org/dc/terms/"/>
    16161634             
    16171635        <!-- DC creator, see RFC2731 -->
     
    16201638            <xsl:call-template name="format-initials"/>
    16211639          </xsl:variable>
    1622           <meta name="DC.Creator" content="{concat(@surname,', ',$initials)}"/>
     1640          <meta name="dct.creator" content="{concat(@surname,', ',$initials)}"/>
    16231641        </xsl:for-each>
    16241642       
     
    16261644          <xsl:choose>
    16271645            <xsl:when test="@number">
    1628               <meta name="DC.Identifier" content="urn:ietf:rfc:{@number}"/>
     1646              <meta name="dct.identifier" content="urn:ietf:rfc:{@number}"/>
    16291647            </xsl:when>
    16301648            <xsl:when test="@docName">
    1631               <meta name="DC.Identifier" content="urn:ietf:id:{@docName}"/>
     1649              <meta name="dct.identifier" content="urn:ietf:id:{@docName}"/>
    16321650            </xsl:when>
    16331651            <xsl:otherwise/>
    16341652          </xsl:choose>
    1635           <meta name="DC.Date.Issued" scheme="ISO8601">
     1653          <meta name="dct.issued" scheme="ISO8601">
    16361654            <xsl:attribute name="content">
    16371655              <xsl:value-of select="concat($xml2rfc-ext-pub-year,'-',$pub-month-numeric)"/>
     
    16501668 
    16511669        <xsl:if test="front/abstract">
    1652           <meta name="DC.Description.Abstract" content="{normalize-space(front/abstract)}"/>
     1670          <meta name="dct.abstract" content="{normalize-space(front/abstract)}"/>
    16531671        </xsl:if>     
    16541672
    16551673        <xsl:if test="@number">
    1656           <meta name="DC.isPartOf" content="urn:issn:2070-1721"/>
     1674          <meta name="dct.isPartOf" content="urn:issn:2070-1721"/>
    16571675        </xsl:if>     
    16581676
    16591677      </xsl:if>
    16601678     
    1661       <!-- this replicates dc.description.abstract, but is used by Google & friends -->
     1679      <!-- this replicates dct.abstract, but is used by Google & friends -->
    16621680      <xsl:if test="front/abstract">
    16631681        <meta name="description" content="{normalize-space(front/abstract)}"/>
     
    16711689      <xsl:apply-templates select="front"/>
    16721690      <xsl:apply-templates select="middle"/>
    1673       <xsl:apply-templates select="back"/>
     1691      <xsl:call-template name="back"/>
    16741692    </body>
    16751693  </html>
     
    23872405      </xsl:when>
    23882406      <xsl:otherwise>
     2407        <xsl:if test="starts-with(/rfc/@docName,'draft-ietf-') and not(/rfc/front/workgroup)">
     2408          <xsl:call-template name="info">
     2409            <xsl:with-param name="inline" select="'no'"/>
     2410            <xsl:with-param name="msg">WG submissions should include a /rfc/front/workgroup element</xsl:with-param>
     2411          </xsl:call-template>
     2412        </xsl:if>
    23892413        <myns:item>Network Working Group</myns:item>
    23902414      </xsl:otherwise>
     
    23922416    <myns:item>
    23932417       <xsl:choose>
    2394         <xsl:when test="/rfc/@ipr and not(/rfc/@number)">Internet Draft</xsl:when>
     2418        <xsl:when test="/rfc/@ipr and not(/rfc/@number)">Internet-Draft</xsl:when>
    23952419        <xsl:otherwise>Request for Comments: <xsl:value-of select="/rfc/@number"/></xsl:otherwise>
    23962420      </xsl:choose>
    23972421    </myns:item>
    2398     <xsl:if test="/rfc/@obsoletes and /rfc/@obsoletes!=''">
     2422    <xsl:if test="/rfc/@obsoletes!=''">
    23992423      <myns:item>
    24002424        <xsl:text>Obsoletes: </xsl:text>
     
    24152439      </myns:item>
    24162440    </xsl:if>
    2417     <xsl:if test="/rfc/@updates and /rfc/@updates!=''">
     2441    <xsl:if test="/rfc/@updates!=''">
    24182442      <myns:item>
    24192443        <xsl:text>Updates: </xsl:text>
     
    27122736          <t>
    27132737            This document is subject to the rights, licenses and restrictions
    2714             contained in BCP 78<xsl:if test="$submissionType='independent'"> and at <eref target="http://www.rfc-editor.org/copyright.html"/></xsl:if>, and except as set forth therein, the authors
     2738            contained in BCP 78<xsl:if test="$submissionType='independent'"> and at <eref target="http://www.rfc-editor.org/copyright.html">http://www.rfc-editor.org/copyright.html</eref></xsl:if>, and except as set forth therein, the authors
    27152739            retain all their rights.
    27162740          </t>
     
    27492773          <t>
    27502774            The limited permissions granted above are perpetual and will not be
    2751             revoked by the Internet Society or its successors or assignees.
     2775            revoked by the Internet Society or its successors or assigns.
    27522776          </t>
    27532777          <t>
     
    27822806            of such proprietary rights by implementers or users of this
    27832807            specification can be obtained from the IETF on-line IPR repository
    2784             at <eref target="http://www.ietf.org/ipr"/>.
     2808            at <eref target="http://www.ietf.org/ipr">http://www.ietf.org/ipr</eref>.
    27852809          </t>       
    27862810          <t>
     
    38573881          </xsl:when>
    38583882 
    3859           <!-- as of Feb 2010 -->
    3860           <xsl:when test="$xml2rfc-ext-tlp='4' and (/rfc/@ipr = 'trust200902'                           or /rfc/@ipr = 'noModificationTrust200902'                           or /rfc/@ipr = 'noDerivativesTrust200902'                           or /rfc/@ipr = 'pre5378Trust200902')">
     3883          <!-- as of Jan 2010, TLP 4.0 -->
     3884          <xsl:when test="$ipr-2010-01 and (/rfc/@ipr = 'trust200902'                           or /rfc/@ipr = 'noModificationTrust200902'                           or /rfc/@ipr = 'noDerivativesTrust200902'                           or /rfc/@ipr = 'pre5378Trust200902')">
    38613885            This Internet-Draft is submitted in full conformance with
    38623886            the provisions of BCP 78 and BCP 79.
     
    39013925        </xsl:choose>
    39023926      </t>
    3903       <t>
    3904         Internet-Drafts are working documents of the Internet Engineering
    3905         Task Force (IETF), its areas, and its working groups.
    3906         Note that other groups may also distribute working documents as
    3907         Internet-Drafts.
    3908       </t>
     3927      <xsl:choose>
     3928        <xsl:when test="$id-boilerplate='2010'">
     3929          <t>
     3930            Internet-Drafts are working documents of the Internet Engineering
     3931            Task Force (IETF). Note that other groups may also distribute
     3932            working documents as Internet-Drafts. The list of current
     3933            Internet-Drafts is at <eref target="http://datatracker.ietf.org/drafts/current/">http://datatracker.ietf.org/drafts/current/</eref>.
     3934          </t>
     3935        </xsl:when>
     3936        <xsl:otherwise>
     3937          <t>
     3938            Internet-Drafts are working documents of the Internet Engineering
     3939            Task Force (IETF), its areas, and its working groups.
     3940            Note that other groups may also distribute working documents as
     3941            Internet-Drafts.
     3942          </t>
     3943        </xsl:otherwise>
     3944      </xsl:choose>
    39093945      <t>
    39103946        Internet-Drafts are draft documents valid for a maximum of six months
     
    39133949        them other than as &#8220;work in progress&#8221;.
    39143950      </t>
    3915       <t>
    3916         The list of current Internet-Drafts can be accessed at
    3917         <eref target="http://www.ietf.org/ietf/1id-abstracts.txt"/>.
    3918       </t>
    3919       <t>
    3920         The list of Internet-Draft Shadow Directories can be accessed at
    3921         <eref target="http://www.ietf.org/shadow.html"/>.
    3922       </t>
     3951      <xsl:if test="$id-boilerplate=''">
     3952        <t>
     3953          The list of current Internet-Drafts can be accessed at
     3954          <eref target="http://www.ietf.org/ietf/1id-abstracts.txt">http://www.ietf.org/ietf/1id-abstracts.txt</eref>.
     3955        </t>
     3956        <t>
     3957          The list of Internet-Draft Shadow Directories can be accessed at
     3958          <eref target="http://www.ietf.org/shadow.html">http://www.ietf.org/shadow.html</eref>.
     3959        </t>
     3960      </xsl:if>
    39233961      <t>
    39243962        This Internet-Draft will expire in <xsl:call-template name="expirydate"/>.
     
    39263964    </xsl:when>
    39273965
    3928     <xsl:when test="/rfc/@category='bcp' and $xml2rfc-ext-hab='yes'">
     3966    <xsl:when test="/rfc/@category='bcp' and $rfc-boilerplate='2010'">
    39293967      <t>
    39303968        This memo documents an Internet Best Current Practice.
     
    39383976      </t>
    39393977    </xsl:when>
    3940     <xsl:when test="/rfc/@category='exp' and $xml2rfc-ext-hab='yes'">
     3978    <xsl:when test="/rfc/@category='exp' and $rfc-boilerplate='2010'">
    39413979      <t>
    39423980        This document is not an Internet Standards Track specification; it is
     
    39523990      </t>
    39533991    </xsl:when>
    3954     <xsl:when test="/rfc/@category='historic' and $xml2rfc-ext-hab='yes'">
     3992    <xsl:when test="/rfc/@category='historic' and $rfc-boilerplate='2010'">
    39553993      <t>
    39563994        This document is not an Internet Standards Track specification; it is
     
    39654003      </t>
    39664004    </xsl:when>
    3967     <xsl:when test="/rfc/@category='std' and $xml2rfc-ext-hab='yes'">
     4005    <xsl:when test="/rfc/@category='std' and $rfc-boilerplate='2010'">
    39684006      <t>
    39694007        This is an Internet Standards Track document.
     
    39794017      </t>
    39804018    </xsl:when>
    3981     <xsl:when test="(/rfc/@category='info' or not(/rfc/@category)) and $xml2rfc-ext-hab='yes'">
     4019    <xsl:when test="(/rfc/@category='info' or not(/rfc/@category)) and $rfc-boilerplate='2010'">
    39824020      <t>
    39834021        This document is not an Internet Standards Track specification; it is
     
    40044042   
    40054043  <!-- 2nd and 3rd paragraph -->
    4006   <xsl:if test="$xml2rfc-ext-hab='yes'">
     4044  <xsl:if test="$rfc-boilerplate='2010' and /rfc/@number">
    40074045    <t>
    40084046      <xsl:if test="/rfc/@category='exp'">
     
    41144152        </t>
    41154153        <xsl:choose>
    4116           <xsl:when test="$ipr-2009-09 and $xml2rfc-ext-tlp='4'">
     4154          <xsl:when test="$ipr-2010-01">
    41174155            <t>
    41184156              This document is subject to BCP 78 and the IETF Trust's Legal
     
    42664304</xsl:template>
    42674305
    4268 <xsl:template match="back" mode="toc">
     4306<xsl:template name="back-toc">
    42694307
    42704308  <xsl:if test="//cref and $xml2rfc-comments='yes' and $xml2rfc-inline!='yes'">
     
    42804318    <xsl:apply-templates select="/rfc/front" mode="toc"/>
    42814319  </xsl:if>
    4282   <xsl:apply-templates select="*[not(self::references)]" mode="toc"/>
     4320  <xsl:apply-templates select="back/*[not(self::references)]" mode="toc"/>
    42834321
    42844322  <!-- insert the index if index entries exist -->
     
    44684506
    44694507<xsl:template match="rfc" mode="toc">
    4470   <xsl:apply-templates select="middle|back" mode="toc"/>
     4508  <xsl:apply-templates select="middle" mode="toc"/>
     4509  <xsl:call-template name="back-toc"/>
    44714510</xsl:template>
    44724511
     
    45544593<xsl:template name="rfc-or-id-link">
    45554594  <xsl:param name="name"/>
    4556   <xsl:call-template name="check-front-matter-ref">
    4557     <xsl:with-param name="name" select="$name"/>
    4558   </xsl:call-template>
    4559   <a xmlns="http://www.w3.org/1999/xhtml">
    4560     <xsl:attribute name="href">
    4561       <xsl:choose>
    4562         <xsl:when test="starts-with($name,'draft-')">
    4563           <xsl:value-of select="concat($internetDraftUrlPrefix,$name,$internetDraftUrlPostfix)"/>
    4564         </xsl:when>
    4565         <xsl:otherwise>
    4566           <xsl:value-of select="concat($rfcUrlPrefix,$name,$rfcUrlPostfix)"/>
    4567         </xsl:otherwise>
    4568       </xsl:choose>
    4569     </xsl:attribute>
    4570     <xsl:value-of select="$name"/>
    4571   </a>
     4595 
     4596  <xsl:choose>
     4597    <xsl:when test="starts-with($name,'draft-')">
     4598      <a xmlns="http://www.w3.org/1999/xhtml" href="{concat($internetDraftUrlPrefix,$name,$internetDraftUrlPostfix)}"><xsl:value-of select="$name"/></a>
     4599      <xsl:call-template name="check-front-matter-ref">
     4600        <xsl:with-param name="name" select="$name"/>
     4601      </xsl:call-template>
     4602    </xsl:when>
     4603    <xsl:when test="number($name)=$name">
     4604      <a xmlns="http://www.w3.org/1999/xhtml" href="{concat($rfcUrlPrefix,$name,$rfcUrlPostfix)}"><xsl:value-of select="$name"/></a>
     4605      <xsl:call-template name="check-front-matter-ref">
     4606        <xsl:with-param name="name" select="$name"/>
     4607      </xsl:call-template>
     4608    </xsl:when>
     4609    <xsl:otherwise>
     4610      <xsl:value-of select="$name"/>
     4611      <xsl:call-template name="warning">
     4612        <xsl:with-param name="inline" select="'no'"/>
     4613        <xsl:with-param name="msg" select="concat('In metadata obsoletes/updates, RFC number of draft name is expected - found: ',$name)"/>
     4614      </xsl:call-template>
     4615    </xsl:otherwise>
     4616  </xsl:choose>
    45724617</xsl:template>
    45734618
     
    46424687    <xsl:when test="contains($list,',')">
    46434688      <xsl:variable name="rfcNo" select="substring-before($list,',')"/>
    4644       <meta xmlns="http://www.w3.org/1999/xhtml" name="DC.Relation.Replaces" content="urn:ietf:rfc:{$rfcNo}"/>
     4689      <meta xmlns="http://www.w3.org/1999/xhtml" name="dct.replaces" content="urn:ietf:rfc:{$rfcNo}"/>
    46454690      <xsl:call-template name="rfclist-for-dcmeta">
    46464691        <xsl:with-param name="list" select="normalize-space(substring-after($list,','))"/>
     
    46494694    <xsl:otherwise>
    46504695      <xsl:variable name="rfcNo" select="$list"/>
    4651       <meta xmlns="http://www.w3.org/1999/xhtml" name="DC.Relation.Replaces" content="urn:ietf:rfc:{$rfcNo}"/>
     4696      <meta xmlns="http://www.w3.org/1999/xhtml" name="dct.replaces" content="urn:ietf:rfc:{$rfcNo}"/>
    46524697    </xsl:otherwise>
    46534698  </xsl:choose>
     
    47094754<!-- Notes -->
    47104755<xsl:template match="x:note">
     4756  <xsl:variable name="p">
     4757    <xsl:call-template name="get-paragraph-number"/>
     4758  </xsl:variable>
     4759
    47114760  <div xmlns="http://www.w3.org/1999/xhtml" class="note">
     4761    <xsl:if test="$p!='' and not(ancestor::ed:del) and not(ancestor::ed:ins)">
     4762      <xsl:attribute name="id"><xsl:value-of select="$anchor-prefix"/>.section.<xsl:value-of select="$p"/></xsl:attribute>
     4763    </xsl:if>
    47124764    <xsl:apply-templates/>
    47134765  </div>
     
    55305582</xsl:template>
    55315583
     5584<xsl:template name="info">
     5585  <xsl:param name="msg"/>
     5586  <xsl:param name="msg2"/>
     5587  <xsl:param name="inline"/>
     5588  <xsl:call-template name="emit-message">
     5589    <xsl:with-param name="level">INFO</xsl:with-param>
     5590    <xsl:with-param name="msg" select="$msg"/>
     5591    <xsl:with-param name="msg2" select="$msg2"/>
     5592    <xsl:with-param name="inline" select="$inline"/>
     5593  </xsl:call-template>
     5594</xsl:template>
     5595
    55325596<xsl:template name="error">
    55335597  <xsl:param name="msg"/>
     
    58485912    <xsl:when test="$xml2rfc-header!=''"><xsl:value-of select="$xml2rfc-header"/></xsl:when>
    58495913    <xsl:when test="$xml2rfc-private!=''"/> <!-- private draft, header not set -->
    5850     <xsl:when test="/rfc/@ipr and not(/rfc/@number)">INTERNET DRAFT</xsl:when>
     5914    <xsl:when test="/rfc/@ipr and not(/rfc/@number)">Internet-Draft</xsl:when>
    58515915    <xsl:otherwise>RFC <xsl:value-of select="/rfc/@number"/></xsl:otherwise>
    58525916  </xsl:choose>
     
    58575921    <xsl:text>http://greenbytes.de/tech/webdav/rfc2629.xslt, </xsl:text>
    58585922    <!-- when RCS keyword substitution in place, add version info -->
    5859     <xsl:if test="contains('$Revision: 1.497 $',':')">
    5860       <xsl:value-of select="concat('Revision ',normalize-space(translate(substring-after('$Revision: 1.497 $', 'Revision: '),'$','')),', ')"/>
     5923    <xsl:if test="contains('$Revision: 1.508 $',':')">
     5924      <xsl:value-of select="concat('Revision ',normalize-space(translate(substring-after('$Revision: 1.508 $', 'Revision: '),'$','')),', ')"/>
    58615925    </xsl:if>
    5862     <xsl:if test="contains('$Date: 2009-12-30 19:57:37 $',':')">
    5863       <xsl:value-of select="concat(normalize-space(translate(substring-after('$Date: 2009-12-30 19:57:37 $', 'Date: '),'$','')),', ')"/>
     5926    <xsl:if test="contains('$Date: 2010-01-29 12:52:17 $',':')">
     5927      <xsl:value-of select="concat(normalize-space(translate(substring-after('$Date: 2010-01-29 12:52:17 $', 'Date: '),'$','')),', ')"/>
    58645928    </xsl:if>
    58655929    <xsl:value-of select="concat('XSLT vendor: ',system-property('xsl:vendor'),' ',system-property('xsl:vendor-url'))"/>
Note: See TracChangeset for help on using the changeset viewer.