element must not contain more than one element.'; } public function getStandard(): WCAGStandard { return WCAGStandard::A; } public function getSeverity(): Severity { return Severity::ERROR; } public function getLevel(): int { return 2; } public function check(DOMElement $element): ?Violation { if (strtolower($element->tagName) !== 'table') { return null; } $captionCount = 0; foreach ($element->childNodes as $child) { if ($child instanceof DOMElement && strtolower($child->tagName) === 'caption') { $captionCount++; } } if ($captionCount > 1) { return $this->createViolation( $element, $this->getDescription(), 'Remove duplicate elements so that the table has at most one caption.' ); } return null; } }