/// <summary>
 /// Creates a SimpleFieldPointer
 /// </summary>
 /// <param name="parentPointer">The parent of this pointer</param>
 /// <param name="element">The element being wrapped</param>
 /// <param name="version">The SifVersion to use for resolving XPaths</param>
 /// set of fields</param>
 internal SimpleFieldPointer(
     INodePointer parentPointer,
     Element element,
     SifVersion version )
     : base(parentPointer, element, version)
 {
 }
 /// <summary>
 /// Creates a new pointer to a SimpleField that is represented as an XML Attribute
 /// </summary>
 /// <param name="parentPointer">The parent pointer</param>
 /// <param name="element">The attribute being wrapped</param>
 /// <param name="version">The SifVersion</param>
 public SimpleFieldAttributePointer(
     INodePointer parentPointer,
     Element element,
     SifVersion version )
     : base(parentPointer, element, version)
 {
 }
        private void CreatePredicateValues(INodePointer current, AdkExpression predicate, XsltContext evalContext)
        {
            if (predicate is AdkEqualOperation)
            {
                AdkExpression[] components = ((AdkEqualOperation)predicate).Arguments;
                AdkLocPath      lp         = (AdkLocPath)components[0];
                AdkNodeNameTest attrName   = (AdkNodeNameTest)lp.Steps[0].NodeTest;
                INodePointer    attr       = current.CreateAttribute(this, attrName.NodeName);
                Object          value      = components[1].ComputeValue(evalContext);
                attr.SetValue(value);
                return;
            }

            // This might be the 'adk:x()' function
            if (predicate is AdkAndOperation)
            {
                foreach (AdkExpression expr in ((AdkAndOperation)predicate).Arguments)
                {
                    if (expr is AdkFunction && ((AdkFunction)expr).FunctionName.Equals("adk:x"))
                    {
                        // This is the special marker function that tells the ADK to always
                        // create the parent repeatable element. Don't evaluate it.
                        continue;
                    }
                    else
                    {
                        CreatePredicateValues(current, expr, evalContext);
                    }
                }
                return;
            }

            // Unrecognized predicate
            throw new ArgumentException("Cannot evaluate expression predicate: " + predicate);
        }
Beispiel #4
0
 /// <summary>
 /// Creates a new AdkElementPointer
 /// </summary>
 /// <param name="parentPointer">The parent of this element</param>
 /// <param name="element">The element being wrapped</param>
 /// <param name="version">The SifVersion in use</param>
 /// within its parent list</param>
 protected AdkElementPointer(INodePointer parentPointer, Element element, SifVersion version)
     : base(parentPointer)
 {
     fVersion    = version;
     fElement    = element;
     fElementDef = element.ElementDef;
 }
Beispiel #5
0
 /// <summary>
 /// Creates a SimpleFieldPointer
 /// </summary>
 /// <param name="parentPointer">The parent of this pointer</param>
 /// <param name="element">The element being wrapped</param>
 /// <param name="version">The SifVersion to use for resolving XPaths</param>
 /// set of fields</param>
 internal SimpleFieldPointer(
     INodePointer parentPointer,
     Element element,
     SifVersion version)
     : base(parentPointer, element, version)
 {
 }
 /// <summary>
 /// Creates a new SifElementPointer
 /// </summary>
 /// <param name="parentPointer">The parent of this pointer</param>
 /// <param name="element">The element being wrapped</param>
 /// <param name="version">The SifVersion in effect</param>
 public SifElementPointer(
     INodePointer parentPointer,
     SifElement element,
     SifVersion version )
     : base(parentPointer, element, version)
 {
     fSifElement = element;
 }
 /// <summary>
 /// Creates a new SifElementPointer
 /// </summary>
 /// <param name="parentPointer">The parent of this pointer</param>
 /// <param name="element">The element being wrapped</param>
 /// <param name="version">The SifVersion in effect</param>
 public SifElementPointer(
     INodePointer parentPointer,
     SifElement element,
     SifVersion version)
     : base(parentPointer, element, version)
 {
     fSifElement = element;
 }
 /// <summary>
 /// Creates a new pointer to a SimpleField that is represented as an XML Attribute
 /// </summary>
 /// <param name="parentPointer">The parent pointer</param>
 /// <param name="element">The attribute being wrapped</param>
 /// <param name="version">The SifVersion</param>
 public SimpleFieldAttributePointer
 (
     INodePointer parentPointer,
     Element element,
     SifVersion version)
     : base(parentPointer, element, version)
 {
 }
            /// <summary>
            /// Returns true if the iterator has moved to the previous node. Otherwise false.
            /// </summary>
            public bool MovePrevious()
            {
                INodePointer previous = fCurrentIterator.MovePrevious();

                if (previous != null)
                {
                    fCurrentPointer = previous;
                    return(true);
                }
                return(false);
            }
            /// <summary>
            /// Returns true if the iterator has moved to the next node. Otherwise false.
            /// </summary>
            public bool MoveNext()
            {
                INodePointer next = fCurrentIterator.MoveNext();

                if (next != null)
                {
                    fCurrentPointer = next;
                    return(true);
                }
                return(false);
            }
Beispiel #11
0
        /// <summary>
        /// Creates a child element, if supported by this node
        /// </summary>
        /// <param name="parentPointer"></param>
        /// <param name="formatter"></param>
        /// <param name="version"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public INodePointer CreateChild(INodePointer parentPointer, SifFormatter formatter, SifVersion version,
                                        SifXPathContext context)
        {
            // 1) Create an instance of the SimpleField with a null value (It's assigned later)

            //
            // STEP 2
            // Find the actual field to set the value to
            //
            SifElement parent        = (SifElement)((SifElementPointer)parentPointer).Element;
            SifElement targetElement = parent;

            if (!fElementDef.Field)
            {
                //	This indicates a child SifElement that needs to be created
                targetElement = SifElement.Create(parent, fElementDef);

                formatter.AddChild(parent, targetElement, version);
            }

            IElementDef fieldDef = null;

            if (fValueXpath.Equals("."))
            {
                fieldDef = fElementDef;
            }
            else
            {
                String fieldName = fValueXpath;
                if (fValueXpath.StartsWith("@"))
                {
                    fieldName = fValueXpath.Substring(1);
                }
                fieldDef = Adk.Dtd.LookupElementDef(fElementDef, fieldName);
            }


            if (fieldDef == null)
            {
                throw new ArgumentException("Support for value path {" + fValueXpath +
                                            "} is not supported by XPathSurrogate.");
            }

            SifSimpleType ssf = fieldDef.TypeConverter.GetSifSimpleType(null);
            SimpleField   sf  = ssf.CreateField(targetElement, fieldDef);

            targetElement.SetField(sf);


            // 2) built out a fake set of node pointers representing the SIF 1.5r1 path and
            //    return the root pointer from that stack
            return(BuildLegacyPointers(parentPointer, sf));
        }
 internal static INodePointer Create(INodePointer parent, SifElement element, SifVersion version)
 {
     if (version.Major < 2)
     {
         IElementDef      fieldDef = element.ElementDef;
         IRenderSurrogate rs       = fieldDef.GetVersionInfo(version).GetSurrogate();
         if (rs != null)
         {
             return(rs.CreateNodePointer(parent, element, version));
         }
     }
     return(new SifElementPointer(parent, element, version));
 }
Beispiel #13
0
        /// <summary>
        /// Called by the ADK XPath traversal code when it is traversing the given element
        /// in a legacy version of SIF
        /// </summary>
        /// <param name="parentPointer">The parent element pointer</param>
        /// <param name="sourceElement">The Element to create a node pointer for</param>
        /// <param name="version">The SIFVersion in effect</param>
        /// <returns>A NodePointer representing the current element</returns>
        public INodePointer CreateNodePointer(INodePointer parentPointer, Element sourceElement, SifVersion version)
        {
            // 1) Find the field referenced by the XPathSurrogate expression
            //    If it doesn't exist, return null
            Element referencedField = FindReferencedElement(sourceElement);

            if (referencedField == null)
            {
                return(null);
            }
            // 2) If it does exist, build out a fake set of node pointers representing the
            //    SIF 1.5r1 path and return the root pointer.
            return(BuildLegacyPointers(parentPointer, referencedField));
        }
        /// <summary>
        /// Creates a child element, if supported by this node
        /// </summary>
        /// <param name="parentPointer"></param>
        /// <param name="formatter"></param>
        /// <param name="version"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public INodePointer CreateChild( INodePointer parentPointer, SifFormatter formatter, SifVersion version,
                                         SifXPathContext context )
        {
            // 1) Create an instance of the SimpleField with a null value (It's assigned later)

            //
            // STEP 2
            // Find the actual field to set the value to
            //
            SifElement parent = (SifElement) ((SifElementPointer) parentPointer).Element;
            SifElement targetElement = parent;

            if ( !fElementDef.Field )
            {
                //	This indicates a child SifElement that needs to be created
                targetElement = SifElement.Create( parent, fElementDef );

                formatter.AddChild( parent, targetElement, version );
            }

            IElementDef fieldDef = null;
            if ( fValueXpath.Equals( "." ) )
            {
                fieldDef = fElementDef;
            }
            else
            {
                String fieldName = fValueXpath;
                if ( fValueXpath.StartsWith( "@" ) )
                {
                    fieldName = fValueXpath.Substring( 1 );
                }
                fieldDef = Adk.Dtd.LookupElementDef( fElementDef, fieldName );
            }

            if ( fieldDef == null )
            {
                throw new ArgumentException( "Support for value path {" + fValueXpath +
                                             "} is not supported by XPathSurrogate." );
            }

            SifSimpleType ssf = fieldDef.TypeConverter.GetSifSimpleType( null );
            SimpleField sf = ssf.CreateField( targetElement, fieldDef );
            targetElement.SetField( sf );

            // 2) built out a fake set of node pointers representing the SIF 1.5r1 path and
            //    return the root pointer from that stack
            return BuildLegacyPointers( parentPointer, sf );
        }
Beispiel #15
0
        private INodePointer BuildLegacyPointers(INodePointer parent, Element referencedField)
        {
            String[]     xPathParts     = fLegacyXpath.Split('/');
            int          currentSegment = 0;
            INodePointer root           = null;
            INodePointer currentParent  = parent;

            // Build the path
            while (currentSegment < xPathParts.Length - 1)
            {
                FauxSifElementPointer pointer = new FauxSifElementPointer(currentParent, xPathParts[currentSegment]);
                if (currentParent != null && currentParent is FauxSifElementPointer)
                {
                    ((FauxSifElementPointer)currentParent).SetChild(pointer, xPathParts[currentSegment]);
                }
                currentParent = pointer;
                if (root == null)
                {
                    root = pointer;
                }
                currentSegment++;
            }

            String finalSegment = xPathParts[currentSegment];
            bool   isAttribute  = false;

            if (finalSegment.StartsWith("@"))
            {
                // This is an attribute
                finalSegment = finalSegment.Substring(1);
                isAttribute  = true;
            }

            SurrogateSimpleFieldPointer fieldPointer =
                new SurrogateSimpleFieldPointer(currentParent, finalSegment, referencedField, isAttribute);

            if (currentParent != null && currentParent is FauxSifElementPointer)
            {
                ((FauxSifElementPointer)currentParent).SetChild(fieldPointer, finalSegment);
            }
            if (root == null)
            {
                root = fieldPointer;
            }

            return(root);
        }
            INavCursor INavCursor.Clone()
            {
                INodeIterator clonedIterator = fCurrentIterator.Clone();
                INavCursor    clonedParent   = null;

                if (fParentIterator != null)
                {
                    clonedParent = fParentIterator.Clone();
                }
                INodePointer clonedPointer = null;

                if (fCurrentPointer != null)
                {
                    clonedPointer = fCurrentPointer.Clone();
                }
                return(new NavigableIterator(clonedIterator, clonedParent, clonedPointer));
            }
 /// <summary>
 /// Called by the ADK XPath traversal code when it is traversing the given element
 /// in a legacy version of SIF
 /// </summary>
 /// <param name="parentPointer">The parent element pointer</param>
 /// <param name="element">The Element to create a node pointer for</param>
 /// <param name="version">The SIFVersion in effect</param>
 /// <returns>A NodePointer representing the current element</returns>
 public INodePointer CreateNodePointer( INodePointer parentPointer, Element element, SifVersion version )
 {
     return null;
 }
        /// <summary>
        /// Manually builds out a path to support the necessary mapping needs of the
        /// ADK. By default, the JXPath implementation does not allow
        /// context-dependend predicates (e.g. PhoneNumber[@Type='0096'] to be used
        /// in XPaths that create the path. This implementation manually steps
        /// through the XPath and builds it out. It's primary intent is to provide
        /// the behavior that was present in the ADK before JXPath was used for
        /// mapping
        /// </summary>
        /// <param name="expr">The Path expression to build out</param>
        /// <param name="context"></param>
        /// <returns></returns>
        private INodePointer BuildADKPathWithPredicates(String expr, XsltContext context)
        {
            // Use the set of expression steps to determine which parts of the
            // path already exist. Note that the order of evaluation used is optimized
            // for first-time creation of elements. In other words, the path chosen was
            // to evalaute the expression steps from the beginning rather than the end
            // because for outbound mappings, that order will generally be the most efficient
            AdkXPathStep[] steps       = XPathParser.Parse(expr);
            int            currentStep = 0;
            StringBuilder  pathSoFar   = new StringBuilder();
            INodePointer   parent      = fContextPointer;
            INodePointer   current     = null;

            for ( ; currentStep < steps.Length; currentStep++)
            {
                current = FindChild(fDefaultNavigator, pathSoFar, steps[currentStep]);
                if (current == null)
                {
                    break;
                }
                pathSoFar.Append("/");
                pathSoFar.Append(steps[currentStep].ToString());
                parent = current;
            }
            if (current != null)
            {
                // We traversed the entire path and came up with a result.
                // That means that the element we are trying to build the
                // path to already exists. We will not create this path, so
                // return null;
                return(null);
            }

            // We've traversed down to the level where we think we need to
            // add a child. However, there are cases where this is not the proper
            // location. For example, in SIF 1.5r1, the StudentAddressList element is
            // repeatable and Address is not. It would not be proper to add a new Address
            // element under StudentAddressList. Instead, the algorithm needs to back
            // up the stack until it reaches the next repeatable element for the current
            // version of SIF
            // The following code is primarily in place for the StudentAddressList case, which is
            // why the isContextDependent() logic applies. Currently, there is no known other place
            // where this checking needs to occur.
            if (currentStep > 0 && steps[currentStep].IsContextDependent())
            {
                int          step       = currentStep;
                INodePointer stepParent = parent;
                while (step > -1)
                // don't evaluate step 0 at the root of the object because this problem doesn't apply there
                {
                    if (parent is SifElementPointer)
                    {
                        SifElementPointer sifParentPointer = (SifElementPointer)stepParent;
                        AdkNodeTest       nt = steps[step].NodeTest;
                        if (nt is AdkNodeNameTest)
                        {
                            SifElementPointer.AddChildDirective result =
                                sifParentPointer.GetAddChildDirective(((AdkNodeNameTest)nt).NodeName);
                            if (result != SifElementPointer.AddChildDirective.DONT_ADD_NOT_REPEATABLE)
                            {
                                break;
                            }
                        }
                    }
                    else
                    {
                        break;
                    }
                    step--;
                    stepParent = stepParent.Parent;
                }
                if (step > -1 && step != currentStep)
                {
                    currentStep = step;
                    parent      = stepParent;
                }
            }

            // At this point, we have a parent element and the index of the current
            // step to evaluate
            //InitialContext context = new InitialContext( new RootContext( this, (NodePointer) getContextPointer()));
            for ( ; currentStep < steps.Length; currentStep++)
            {
                AdkNodeTest nt = steps[currentStep].NodeTest;
                if (nt is AdkNodeNameTest)
                {
                    current = parent.CreateChild(this, ((AdkNodeNameTest)nt).NodeName, 0);
                    if (current == null)
                    {
                        throw new ArgumentException("Cannot evaluate expression step: " + steps[currentStep]);
                    }
                    foreach (AdkExpression predicate in steps[currentStep].Predicates)
                    {
                        CreatePredicateValues(current, predicate, context);
                    }
                }
                else
                {
                    throw new ArgumentException("Cannot evaluate expression step: " + steps[currentStep]);
                }

                parent = current;
            }
            // At the end, the 'parent' variable will contain the last element created by this function
            return(parent);
        }
 private SingleNodeIterator( INodePointer iteratedItem, int position )
 {
     fPointer = iteratedItem;
     fPosition = position;
 }
Beispiel #20
0
 /// <summary>
 /// Creates a child element, if supported by this node
 /// </summary>
 /// <param name="parentPointer"></param>
 /// <param name="formatter"></param>
 /// <param name="version"></param>
 /// <param name="context"></param>
 /// <returns></returns>
 public INodePointer CreateChild(INodePointer parentPointer, SifFormatter formatter, SifVersion version,
                                 SifXPathContext context)
 {
     // TODO Auto-generated method stub
     return(null);
 }
Beispiel #21
0
 public FauxAttribute(INodePointer parent, string fauxName, String value) : base(parent, fauxName, true)
 {
     fValue = value;
 }
        private INodePointer BuildLegacyPointers( INodePointer parent, Element referencedField )
        {
            String[] xPathParts = fLegacyXpath.Split( '/' );
            int currentSegment = 0;
            INodePointer root = null;
            INodePointer currentParent = parent;

            // Build the path
            while ( currentSegment < xPathParts.Length - 1 )
            {
                FauxSifElementPointer pointer = new FauxSifElementPointer( currentParent, xPathParts[currentSegment] );
                if ( currentParent != null && currentParent is FauxSifElementPointer )
                {
                    ((FauxSifElementPointer) currentParent).SetChild( pointer, xPathParts[currentSegment] );
                }
                currentParent = pointer;
                if ( root == null )
                {
                    root = pointer;
                }
                currentSegment++;
            }

            String finalSegment = xPathParts[currentSegment];
            bool isAttribute = false;
            if ( finalSegment.StartsWith( "@" ) )
            {
                // This is an attribute
                finalSegment = finalSegment.Substring( 1 );
                isAttribute = true;
            }

            SurrogateSimpleFieldPointer fieldPointer =
                new SurrogateSimpleFieldPointer( currentParent, finalSegment, referencedField, isAttribute );
            if ( currentParent != null && currentParent is FauxSifElementPointer )
            {
                ((FauxSifElementPointer) currentParent).SetChild( fieldPointer, finalSegment );
            }
            if ( root == null )
            {
                root = fieldPointer;
            }

            return root;
        }
Beispiel #23
0
 public AbstractNodePointer(INodePointer parent)
 {
     fParentPointer = parent;
 }
 /// <summary>
 /// Creates an instance of SIFXPathNavigator
 /// </summary>
 /// <param name="context">The SIFXPathContext around this navigator</param>
 /// <param name="pointer">The pointer that this navigator initial points to </param>
 internal SifXPathNavigator(SifXsltContext context, INodePointer pointer)
 {
     fParentContext = context;
     fNameTable     = new NameTable();
     fCursor        = new RootCursor(pointer);
 }
 internal static INodePointer Create( INodePointer parent, SifElement element, SifVersion version )
 {
     if ( version.Major < 2 )
     {
         IElementDef fieldDef = element.ElementDef;
         IRenderSurrogate rs = fieldDef.GetVersionInfo( version ).GetSurrogate();
         if ( rs != null )
         {
             return rs.CreateNodePointer( parent, element, version );
         }
     }
     return new SifElementPointer( parent, element, version );
 }
 public FauxSifElementPointer( INodePointer parent, string fauxName )
     : base(parent, fauxName, false)
 {
 }
 public RootCursor(INodePointer root)
 {
     fRoot = root;
 }
Beispiel #28
0
 public FauxSifElementPointer(INodePointer parent, string fauxName)
     : base(parent, fauxName, false)
 {
 }
 /// <summary>
 /// Creates a child element, if supported by this node
 /// </summary>
 /// <param name="parentPointer"></param>
 /// <param name="formatter"></param>
 /// <param name="version"></param>
 /// <param name="context"></param>
 /// <returns></returns>
 public INodePointer CreateChild( INodePointer parentPointer, SifFormatter formatter, SifVersion version,
                                  SifXPathContext context )
 {
     return null;
 }
 protected FauxElementPointer( INodePointer parent, String fauxName, bool isAttribute )
     : base(parent)
 {
     fFieldName = fauxName;
     fIsAttribute = isAttribute;
 }
Beispiel #31
0
 /// <summary>
 /// Called by the ADK XPath traversal code when it is traversing the given element
 /// in a legacy version of SIF
 /// </summary>
 /// <param name="parentPointer">The parent element pointer</param>
 /// <param name="element">The Element to create a node pointer for</param>
 /// <param name="version">The SIFVersion in effect</param>
 /// <returns>A NodePointer representing the current element</returns>
 public INodePointer CreateNodePointer(INodePointer parentPointer, Element element, SifVersion version)
 {
     return(null);
 }
        private void CreatePredicateValues( INodePointer current, AdkExpression predicate, XsltContext evalContext )
        {
            if ( predicate is AdkEqualOperation )
            {
                AdkExpression[] components = ((AdkEqualOperation) predicate).Arguments;
                AdkLocPath lp = (AdkLocPath) components[0];
                AdkNodeNameTest attrName = (AdkNodeNameTest) lp.Steps[0].NodeTest;
                INodePointer attr = current.CreateAttribute( this, attrName.NodeName );
                Object value = components[1].ComputeValue( evalContext );
                attr.SetValue( value );
                return;
            }

            // This might be the 'adk:x()' function
            if ( predicate is AdkAndOperation )
            {
                foreach ( AdkExpression expr in ((AdkAndOperation) predicate).Arguments )
                {
                    if ( expr is AdkFunction && ((AdkFunction) expr).FunctionName.Equals( "adk:x" ) )
                    {
                        // This is the special marker function that tells the ADK to always
                        // create the parent repeatable element. Don't evaluate it.
                        continue;
                    }
                    else
                    {
                        CreatePredicateValues( current, expr, evalContext );
                    }
                }
                return;
            }

            // Unrecognized predicate
            throw new ArgumentException( "Cannot evaluate expression predicate: " + predicate );
        }
 public SingleNodeIterator( INodePointer iteratedItem )
 {
     fPointer = iteratedItem;
 }
 public AbstractNodePointer( INodePointer parent )
 {
     fParentPointer = parent;
 }
        /// <summary>
        /// Creates the specified path and returns a pointer
        /// </summary>
        /// <param name="xpath"></param>
        /// <returns></returns>
        public INodePointer CreatePath(String xpath)
        {
            INodePointer np = BuildADKPathWithPredicates(xpath, fContext);

            return(np);
        }
 private SingleNodeIterator(INodePointer iteratedItem, int position)
 {
     fPointer  = iteratedItem;
     fPosition = position;
 }
 /// <summary>
 /// Called by the ADK XPath traversal code when it is traversing the given element
 /// in a legacy version of SIF
 /// </summary>
 /// <param name="parentPointer">The parent element pointer</param>
 /// <param name="sourceElement">The Element to create a node pointer for</param>
 /// <param name="version">The SIFVersion in effect</param>
 /// <returns>A NodePointer representing the current element</returns>
 public INodePointer CreateNodePointer( INodePointer parentPointer, Element sourceElement, SifVersion version )
 {
     // 1) Find the field referenced by the XPathSurrogate expression
     //    If it doesn't exist, return null
     Element referencedField = FindReferencedElement( sourceElement );
     if ( referencedField == null )
     {
         return null;
     }
     // 2) If it does exist, build out a fake set of node pointers representing the
     //    SIF 1.5r1 path and return the root pointer.
     return BuildLegacyPointers( parentPointer, referencedField );
 }
Beispiel #38
0
 protected FauxElementPointer(INodePointer parent, String fauxName, bool isAttribute) : base(parent)
 {
     fFieldName   = fauxName;
     fIsAttribute = isAttribute;
 }
 /// <summary>
 /// Creates a child element, if supported by this node
 /// </summary>
 /// <param name="parentPointer"></param>
 /// <param name="formatter"></param>
 /// <param name="version"></param>
 /// <param name="context"></param>
 /// <returns></returns>
 public INodePointer CreateChild( INodePointer parentPointer, SifFormatter formatter, SifVersion version,
                                  SifXPathContext context )
 {
     // TODO Auto-generated method stub
     return null;
 }
Beispiel #40
0
 protected SurrogateElementPointer(INodePointer parent, String fauxName)
     : base(parent, fauxName, false)
 {
 }
 public SurrogateSimpleFieldPointer(INodePointer parent, string fauxName, Element pointedNode,
                                    Boolean isAttribute)
     : base(parent, fauxName, pointedNode, isAttribute)
 {
 }
Beispiel #42
0
 protected SurrogateElementPointer(INodePointer parent, String fauxName, T pointedNode, bool isAttribute)
     : base(parent, fauxName, isAttribute)
 {
     fElement = pointedNode;
 }
 /// <summary>
 /// Creates a child element, if supported by this node
 /// </summary>
 /// <param name="parentPointer"></param>
 /// <param name="formatter"></param>
 /// <param name="version"></param>
 /// <param name="context"></param>
 /// <returns></returns>
 public INodePointer CreateChild(INodePointer parentPointer, SifFormatter formatter, SifVersion version,
                                 SifXPathContext context)
 {
     return(null);
 }
 private NavigableIterator(INodeIterator wrappedIterator, INavCursor parentIterator, INodePointer current)
 {
     fCurrentIterator = wrappedIterator;
     fParentIterator  = parentIterator;
     fCurrentPointer  = current;
 }
 public FauxAttribute( INodePointer parent, string fauxName, String value )
     : base(parent, fauxName, true)
 {
     fValue = value;
 }
 public SingleNodeIterator(INodePointer iteratedItem)
 {
     fPointer = iteratedItem;
 }