Author: crossley
Date: Sat Apr 7 18:57:56 2007
New Revision: 526507
URL: http://svn.apache.org/viewvc?view=rev&rev=526507
Log:
Add test for <xsl:text>
Modified:
forrest/trunk/etc/test-whitespace/html2document.xsl
Modified: forrest/trunk/etc/test-whitespace/html2document.xsl
URL:
http://svn.apache.org/viewvc/forrest/trunk/etc/test-whitespace/html2document.xsl?view=diff&rev=526507&r1=526506&r2=526507
==============================================================================
--- forrest/trunk/etc/test-whitespace/html2document.xsl (original)
+++ forrest/trunk/etc/test-whitespace/html2document.xsl Sat Apr 7 18:57:56 2007
@@ -15,300 +15,262 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
- <xsl:key name="h2s" match="h2"
use="generate-id(preceding-sibling::h1[1])"/>
- <xsl:key name="h3s" match="h3"
use="generate-id(preceding-sibling::h2[1])"/>
- <xsl:key name="h4s" match="h4"
use="generate-id(preceding-sibling::h3[1])"/>
- <xsl:key name="h5s" match="h5"
use="generate-id(preceding-sibling::h4[1])"/>
- <xsl:key name="h6s" match="h6"
use="generate-id(preceding-sibling::h5[1])"/>
-
- <xsl:template match="/">
- <xsl:choose>
- <xsl:when test="name(child::node())='html'">
- <xsl:apply-templates/>
- </xsl:when>
-
- <xsl:otherwise>
- <document>
- <header><title>Error in conversion</title></header>
- <body>
- <warning>This file is not in a html format, please convert
manually.</warning>
- </body>
- </document>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="html">
+ <xsl:key name="h2s" match="h2" use="generate-id(preceding-sibling::h1[1])"/>
+ <xsl:key name="h3s" match="h3" use="generate-id(preceding-sibling::h2[1])"/>
+ <xsl:key name="h4s" match="h4" use="generate-id(preceding-sibling::h3[1])"/>
+ <xsl:key name="h5s" match="h5" use="generate-id(preceding-sibling::h4[1])"/>
+ <xsl:key name="h6s" match="h6" use="generate-id(preceding-sibling::h5[1])"/>
+ <xsl:template match="/">
+ <xsl:choose>
+ <xsl:when test="name(child::node())='html'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
<document>
- <xsl:apply-templates/>
+ <header>
+ <title>Error in conversion</title>
+ </header>
+ <body>
+ <warning>
+ This file is not in a html format, please convert manually.
+ </warning>
+ <xsl:text> </xsl:text>
+ </body>
</document>
- </xsl:template>
-
- <xsl:template match="head">
- <header>
- <xsl:apply-templates/>
- </header>
- </xsl:template>
-
- <xsl:template match="meta">
- <xsl:copy>
- <xsl:apply-templates select="node()|@*"/>
- </xsl:copy>
- </xsl:template>
-
- <!--infer structure from sibling headings-->
- <xsl:template match="body">
- <body>
- <xsl:apply-templates select="*[1]" mode="next"/>
- <xsl:call-template name="process_h1"/>
- </body>
- </xsl:template>
-
- <xsl:template name="process_h1">
- <xsl:for-each select="h1">
- <section>
- <xsl:if test="a/@name">
- <xsl:attribute name="id"><xsl:value-of
select="a/@name"/></xsl:attribute>
- </xsl:if>
- <title><xsl:apply-templates/></title>
- <xsl:apply-templates select="following-sibling::*[1]" mode="next"/>
- <xsl:for-each select="key('h2s',generate-id(.))">
- <section>
- <title><xsl:apply-templates/></title>
- <xsl:apply-templates select="following-sibling::*[1]"
mode="next"/>
- <xsl:for-each select="key('h3s',generate-id(.))">
- <section>
- <title><xsl:apply-templates/></title>
- <xsl:apply-templates select="following-sibling::*[1]"
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match="html">
+ <document>
+ <xsl:apply-templates/>
+ </document>
+ </xsl:template>
+ <xsl:template match="head">
+ <header>
+ <xsl:apply-templates/>
+ </header>
+ </xsl:template>
+ <xsl:template match="meta">
+ <xsl:copy>
+ <xsl:apply-templates select="node()|@*"/>
+ </xsl:copy>
+ </xsl:template>
+<!--infer structure from sibling headings-->
+ <xsl:template match="body">
+ <body>
+ <xsl:apply-templates select="*[1]" mode="next"/>
+ <xsl:call-template name="process_h1"/>
+ </body>
+ </xsl:template>
+ <xsl:template name="process_h1">
+ <xsl:for-each select="h1">
+ <section>
+ <xsl:if test="a/@name">
+ <xsl:attribute name="id">
+ <xsl:value-of select="a/@name"/>
+ </xsl:attribute>
+ </xsl:if>
+ <title><xsl:apply-templates/></title>
+ <xsl:apply-templates select="following-sibling::*[1]" mode="next"/>
+ <xsl:for-each select="key('h2s',generate-id(.))">
+ <section>
+ <title><xsl:apply-templates/></title>
+ <xsl:apply-templates select="following-sibling::*[1]" mode="next"/>
+ <xsl:for-each select="key('h3s',generate-id(.))">
+ <section>
+ <title><xsl:apply-templates/></title>
+ <xsl:apply-templates select="following-sibling::*[1]"
mode="next"/>
- <xsl:for-each select="key('h4s',generate-id(.))">
- <section>
- <title><xsl:apply-templates/></title>
- <xsl:apply-templates select="following-sibling::*[1]"
+ <xsl:for-each select="key('h4s',generate-id(.))">
+ <section>
+ <title><xsl:apply-templates/></title>
+ <xsl:apply-templates select="following-sibling::*[1]"
mode="next"/>
- <xsl:for-each select="key('h5s',generate-id(.))">
- <section>
- <title><xsl:apply-templates/></title>
- <xsl:apply-templates
select="following-sibling::*[1]"
+ <xsl:for-each select="key('h5s',generate-id(.))">
+ <section>
+ <title><xsl:apply-templates/></title>
+ <xsl:apply-templates select="following-sibling::*[1]"
mode="next"/>
- <xsl:for-each select="key('h6s',generate-id(.))">
- <section>
- <title><xsl:apply-templates/></title>
+ <xsl:for-each select="key('h6s',generate-id(.))">
+ <section>
+ <title><xsl:apply-templates/></title>
<xsl:apply-templates
select="following-sibling::*[1]" mode="next"/>
- </section>
- </xsl:for-each>
- </section>
- </xsl:for-each>
- </section>
- </xsl:for-each>
- </section>
- </xsl:for-each>
- </section>
- </xsl:for-each>
- </section>
- </xsl:for-each>
- </xsl:template>
-
- <!--process each sibling in order until the next heading level-->
-
- <xsl:template match="*" mode="next">
- <xsl:if test="not( translate( local-name(.),'123456','' ) = 'h' )">
- <xsl:apply-templates select="."/>
- <xsl:apply-templates select="following-sibling::*[1]" mode="next"/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="P|p">
+ </section>
+ </xsl:for-each>
+ </section>
+ </xsl:for-each>
+ </section>
+ </xsl:for-each>
+ </section>
+ </xsl:for-each>
+ </section>
+ </xsl:for-each>
+ </section>
+ </xsl:for-each>
+ </xsl:template>
+<!--process each sibling in order until the next heading level-->
+ <xsl:template match="*" mode="next">
+ <xsl:if test="not( translate( local-name(.),'123456','' ) = 'h' )">
+ <xsl:apply-templates select="."/>
+ <xsl:apply-templates select="following-sibling::*[1]" mode="next"/>
+ </xsl:if>
+ </xsl:template>
+ <xsl:template match="P|p">
+ <p>
+ <xsl:if test="@class">
+ <xsl:attribute name="class">
+ <xsl:value-of select="@class"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:template>
+ <xsl:template match="img">
+ <xsl:choose>
+ <xsl:when test="name(..)='section'">
+ <figure alt="[EMAIL PROTECTED]" src= "[EMAIL PROTECTED]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <img alt="[EMAIL PROTECTED]" src= "[EMAIL PROTECTED]"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match="source|blockquote">
+ <xsl:choose>
+ <xsl:when test="name(..)='p'"><code>
+ <xsl:value-of select="." /></code>
+ </xsl:when>
+ <xsl:otherwise>
+ <source>
+ <xsl:value-of select="." />
+ </source>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+<!-- convert a to link -->
+ <xsl:template match="a">
+ <xsl:if test="@name">
+<!-- Attach an id to the current node -->
+ <xsl:attribute name="id">
+ <xsl:value-of select="translate(@name, ' $', '__')"/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </xsl:if>
+ <xsl:if test="@href"><link href="[EMAIL PROTECTED]">
+ <xsl:apply-templates/></link>
+ </xsl:if>
+ </xsl:template>
+ <xsl:template match="@valign | @align"/>
+ <xsl:template match="center">
+ <xsl:choose>
+ <xsl:when test="name(..)='p'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
<p>
- <xsl:if test="@class">
- <xsl:attribute name="class"><xsl:value-of
select="@class"/></xsl:attribute>
- </xsl:if>
<xsl:apply-templates/>
</p>
- </xsl:template>
-
- <xsl:template match="img">
- <xsl:choose>
- <xsl:when test="name(..)='section'">
- <figure alt="[EMAIL PROTECTED]" src= "[EMAIL PROTECTED]"/>
- </xsl:when>
- <xsl:otherwise>
- <img alt="[EMAIL PROTECTED]" src= "[EMAIL PROTECTED]"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="source|blockquote">
- <xsl:choose>
- <xsl:when test="name(..)='p'">
- <code>
- <xsl:value-of select="." />
- </code>
- </xsl:when>
-
- <xsl:otherwise>
- <source>
- <xsl:value-of select="." />
- </source>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-
- <!-- convert a to link -->
- <xsl:template match="a">
- <xsl:if test="@name">
- <!-- Attach an id to the current node -->
- <xsl:attribute name="id"><xsl:value-of select="translate(@name, ' $',
'__')"/></xsl:attribute>
- <xsl:apply-templates/>
- </xsl:if>
- <xsl:if test="@href">
- <link href="[EMAIL PROTECTED]">
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match="ol">
+ <xsl:choose>
+ <xsl:when test="name(..)='p'">
+<xsl:text disable-output-escaping="yes"><![CDATA[</p>]]></xsl:text>
+ <ol>
<xsl:apply-templates/>
- </link>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="@valign | @align"/>
-
- <xsl:template match="center">
- <xsl:choose>
- <xsl:when test="name(..)='p'">
- <xsl:apply-templates/>
- </xsl:when>
-
- <xsl:otherwise>
- <p>
- <xsl:apply-templates/>
- </p>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="ol">
- <xsl:choose>
- <xsl:when test="name(..)='p'">
- <xsl:text disable-output-escaping="yes"><![CDATA[</p>]]></xsl:text>
- <ol>
- <xsl:apply-templates/>
- </ol>
- <xsl:text disable-output-escaping="yes"><![CDATA[<p>]]></xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <ol>
- <xsl:apply-templates/>
- </ol>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="ul">
- <xsl:choose>
- <xsl:when test="name(..)='p'">
- <xsl:text disable-output-escaping="yes"><![CDATA[</p>]]></xsl:text>
- <ul>
- <xsl:apply-templates/>
- </ul>
- <xsl:text disable-output-escaping="yes"><![CDATA[<p>]]></xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <ul>
- <xsl:apply-templates/>
- </ul>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="b">
- <strong>
- <xsl:value-of select = "."/>
- </strong>
- </xsl:template>
-
- <xsl:template match="i">
- <em>
- <xsl:value-of select = "."/>
- </em>
- </xsl:template>
-
- <xsl:template match="u">
- <u>
- <xsl:value-of select = "."/>
- </u>
- </xsl:template>
-
- <xsl:template match="table">
- <table>
- <xsl:apply-templates select="node()"/>
- </table>
- </xsl:template>
-
-
- <xsl:template match="br">
- <xsl:choose>
- <xsl:when test="normalize-space(text())">
-
- <xsl:choose>
- <xsl:when test="name(..)='p'">
- <xsl:apply-templates/>
- <br/>
- </xsl:when>
- <xsl:otherwise>
- <p>
- <xsl:apply-templates/>
- </p>
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:when>
- <xsl:otherwise>
- <br/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Strip -->
- <xsl:template match="font|big">
- <xsl:apply-templates/>
- </xsl:template>
-
-
- <xsl:template match="span">
- <xsl:choose>
- <xsl:when test="contains(@style,'bold')">
- <strong>
- <xsl:apply-templates/>
- </strong>
- </xsl:when>
- <xsl:when test="contains(@style,'italic')">
- <em>
- <xsl:apply-templates/>
- </em>
- </xsl:when>
- <xsl:when test="contains(@style,'underline')">
- <u>
- <xsl:apply-templates/>
- </u>
- </xsl:when>
- <xsl:otherwise>
- <!-- Strip -->
- <xsl:apply-templates/>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:apply-templates select="./*"/>
- </xsl:template>
-
- <xsl:template match="@*|*|text()|processing-instruction()|comment()">
- <xsl:copy>
- <xsl:apply-templates
select="@*|*|text()|processing-instruction()|comment()"/>
- </xsl:copy>
- </xsl:template>
-
-
+ </ol>
+<xsl:text disable-output-escaping="yes"><![CDATA[<p>]]></xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <ol>
+ <xsl:apply-templates/>
+ </ol>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match="ul">
+ <xsl:choose>
+ <xsl:when test="name(..)='p'">
+<xsl:text disable-output-escaping="yes"><![CDATA[</p>]]></xsl:text>
+ <ul>
+ <xsl:apply-templates/>
+ </ul>
+<xsl:text disable-output-escaping="yes"><![CDATA[<p>]]></xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <ul>
+ <xsl:apply-templates/>
+ </ul>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template match="b"><strong>
+ <xsl:value-of select = "."/></strong>
+ </xsl:template>
+ <xsl:template match="i"><em>
+ <xsl:value-of select = "."/></em>
+ </xsl:template>
+ <xsl:template match="u">
+ <u>
+ <xsl:value-of select = "."/>
+ </u>
+ </xsl:template>
+ <xsl:template match="table">
+ <table>
+ <xsl:apply-templates select="node()"/>
+ </table>
+ </xsl:template>
+ <xsl:template match="br">
+ <xsl:choose>
+ <xsl:when test="normalize-space(text())">
+ <xsl:choose>
+ <xsl:when test="name(..)='p'">
+ <xsl:apply-templates/>
+ <br/>
+ </xsl:when>
+ <xsl:otherwise>
+ <p>
+ <xsl:apply-templates/>
+ </p>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <br/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+<!-- Strip -->
+ <xsl:template match="font|big">
+ <xsl:apply-templates/>
+ </xsl:template>
+ <xsl:template match="span">
+ <xsl:choose>
+ <xsl:when test="contains(@style,'bold')"><strong>
+ <xsl:apply-templates/></strong>
+ </xsl:when>
+ <xsl:when test="contains(@style,'italic')"><em>
+ <xsl:apply-templates/></em>
+ </xsl:when>
+ <xsl:when test="contains(@style,'underline')">
+ <u>
+ <xsl:apply-templates/>
+ </u>
+ </xsl:when>
+ <xsl:otherwise>
+<!-- Strip -->
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates select="./*"/>
+ </xsl:template>
+ <xsl:template match="@*|*|text()|processing-instruction()|comment()">
+ <xsl:copy>
+ <xsl:apply-templates
select="@*|*|text()|processing-instruction()|comment()"/>
+ </xsl:copy>
+ </xsl:template>
</xsl:stylesheet>