tagName) !== 'table') { return null; } // Skip layout tables explicitly marked as presentation $role = strtolower($element->getAttribute('role')); if ($role === 'presentation' || $role === 'none') { return null; } // Check if there is at least one or $thCount = $element->getElementsByTagName('th')->length; $captionCount = $element->getElementsByTagName('caption')->length; if ($thCount === 0 && $captionCount === 0) { return $this->createViolation( $element, $this->getDescription(), 'Add header elements or a to the table, or set role="presentation" if it is only used for layout.' ); } return null; } }