private Node(XElement el, ITranslation transl, XmlNavigator navigator, Node?firstNode) { _nav = navigator; _firstNode = firstNode ?? this; _xElement = el; _transl = transl; // Das Replacement des geschützten Leerzeichens soll beim Hashen // ignoriert werden: ID = _nav.GetNodeID(el, out _innerXml, out _nodePath); _innerXml = XmlFragmentBeautifier.Beautify(_innerXml); HasAncestor = !Equals(_firstNode); HasDescendant = _nav.GetNextXElement(el) != null; }