Author: crossley
Date: Wed Aug 24 01:27:34 2005
New Revision: 239571

URL: http://svn.apache.org/viewcvs?rev=239571&view=rev
Log:
A more complex example with confused tabs.

Added:
    forrest/trunk/etc/test-whitespace/html2document.xsl   (with props)

Added: forrest/trunk/etc/test-whitespace/html2document.xsl
URL: 
http://svn.apache.org/viewcvs/forrest/trunk/etc/test-whitespace/html2document.xsl?rev=239571&view=auto
==============================================================================
--- forrest/trunk/etc/test-whitespace/html2document.xsl (added)
+++ forrest/trunk/etc/test-whitespace/html2document.xsl Wed Aug 24 01:27:34 2005
@@ -0,0 +1,314 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2002-2005 The Apache Software Foundation or its licensors,
+  as applicable.
+
+  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.
+-->
+
+<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">
+        <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]"
+                                            mode="next"/>
+                       <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: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">
+        <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: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>
+
+
+</xsl:stylesheet>

Propchange: forrest/trunk/etc/test-whitespace/html2document.xsl
------------------------------------------------------------------------------
    svn:eol-style = native