public function testExcludePrefixes() { $config = new Config(); $this->assertFalse($config->shouldExcludeResultPrefixes()); $config->excludeResultPrefixes(); $this->assertTrue($config->shouldExcludeResultPrefixes()); }
/** * @param DOMDocument $document */ public function transform(DOMDocument $document) { $root = $document->documentElement; $namespaces = FetchNamespacesFromNode::fetch($document->documentElement); $xslPrefix = array_search(XslTransformations::URI, $namespaces); $excludePrefixes = preg_split('/\\s/', $root->getAttribute('exclude-result-prefixes')); $excludePrefixes[] = 'php'; $excludePrefixes[] = 'xs'; if (in_array('#all', $excludePrefixes) === true || $this->config->shouldExcludeResultPrefixes()) { $excludePrefixes = array_merge($excludePrefixes, array_keys($namespaces)); $excludePrefixes = array_filter($excludePrefixes, function ($prefix) { return $prefix !== '#all'; }); } $excludePrefixes = array_unique($excludePrefixes); $root->setAttribute('xmlns:php', 'http://php.net/xsl'); $root->setAttribute('xmlns:xs', XmlSchema::URI); $root->setAttribute('exclude-result-prefixes', implode(' ', $excludePrefixes)); $this->transformElements($document, $xslPrefix); $this->transformAttributes($document, $xslPrefix); }