Use xalan extensions to replace strings and avoid a stack overflow when doing deep recursions. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@276027 13f79535-47bb-0310-9956-ffa450edef68master
@@ -1,61 +1,24 @@ | |||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" | ||||
xmlns:lxslt="http://xml.apache.org/xslt" | xmlns:lxslt="http://xml.apache.org/xslt" | ||||
xmlns:redirect="org.apache.xalan.lib.Redirect" | xmlns:redirect="org.apache.xalan.lib.Redirect" | ||||
xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils" | |||||
extension-element-prefixes="redirect"> | extension-element-prefixes="redirect"> | ||||
<xsl:output method="html" indent="yes" encoding="US-ASCII"/> | <xsl:output method="html" indent="yes" encoding="US-ASCII"/> | ||||
<xsl:decimal-format decimal-separator="." grouping-separator=","/> | <xsl:decimal-format decimal-separator="." grouping-separator=","/> | ||||
<!-- | <!-- | ||||
The Apache Software License, Version 1.1 | |||||
Copyright (c) 2001-2003 The Apache Software Foundation. All rights | |||||
reserved. | |||||
Redistribution and use in source and binary forms, with or without | |||||
modification, are permitted provided that the following conditions | |||||
are met: | |||||
1. Redistributions of source code must retain the above copyright | |||||
notice, this list of conditions and the following disclaimer. | |||||
2. Redistributions in binary form must reproduce the above copyright | |||||
notice, this list of conditions and the following disclaimer in | |||||
the documentation and/or other materials provided with the | |||||
distribution. | |||||
3. The end-user documentation included with the redistribution, if | |||||
any, must include the following acknowlegement: | |||||
"This product includes software developed by the | |||||
Apache Software Foundation (http://www.apache.org/)." | |||||
Alternately, this acknowlegement may appear in the software itself, | |||||
if and wherever such third-party acknowlegements normally appear. | |||||
4. The names "Ant" and "Apache Software | |||||
Foundation" must not be used to endorse or promote products derived | |||||
from this software without prior written permission. For written | |||||
permission, please contact apache@apache.org. | |||||
5. Products derived from this software may not be called "Apache" | |||||
nor may "Apache" appear in their names without prior written | |||||
permission of the Apache Group. | |||||
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||||
DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||||
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||||
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||||
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||||
SUCH DAMAGE. | |||||
==================================================================== | |||||
This software consists of voluntary contributions made by many | |||||
individuals on behalf of the Apache Software Foundation. For more | |||||
information on the Apache Software Foundation, please see | |||||
<http://www.apache.org/>. | |||||
Copyright 2001-2004 Apache Software Foundation | |||||
Licensed under the Apache License, Version 2.0 (the "License"); | |||||
you may not use this file except in compliance with the License. | |||||
You may obtain a copy of the License at | |||||
http://www.apache.org/licenses/LICENSE-2.0 | |||||
Unless required by applicable law or agreed to in writing, software | |||||
distributed under the License is distributed on an "AS IS" BASIS, | |||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
See the License for the specific language governing permissions and | |||||
limitations under the License. | |||||
--> | --> | ||||
<!-- | <!-- | ||||
@@ -724,21 +687,9 @@ h6 { | |||||
<xsl:template name="JS-escape"> | <xsl:template name="JS-escape"> | ||||
<xsl:param name="string"/> | <xsl:param name="string"/> | ||||
<xsl:choose> | |||||
<xsl:when test="contains($string,"'")"> | |||||
<xsl:value-of select="substring-before($string,"'")"/>\'<xsl:call-template name="JS-escape"> | |||||
<xsl:with-param name="string" select="substring-after($string,"'")"/> | |||||
</xsl:call-template> | |||||
</xsl:when> | |||||
<xsl:when test="contains($string,'\')"> | |||||
<xsl:value-of select="substring-before($string,'\')"/>\\<xsl:call-template name="JS-escape"> | |||||
<xsl:with-param name="string" select="substring-after($string,'\')"/> | |||||
</xsl:call-template> | |||||
</xsl:when> | |||||
<xsl:otherwise> | |||||
<xsl:value-of select="$string"/> | |||||
</xsl:otherwise> | |||||
</xsl:choose> | |||||
<xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/> | |||||
<xsl:param name="tmp2" select="stringutils:replace(string($tmp1),"'","\'")"/> | |||||
<xsl:value-of select="$tmp2"/> | |||||
</xsl:template> | </xsl:template> | ||||
@@ -748,18 +699,8 @@ h6 { | |||||
--> | --> | ||||
<xsl:template name="br-replace"> | <xsl:template name="br-replace"> | ||||
<xsl:param name="word"/> | <xsl:param name="word"/> | ||||
<xsl:choose> | |||||
<xsl:when test="contains($word,'
')"> | |||||
<xsl:value-of select="substring-before($word,'
')"/> | |||||
<br/> | |||||
<xsl:call-template name="br-replace"> | |||||
<xsl:with-param name="word" select="substring-after($word,'
')"/> | |||||
</xsl:call-template> | |||||
</xsl:when> | |||||
<xsl:otherwise> | |||||
<xsl:value-of select="$word"/> | |||||
</xsl:otherwise> | |||||
</xsl:choose> | |||||
<xsl:param name="br"><br/></xsl:param> | |||||
<xsl:value-of select='stringutils:replace(string($word),"
",$br)'/> | |||||
</xsl:template> | </xsl:template> | ||||
<xsl:template name="display-time"> | <xsl:template name="display-time"> | ||||
@@ -1,59 +1,23 @@ | |||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> | |||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" | |||||
xmlns:lxslt="http://xml.apache.org/xslt" | |||||
xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils"> | |||||
<xsl:output method="html" indent="yes" encoding="US-ASCII" | <xsl:output method="html" indent="yes" encoding="US-ASCII" | ||||
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> | doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> | ||||
<xsl:decimal-format decimal-separator="." grouping-separator="," /> | <xsl:decimal-format decimal-separator="." grouping-separator="," /> | ||||
<!-- | <!-- | ||||
The Apache Software License, Version 1.1 | |||||
Copyright 2001-2004 Apache Software Foundation | |||||
Copyright (c) 2001-2002 The Apache Software Foundation. All rights | |||||
reserved. | |||||
Licensed under the Apache License, Version 2.0 (the "License"); | |||||
you may not use this file except in compliance with the License. | |||||
You may obtain a copy of the License at | |||||
Redistribution and use in source and binary forms, with or without | |||||
modification, are permitted provided that the following conditions | |||||
are met: | |||||
http://www.apache.org/licenses/LICENSE-2.0 | |||||
1. Redistributions of source code must retain the above copyright | |||||
notice, this list of conditions and the following disclaimer. | |||||
2. Redistributions in binary form must reproduce the above copyright | |||||
notice, this list of conditions and the following disclaimer in | |||||
the documentation and/or other materials provided with the | |||||
distribution. | |||||
3. The end-user documentation included with the redistribution, if | |||||
any, must include the following acknowlegement: | |||||
"This product includes software developed by the | |||||
Apache Software Foundation (http://www.apache.org/)." | |||||
Alternately, this acknowlegement may appear in the software itself, | |||||
if and wherever such third-party acknowlegements normally appear. | |||||
4. The names "Ant" and "Apache Software | |||||
Foundation" must not be used to endorse or promote products derived | |||||
from this software without prior written permission. For written | |||||
permission, please contact apache@apache.org. | |||||
5. Products derived from this software may not be called "Apache" | |||||
nor may "Apache" appear in their names without prior written | |||||
permission of the Apache Group. | |||||
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||||
DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||||
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||||
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||||
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||||
SUCH DAMAGE. | |||||
==================================================================== | |||||
This software consists of voluntary contributions made by many | |||||
individuals on behalf of the Apache Software Foundation. For more | |||||
information on the Apache Software Foundation, please see | |||||
<http://www.apache.org/>. | |||||
Unless required by applicable law or agreed to in writing, software | |||||
distributed under the License is distributed on an "AS IS" BASIS, | |||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
See the License for the specific language governing permissions and | |||||
limitations under the License. | |||||
--> | --> | ||||
<!-- | <!-- | ||||
@@ -467,21 +431,9 @@ | |||||
<xsl:template name="JS-escape"> | <xsl:template name="JS-escape"> | ||||
<xsl:param name="string"/> | <xsl:param name="string"/> | ||||
<xsl:choose> | |||||
<xsl:when test="contains($string,"'")"> | |||||
<xsl:value-of select="substring-before($string,"'")"/>\'<xsl:call-template name="JS-escape"> | |||||
<xsl:with-param name="string" select="substring-after($string,"'")"/> | |||||
</xsl:call-template> | |||||
</xsl:when> | |||||
<xsl:when test="contains($string,'\')"> | |||||
<xsl:value-of select="substring-before($string,'\')"/>\\<xsl:call-template name="JS-escape"> | |||||
<xsl:with-param name="string" select="substring-after($string,'\')"/> | |||||
</xsl:call-template> | |||||
</xsl:when> | |||||
<xsl:otherwise> | |||||
<xsl:value-of select="$string"/> | |||||
</xsl:otherwise> | |||||
</xsl:choose> | |||||
<xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/> | |||||
<xsl:param name="tmp2" select="stringutils:replace(string($tmp1),"'","\'")"/> | |||||
<xsl:value-of select="$tmp2"/> | |||||
</xsl:template> | </xsl:template> | ||||
@@ -491,18 +443,8 @@ | |||||
--> | --> | ||||
<xsl:template name="br-replace"> | <xsl:template name="br-replace"> | ||||
<xsl:param name="word"/> | <xsl:param name="word"/> | ||||
<xsl:choose> | |||||
<xsl:when test="contains($word,'
')"> | |||||
<xsl:value-of select="substring-before($word,'
')"/> | |||||
<br/> | |||||
<xsl:call-template name="br-replace"> | |||||
<xsl:with-param name="word" select="substring-after($word,'
')"/> | |||||
</xsl:call-template> | |||||
</xsl:when> | |||||
<xsl:otherwise> | |||||
<xsl:value-of select="$word"/> | |||||
</xsl:otherwise> | |||||
</xsl:choose> | |||||
<xsl:param name="br"><br/></xsl:param> | |||||
<xsl:value-of select='stringutils:replace(string($word),"
",$br)'/> | |||||
</xsl:template> | </xsl:template> | ||||
<xsl:template name="display-time"> | <xsl:template name="display-time"> | ||||