// // RecordOutput interface method implementation // public Processor.OutputResult RecordDone(RecordBuilder record) { BuilderInfo mainNode = record.MainNode; switch (mainNode.NodeType) { case XmlNodeType.Text: case XmlNodeType.Whitespace: case XmlNodeType.SignificantWhitespace: this.writer.Write(mainNode.Value); break; default: break; } record.Reset(); return Processor.OutputResult.Continue; }
// RecordOutput interface method implementation // public Processor.OutputResult RecordDone(RecordBuilder record) { BuilderInfo mainNode = record.MainNode; switch (mainNode.NodeType) { case XmlNodeType.Element: this.writer.WriteStartElement(mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI); WriteAttributes(record.AttributeList, record.AttributeCount); if (mainNode.IsEmptyTag) { this.writer.WriteEndElement(); } break; case XmlNodeType.Text: case XmlNodeType.Whitespace: case XmlNodeType.SignificantWhitespace: this.writer.WriteString(mainNode.Value); break; case XmlNodeType.CDATA: Debug.Assert(false, "XSLT never gives us CDATA"); this.writer.WriteCData(mainNode.Value); break; case XmlNodeType.EntityReference: this.writer.WriteEntityRef(mainNode.LocalName); break; case XmlNodeType.ProcessingInstruction: this.writer.WriteProcessingInstruction(mainNode.LocalName, mainNode.Value); break; case XmlNodeType.Comment: this.writer.WriteComment(mainNode.Value); break; case XmlNodeType.Document: break; case XmlNodeType.DocumentType: this.writer.WriteRaw(mainNode.Value); break; case XmlNodeType.EndElement: this.writer.WriteFullEndElement(); break; case XmlNodeType.None: case XmlNodeType.Attribute: case XmlNodeType.Entity: case XmlNodeType.Notation: case XmlNodeType.DocumentFragment: case XmlNodeType.EndEntity: break; default: Debug.Fail("Invalid NodeType on output: " + ((int)mainNode.NodeType).ToString()); break; } record.Reset(); return Processor.OutputResult.Continue; }
// RecordOutput interface method implementation // public Processor.OutputResult RecordDone(RecordBuilder record) { BuilderInfo mainNode = record.MainNode; switch (mainNode.NodeType) { case XmlNodeType.Element: this.writer.WriteStartElement(mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI); WriteAttributes(record.AttributeList, record.AttributeCount); if (mainNode.IsEmptyTag) { this.writer.WriteEndElement(); } break; case XmlNodeType.Text: case XmlNodeType.Whitespace: case XmlNodeType.SignificantWhitespace: this.writer.WriteString(mainNode.Value); break; case XmlNodeType.CDATA: Debug.Assert(false, "XSLT never gives us CDATA"); this.writer.WriteCData(mainNode.Value); break; case XmlNodeType.EntityReference: this.writer.WriteEntityRef(mainNode.LocalName); break; case XmlNodeType.ProcessingInstruction: this.writer.WriteProcessingInstruction(mainNode.LocalName, mainNode.Value); break; case XmlNodeType.Comment: this.writer.WriteComment(mainNode.Value); break; case XmlNodeType.Document: break; case XmlNodeType.DocumentType: this.writer.WriteRaw(mainNode.Value); break; case XmlNodeType.EndElement: this.writer.WriteFullEndElement(); break; case XmlNodeType.None: case XmlNodeType.Attribute: case XmlNodeType.Entity: case XmlNodeType.Notation: case XmlNodeType.DocumentFragment: case XmlNodeType.EndEntity: break; default: Debug.Fail("Invalid NodeType on output: " + ((int)mainNode.NodeType).ToString()); break; } record.Reset(); return(Processor.OutputResult.Continue); }
// // RecordOutput interface method implementation // public Processor.OutputResult RecordDone(RecordBuilder record) { if (output.Method == XsltOutput.OutputMethod.Unknown) { if (! DecideDefaultOutput(record.MainNode)) { CacheRecord(record); } else { OutputCachedRecords(); OutputRecord(record); } } else { OutputRecord(record); } record.Reset(); return Processor.OutputResult.Continue; }
public Processor.OutputResult RecordDone(RecordBuilder record) { Debug.Assert(record != null); BuilderInfo mainNode = record.MainNode; documentIndex++; mainNode.LocalName = doc.nt.Add(mainNode.LocalName); mainNode.NamespaceURI = doc.nt.Add(mainNode.NamespaceURI); switch(mainNode.NodeType) { case XmlNodeType.Element: { XPathElement e = mainNode.IsEmptyTag ? new XPathEmptyElement(mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI, 0, 0, node.topNamespace, documentIndex) : new XPathElement( mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI, 0, 0, node.topNamespace, documentIndex) ; node.AppendChild( e ); XPathNamespace last = null; for (int attrib = 0; attrib < record.AttributeCount; attrib ++) { documentIndex++; Debug.Assert(record.AttributeList[attrib] is BuilderInfo); BuilderInfo attrInfo = (BuilderInfo) record.AttributeList[attrib]; if (attrInfo.NamespaceURI == Keywords.s_XmlnsNamespace) { XPathNamespace tmp = new XPathNamespace(attrInfo.Prefix == string.Empty ? string.Empty : attrInfo.LocalName, attrInfo.Value, documentIndex); tmp.next = last; last = tmp; } else { e.AppendAttribute( new XPathAttribute( attrInfo.Prefix, attrInfo.LocalName, attrInfo.NamespaceURI, attrInfo.Value, documentIndex ) ); } } if (last != null) { e.AppendNamespaces(last); } if (!mainNode.IsEmptyTag) { node = e; } break; } case XmlNodeType.Text: case XmlNodeType.Whitespace: case XmlNodeType.SignificantWhitespace: node.AppendChild( new XPathText( mainNode.Value, 0, 0, documentIndex ) ); break; case XmlNodeType.ProcessingInstruction: node.AppendChild( new XPathProcessingInstruction( mainNode.LocalName, mainNode.Value, documentIndex ) ); break; case XmlNodeType.Comment: node.AppendChild( new XPathComment( mainNode.Value, documentIndex ) ); break; case XmlNodeType.Document: break; case XmlNodeType.EndElement: node = node.parent; break; default: Debug.Fail("Invalid NodeType on output: " + mainNode.NodeType.ToString()); break; } record.Reset(); return Processor.OutputResult.Continue; }
public Processor.OutputResult RecordDone(RecordBuilder record) { Debug.Assert(record != null); BuilderInfo mainNode = record.MainNode; documentIndex++; mainNode.LocalName = doc.nt.Add(mainNode.LocalName); mainNode.NamespaceURI = doc.nt.Add(mainNode.NamespaceURI); switch (mainNode.NodeType) { case XmlNodeType.Element: { XPathElement e = mainNode.IsEmptyTag ? new XPathEmptyElement(mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI, 0, 0, node.topNamespace, documentIndex) : new XPathElement(mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI, 0, 0, node.topNamespace, documentIndex) ; node.AppendChild(e); XPathNamespace last = null; for (int attrib = 0; attrib < record.AttributeCount; attrib++) { documentIndex++; Debug.Assert(record.AttributeList[attrib] is BuilderInfo); BuilderInfo attrInfo = (BuilderInfo)record.AttributeList[attrib]; if (attrInfo.NamespaceURI == Keywords.s_XmlnsNamespace) { XPathNamespace tmp = new XPathNamespace(attrInfo.Prefix == string.Empty ? string.Empty : attrInfo.LocalName, attrInfo.Value, documentIndex); tmp.next = last; last = tmp; } else { e.AppendAttribute(new XPathAttribute(attrInfo.Prefix, attrInfo.LocalName, attrInfo.NamespaceURI, attrInfo.Value, documentIndex)); } } if (last != null) { e.AppendNamespaces(last); } if (!mainNode.IsEmptyTag) { node = e; } break; } case XmlNodeType.Text: case XmlNodeType.Whitespace: case XmlNodeType.SignificantWhitespace: node.AppendChild(new XPathText(mainNode.Value, 0, 0, documentIndex)); break; case XmlNodeType.ProcessingInstruction: node.AppendChild(new XPathProcessingInstruction(mainNode.LocalName, mainNode.Value, documentIndex)); break; case XmlNodeType.Comment: node.AppendChild(new XPathComment(mainNode.Value, documentIndex)); break; case XmlNodeType.Document: break; case XmlNodeType.EndElement: node = node.parent; break; default: Debug.Fail("Invalid NodeType on output: " + mainNode.NodeType.ToString()); break; } record.Reset(); return(Processor.OutputResult.Continue); }