Feature: #66269 - Fluid: Remove ViewHelper xmlns-attributes and specified html tag

See forge#66269

Description

With the introduction of using xmlns: attributes to include ViewHelpers, it is possible to have IDE support for Fluid templates. However, the problem is that the xmlns: attributes and the corresponding tag will also be rendered, which is not desired most of the time. A workaround to avoid this is to use sections. However, this solution is counter-intuitive, is not available in layouts and causes extra processing overhead.

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
		xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers">

<f:section name="content">
</f:section>
Copied!

Impact

The xmlns:* attributes for valid ViewHelper namespaces will now be removed before rendering. Such ViewHelper namespaces follow this URI pattern:

http://typo3.org/ns/<phpNamespace>
Copied!

Examples:

http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers
http://typo3.org/ns/GeorgRinger/News/ViewHelpers
Copied!

xmlns attributes for non-ViewHelper namespaces will be preserved.

Furthermore an additional data-attribute to HTML-Tags is introduced.

data-namespace-typo3-fluid="true"
Copied!

If this attribute is specified on the HTML-Tag, the HTML-tag itself won't be rendered as well. (Also a corresponding closing tag will not be rendered for that template.) This is useful for various IDEs and HTML auto-completion.

Examples

Include ViewHelper namespaces on an existing tag (e.g. root xml tag) via xmlns attributes for Fluid and News extension.

<?xml version="1.0" encoding="utf-8"?>
<root xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
		xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
		xmlns:foo="http://typo3.org/foo">

	<f:if condition="{newsItem.title}">
		<f:then>
			<n:titleTag>{newsItem.title}</n:titleTag>
		</f:then>
		<f:else>
			<n:titleTag>News-Detail</n:titleTag>
		</f:else>
	</f:if>
</root>
Copied!

Output is then

<root xmlns:foo="http://typo3.org/foo" >
	...
</root>
Copied!

Include ViewHelper namespaces with HTML-tag and a data-namespace-typo3-fluid="true" attribute via xmlns attributes for Fluid and News extension.

<html data-namespace-typo3-fluid="true"
		xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
		xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers">

	<f:if condition="{newsItem.title}">
		<f:then>
			<n:titleTag>{newsItem.title}</n:titleTag>
		</f:then>
		<f:else>
			<n:titleTag>News-Detail</n:titleTag>
		</f:else>
	</f:if>
</html>
Copied!

The output contains everything excluding the HTML-tag.