1773
|
1 <?xml version="1.0" encoding="utf-8"?>
|
|
2 <!-- Copyright 2004 by Laszlo Systems, Inc.
|
|
3 Released under the Artistic License.
|
|
4 Written by Oliver Steele.
|
|
5 http://osteele.com/sources/xslt/htm2db/
|
|
6
|
|
7 Utility functions
|
|
8 -->
|
|
9 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
10 xmlns:exslt="http://exslt.org/common"
|
|
11 xmlns:math="http://exslt.org/math"
|
|
12 xmlns:xalan="http://xml.apache.org/xalan"
|
|
13 xmlns:html2db="urn:html2db"
|
|
14 xmlns:db="urn:docbook"
|
|
15 xmlns:h="http://www.w3.org/1999/xhtml"
|
|
16 exclude-result-prefixes="db exslt h html2db math xalan"
|
|
17 extension-element-prefixes="html2db"
|
|
18 version="1.0">
|
|
19
|
|
20 <!-- Wrap with ", and backslash " and \ -->
|
|
21 <xsl:template name="quote">
|
|
22 <xsl:param name="str" select="string(.)"/>
|
|
23 <xsl:param name="lquo" select="'"'"/>
|
|
24 <xsl:param name="rquo" select="'"'"/>
|
|
25 <!-- first " -->
|
|
26 <xsl:variable name="qpos" select="string-length(substring-before($str, '"'))"/>
|
|
27 <!-- first \ -->
|
|
28 <xsl:variable name="bspos" select="string-length(substring-before($str, '\\'))"/>
|
|
29 <!-- first " or \ -->
|
|
30 <xsl:variable name="pos">
|
|
31 <xsl:choose>
|
|
32 <xsl:when test="$qpos=0"><xsl:value-of select="$bspos"/></xsl:when>
|
|
33 <xsl:when test="$bspos=0"><xsl:value-of select="$qpos"/></xsl:when>
|
|
34 <xsl:when test="$qpos<$bspos">
|
|
35 <xsl:value-of select="$qpos"/>
|
|
36 </xsl:when>
|
|
37 <xsl:when test="$bspos">
|
|
38 <xsl:value-of select="$bspos"/>
|
|
39 </xsl:when>
|
|
40 </xsl:choose>
|
|
41 </xsl:variable>
|
|
42 <xsl:value-of select="$lquo"/>
|
|
43 <xsl:choose>
|
|
44 <xsl:when test="$pos!=0">
|
|
45 <xsl:value-of select="substring($str, 1, $pos)"/>
|
|
46 <xsl:text>\</xsl:text>
|
|
47 <xsl:value-of select="substring($str, $pos + 1, 1)"/>
|
|
48 <xsl:call-template name="quote">
|
|
49 <xsl:with-param name="str" select="substring($str, $pos + 2)"/>
|
|
50 <xsl:with-param name="lquo" select="''"/>
|
|
51 <xsl:with-param name="rquo" select="''"/>
|
|
52 </xsl:call-template>
|
|
53 </xsl:when>
|
|
54 <xsl:otherwise>
|
|
55 <xsl:value-of select="$str"/>
|
|
56 </xsl:otherwise>
|
|
57 </xsl:choose>
|
|
58 <xsl:value-of select="$rquo"/>
|
|
59 </xsl:template>
|
|
60
|
|
61 </xsl:stylesheet>
|