📄 lib.xweb
字号:
<book xmlns:src="http://nwalsh.com/xmlns/litprog/fragment" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><bookinfo><title>XSL Library Template Reference</title><releaseinfo role="cvs">$Id: lib.xweb,v 1.1 2004/10/21 11:39:55 belamri Exp $</releaseinfo><corpauthor>DocBook Open Repository Team</corpauthor><copyright> <year>1999</year> <year>2000</year> <year>2001</year> <year>2002</year> <holder>Norman Walsh</holder></copyright></bookinfo><preface><title>Introduction</title><para>This is technical reference documentation for the DocBook XSLStylesheets; it documents (some of) the parameters, templates, andother elements of the stylesheets.</para><para>This is not intended to be <quote>user</quote> documentation.It is provided for developers writing customization layers for thestylesheets, and for anyone who's interested in <quote>how itworks</quote>.</para><para>Although I am trying to be thorough, this documentation is knownto be incomplete. Don't forget to read the source, too :-)</para></preface><reference><title>General Library Templates</title><refentry id="dot.count"><refnamediv><refname>dot.count</refname><refpurpose>Returns the number of <quote>.</quote> characters in a string</refpurpose></refnamediv><refsect1><title>Description</title><programlisting><src:fragment id='dot.count.frag'><xsl:template name="dot.count"> <!-- Returns the number of "." characters in a string --> <xsl:param name="string"></xsl:param> <xsl:param name="count" select="0"/> <xsl:choose> <xsl:when test="contains($string, '.')"> <xsl:call-template name="dot.count"> <xsl:with-param name="string" select="substring-after($string, '.')"/> <xsl:with-param name="count" select="$count+1"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$count"/> </xsl:otherwise> </xsl:choose></xsl:template></src:fragment></programlisting></refsect1></refentry><!-- ================================================================== --><refentry id="copy-string"><refnamediv><refname>copy-string</refname><refpurpose>Returns <quote>count</quote> copies of a string</refpurpose></refnamediv><refsect1><title>Description</title><programlisting><src:fragment id='copy-string.frag'><xsl:template name="copy-string"> <!-- returns 'count' copies of 'string' --> <xsl:param name="string"></xsl:param> <xsl:param name="count" select="0"/> <xsl:param name="result"></xsl:param> <xsl:choose> <xsl:when test="$count>0"> <xsl:call-template name="copy-string"> <xsl:with-param name="string" select="$string"/> <xsl:with-param name="count" select="$count - 1"/> <xsl:with-param name="result"> <xsl:value-of select="$result"/> <xsl:value-of select="$string"/> </xsl:with-param> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$result"/> </xsl:otherwise> </xsl:choose></xsl:template></src:fragment></programlisting></refsect1></refentry><!-- ====================================================================== --><refentry id="string.subst"><refnamediv><refname>string.subst</refname><refpurpose>Substitute one text string for another in a string</refpurpose></refnamediv><refsect1><title>Description</title><para>The <function>string.subst</function> template replaces alloccurances of <parameter>target</parameter> in <parameter>string</parameter>with <parameter>replacement</parameter> and returns the result.</para><programlisting><src:fragment id='string.subst.frag'><xsl:template name="string.subst"> <xsl:param name="string"></xsl:param> <xsl:param name="target"></xsl:param> <xsl:param name="replacement"></xsl:param> <xsl:choose> <xsl:when test="contains($string, $target)"> <xsl:variable name="rest"> <xsl:call-template name="string.subst"> <xsl:with-param name="string" select="substring-after($string, $target)"/> <xsl:with-param name="target" select="$target"/> <xsl:with-param name="replacement" select="$replacement"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="concat(substring-before($string, $target), $replacement, $rest)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$string"/> </xsl:otherwise> </xsl:choose></xsl:template></src:fragment></programlisting></refsect1></refentry><!-- ================================================================== --><refentry id="xpointer.idref"><refnamediv><refname>xpointer.idref</refname><refpurpose>Extract IDREF from an XPointer</refpurpose></refnamediv><refsect1><title>Description</title><para>The <function>xpointer.idref</function> template returns theID portion of an XPointer which is a pointer to an ID within the currentdocument, or the empty string if it is not.</para><para>In other words, <function>xpointer.idref</function> returns<quote>foo</quote> when passed either <literal>#foo</literal>or <literal>#xpointer(id('foo'))</literal>, otherwise it returnsthe empty string.</para><programlisting><src:fragment id='xpointer.idref.frag'><xsl:template name="xpointer.idref"> <xsl:param name="xpointer">http://...</xsl:param> <xsl:choose> <xsl:when test="starts-with($xpointer, '#xpointer(id(')"> <xsl:variable name="rest" select="substring-after($xpointer, '#xpointer(id(')"/> <xsl:variable name="quote" select="substring($rest, 1, 1)"/> <xsl:value-of select="substring-before(substring-after($xpointer, $quote), $quote)"/> </xsl:when> <xsl:when test="starts-with($xpointer, '#')"> <xsl:value-of select="substring-after($xpointer, '#')"/> </xsl:when> <!-- otherwise it's a pointer to some other document --> </xsl:choose></xsl:template></src:fragment></programlisting></refsect1></refentry><!-- ================================================================== --><refentry id="length-magnitude"><refnamediv><refname>length-magnitude</refname><refpurpose>Return the unqualified dimension from a length specification</refpurpose></refnamediv><refsect1><title>Description</title><para>The <function>length-magnitude</function> template returns theunqualified length ("20" for "20pt") from a dimension.</para><programlisting><src:fragment id='length-magnitude.frag'><xsl:template name="length-magnitude"> <xsl:param name="length" select="'0pt'"/> <xsl:choose> <xsl:when test="string-length($length) = 0"/> <xsl:when test="substring($length,1,1) = '0' or substring($length,1,1) = '1' or substring($length,1,1) = '2' or substring($length,1,1) = '3' or substring($length,1,1) = '4' or substring($length,1,1) = '5' or substring($length,1,1) = '6' or substring($length,1,1) = '7' or substring($length,1,1) = '8' or substring($length,1,1) = '9' or substring($length,1,1) = '.'"> <xsl:value-of select="substring($length,1,1)"/> <xsl:call-template name="length-magnitude"> <xsl:with-param name="length" select="substring($length,2)"/> </xsl:call-template> </xsl:when> </xsl:choose></xsl:template></src:fragment></programlisting></refsect1></refentry><!-- ================================================================== --><refentry id="length-units"><refnamediv><refname>length-units</refname><refpurpose>Return the units from a length specification</refpurpose></refnamediv><refsect1><title>Description</title><para>The <function>length-units</function> template returns theunits ("pt" for "20pt") from a length. If no units are supplied on thelength, the <parameter>defauilt.units</parameter> are returned.</para><programlisting><src:fragment id='length-units.frag'><xsl:template name="length-units"> <xsl:param name="length" select="'0pt'"/> <xsl:param name="default.units" select="'px'"/> <xsl:variable name="magnitude"> <xsl:call-template name="length-magnitude"> <xsl:with-param name="length" select="$length"/> </xsl:call-template> </xsl:variable> <xsl:variable name="units"> <xsl:value-of select="substring($length, string-length($magnitude)+1)"/> </xsl:variable> <xsl:choose> <xsl:when test="$units = ''"> <xsl:value-of select="$default.units"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$units"/> </xsl:otherwise> </xsl:choose></xsl:template></src:fragment></programlisting></refsect1></refentry><!-- ================================================================== --><refentry id="length-spec"><refnamediv><refname>length-spec</refname><refpurpose>Return a fully qualified length specification</refpurpose></refnamediv><refsect1><title>Description</title><para>The <function>length-spec</function> template returns thequalified length from a dimension. If an unqualified length is given,the <parameter>default.units</parameter> will be added to it.</para><programlisting><src:fragment id='length-spec.frag'><xsl:template name="length-spec"> <xsl:param name="length" select="'0pt'"/> <xsl:param name="default.units" select="'px'"/> <xsl:variable name="magnitude"> <xsl:call-template name="length-magnitude"> <xsl:with-param name="length" select="$length"/> </xsl:call-template> </xsl:variable> <xsl:variable name="units"> <xsl:value-of select="substring($length, string-length($magnitude)+1)"/> </xsl:variable> <xsl:value-of select="$magnitude"/> <xsl:choose> <xsl:when test="$units='cm' or $units='mm' or $units='in' or $units='pt' or $units='pc' or $units='px' or $units='em'"> <xsl:value-of select="$units"/> </xsl:when> <xsl:when test="$units = ''"> <xsl:value-of select="$default.units"/> </xsl:when> <xsl:otherwise> <xsl:message> <xsl:text>Unrecognized unit of measure: </xsl:text> <xsl:value-of select="$units"/> <xsl:text>.</xsl:text> </xsl:message> </xsl:otherwise> </xsl:choose></xsl:template></src:fragment></programlisting></refsect1></refentry><!-- ================================================================== --><refentry id="length-in-points"><refnamediv><refname>length-in-points</refname><refpurpose>Returns the size, in points, of a specified length</refpurpose></refnamediv><refsect1><title>Description</title><para>The <function>length-in-points</function> template converts a lengthspecification to points and returns that value as an unqualifiednumber.</para><caution><para>There is no way for the template to infer the size of an<literal>em</literal>. It relies on the default <parameter>em.size</parameter>which is initially <literal>10</literal> (for 10pt).</para><para>Similarly, converting pixesl to points relies on the<parameter>pixels.per.inch</parameter> parameter which is initially<literal>90</literal>.</para></caution><programlisting><src:fragment id='length-in-points.frag'><xsl:template name="length-in-points"> <xsl:param name="length" select="'0pt'"/> <xsl:param name="em.size" select="10"/> <xsl:param name="pixels.per.inch" select="90"/> <xsl:variable name="magnitude"> <xsl:call-template name="length-magnitude"> <xsl:with-param name="length" select="$length"/> </xsl:call-template> </xsl:variable> <xsl:variable name="units"> <xsl:value-of select="substring($length, string-length($magnitude)+1)"/> </xsl:variable> <xsl:choose> <xsl:when test="$units = 'pt'"> <xsl:value-of select="$magnitude"/> </xsl:when> <xsl:when test="$units = 'cm'"> <xsl:value-of select="$magnitude div 2.54 * 72.0"/> </xsl:when> <xsl:when test="$units = 'mm'"> <xsl:value-of select="$magnitude div 25.4 * 72.0"/> </xsl:when> <xsl:when test="$units = 'in'"> <xsl:value-of select="$magnitude * 72.0"/> </xsl:when>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -