HtmlTemplateElement
sealed class HtmlTemplateElement : HtmlElement, IHtmlTemplateElement, IHtmlElement, IElement, INode, IEventTarget, IMarkupFormattable, IParentNode, IChildNode, INonDocumentTypeChildNode, IElementCssInlineStyle
Represents the template element.
using AngleSharp.Dom.Css;
using AngleSharp.Html;
namespace AngleSharp.Dom.Html
{
internal sealed class HtmlTemplateElement : HtmlElement, IHtmlTemplateElement, IHtmlElement, IElement, INode, IEventTarget, IMarkupFormattable, IParentNode, IChildNode, INonDocumentTypeChildNode, IElementCssInlineStyle
{
private readonly DocumentFragment _content;
public IDocumentFragment Content => _content;
public HtmlTemplateElement(Document owner, string prefix = null)
: base(owner, Tags.Template, prefix, NodeFlags.Special | NodeFlags.Scoped | NodeFlags.HtmlTableSectionScoped | NodeFlags.HtmlTableScoped)
{
_content = new DocumentFragment(owner);
}
public void PopulateFragment()
{
while (base.HasChildNodes) {
Node node = base.ChildNodes[0];
RemoveNode(0, node);
_content.AddNode(node);
}
}
public override INode Clone(bool deep = true)
{
HtmlTemplateElement htmlTemplateElement = new HtmlTemplateElement(base.Owner, null);
Node.CopyProperties(this, htmlTemplateElement, deep);
Element.CopyAttributes(this, htmlTemplateElement);
for (int i = 0; i < _content.ChildNodes.Length; i++) {
Node node = _content.ChildNodes[i].Clone(deep) as Node;
if (node != null)
htmlTemplateElement._content.AddNode(node);
}
return htmlTemplateElement;
}
public override string ToHtml(IMarkupFormatter formatter)
{
string str = formatter.OpenTag(this, false);
string str2 = _content.ChildNodes.ToHtml(formatter);
string str3 = formatter.CloseTag(this, false);
return str + str2 + str3;
}
internal override void NodeIsAdopted(Document oldDocument)
{
_content.Owner = oldDocument;
}
}
}