xlawrence    2005/08/18 15:31:48 CEST

  Modified files:
    core/src/java/org/jahia/services/htmlparser WAIValidator.java 
  Log:
  fix for bug (JAHIA-364)
  
  Revision  Changes    Path
  1.8       +25 -10    
jahia/core/src/java/org/jahia/services/htmlparser/WAIValidator.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/htmlparser/WAIValidator.java.diff?r1=1.7&r2=1.8&f=h
  
  
  
  Index: WAIValidator.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/java/org/jahia/services/htmlparser/WAIValidator.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- WAIValidator.java 11 Aug 2005 14:29:39 -0000      1.7
  +++ WAIValidator.java 18 Aug 2005 13:31:48 -0000      1.8
  @@ -68,6 +68,7 @@
   import org.apache.html.dom.HTMLTableRowElementImpl;
   import org.apache.html.dom.HTMLLabelElementImpl;
   import org.apache.html.dom.HTMLInputElementImpl;
  +import org.apache.html.dom.HTMLTableSectionElementImpl;
   
   import java.util.List;
   import java.util.ArrayList;
  @@ -506,24 +507,38 @@
           
           // Criteria 5.3
           Node header = node.getFirstChild();
  -        while (header != null &&
  -                header.getClass() != HTMLTableRowElementImpl.class) {
  -            header = header.getNextSibling();
  +
  +        if ( header.getClass() != HTMLTableRowElementImpl.class) {
  +            while (header != null &&
  +                    header.getClass() != HTMLTableRowElementImpl.class) {
  +
  +                if (header.getClass() == HTMLTableSectionElementImpl.class) {
  +                    if ("tbody".equals(header.getNodeName().toLowerCase())) {
  +                        header = header.getFirstChild();
  +                        break;
  +                    }
  +                }
  +
  +                header = header.getNextSibling();
  +            }
           }
  -        
  -        header = node.getFirstChild();
  -        
  -        // get the first row
  -        while (! "tr".equals(header.getNodeName().toLowerCase())) {
  -            header = header.getNextSibling();
  +
  +        if (header == null) {
  +            logger.debug("No table data, returning...");
  +            return errors;
           }
  -        
  +
  +        // get the first cell
  +        logger.debug("Header: " + header.getNodeName());
           header = header.getFirstChild();
           
           final ArrayList ids = new ArrayList();
           int scopes = 0;
           
           while (header != null) {
  +
  +            logger.debug("Header in loop: " + header.getNodeName());
  +
               if (! "th".equals(header.getNodeName().toLowerCase())) {
                   final ValidationError ve = new ValidationError(this,
                           "The first row of a 'table' element should contain 
'th' elements only", 
  

Reply via email to