System.Xml.Xsl.Xslt.QilGenerator.CompileCopy C# (CSharp) Méthode

CompileCopy() private méthode

private CompileCopy ( XslNode copy ) : QilNode
copy XslNode
Résultat QilNode
        private QilNode CompileCopy(XslNode copy)
        {
            QilNode node = GetCurrentNode();
            _f.CheckNodeNotRtf(node);
            if ((node.XmlType.NodeKinds & InvalidatingNodes) != XmlNodeKindFlags.None)
            {
                _outputScope.InvalidateAllPrefixes();
            }
            if (node.XmlType.NodeKinds == XmlNodeKindFlags.Element)
            {
                // Context node is always an element
                // The namespace nodes of the current node are automatically copied
                QilList content = InstructionList();
                content.Add(_f.XPathNamespace(node));
                _outputScope.PushScope();
                _outputScope.InvalidateAllPrefixes();
                QilNode result = CompileInstructions(copy.Content, content);
                _outputScope.PopScope();
                return _f.ElementCtor(_f.NameOf(node), result);
            }
            else if (node.XmlType.NodeKinds == XmlNodeKindFlags.Document)
            {
                // Context node is always a document
                // xsl:copy will not create a document node, but will just use the content template
                return CompileInstructions(copy.Content);
            }
            else if ((node.XmlType.NodeKinds & (XmlNodeKindFlags.Element | XmlNodeKindFlags.Document)) == XmlNodeKindFlags.None)
            {
                // Context node is neither an element, nor a document
                // The content of xsl:copy is not instantiated
                return node;
            }
            else
            {
                // Static classifying of the context node is not possible
                return _f.XsltCopy(node, CompileInstructions(copy.Content));
            }
        }
QilGenerator