protected void GetXmlFragment_(XmlWriter xmlWriter, bool absoluteLinks) { if (HasXmlProperty) { string name = GetXmlElementPrefixedLocalName(); string NSPrefix; string localName; XmlProperty.SplitLocalName(name, out NSPrefix, out localName); //DebugFix.Assert(string.IsNullOrEmpty(NSPrefix)); string nsUri = GetXmlNamespaceUri(NSPrefix); XmlProperty xmlProp = GetXmlProperty(); if (String.IsNullOrEmpty(NSPrefix)) { if (!String.IsNullOrEmpty(nsUri)) { xmlWriter.WriteStartElement(name, nsUri); } else { #if DEBUG Debugger.Break(); #endif //DEBUG xmlWriter.WriteStartElement(name); } } else { //#if DEBUG // Debugger.Break(); //#endif //DEBUG if (!String.IsNullOrEmpty(nsUri)) { xmlWriter.WriteStartElement(NSPrefix, localName, nsUri); } else { #if DEBUG Debugger.Break(); #endif //DEBUG xmlWriter.WriteStartElement(name); } } ManagedImageMedia manImageMedia = GetImageMedia() as ManagedImageMedia; ManagedVideoMedia manVideoMedia = GetVideoMedia() as ManagedVideoMedia; foreach (XmlAttribute xmlAttr in xmlProp.Attributes.ContentsAs_Enumerable) { string value = xmlAttr.Value; string nsUriAttr = xmlAttr.GetNamespaceUri(); string attrNSPrefix = xmlAttr.Prefix; string nameWithoutPrefix = xmlAttr.PrefixedLocalName != null ? xmlAttr.PrefixedLocalName : xmlAttr.LocalName; if (manImageMedia != null && (nameWithoutPrefix == "href" || nameWithoutPrefix == "src")) { DebugFix.Assert(manImageMedia.ImageMediaData.OriginalRelativePath == value); if (absoluteLinks) { value = ((FileDataProvider)manImageMedia.ImageMediaData.DataProvider).DataFileFullPath; } } if (manVideoMedia != null && (nameWithoutPrefix == "href" || nameWithoutPrefix == "src")) { DebugFix.Assert(manVideoMedia.VideoMediaData.OriginalRelativePath == value); if (absoluteLinks) { value = ((FileDataProvider)manVideoMedia.VideoMediaData.DataProvider).DataFileFullPath; } } if (String.IsNullOrEmpty(attrNSPrefix)) { if (nameWithoutPrefix.Equals(XmlReaderWriterHelper.NS_PREFIX_XMLNS)) { DebugFix.Assert(XmlReaderWriterHelper.NS_URL_XMLNS.Equals(nsUriAttr)); xmlWriter.WriteAttributeString(XmlReaderWriterHelper.NS_PREFIX_XMLNS, XmlReaderWriterHelper.NS_URL_XMLNS, value); } else if (!String.IsNullOrEmpty(nsUriAttr) && nsUriAttr != nsUri) { #if DEBUG Debugger.Break(); #endif //DEBUG xmlWriter.WriteAttributeString(nameWithoutPrefix, nsUriAttr, value); } else { xmlWriter.WriteAttributeString(nameWithoutPrefix, value); } } else { if (attrNSPrefix.Equals(XmlReaderWriterHelper.NS_PREFIX_XMLNS)) { DebugFix.Assert(nsUriAttr == XmlReaderWriterHelper.NS_URL_XMLNS); xmlWriter.WriteAttributeString(XmlReaderWriterHelper.NS_PREFIX_XMLNS, nameWithoutPrefix, XmlReaderWriterHelper.NS_URL_XMLNS, value); } else if (attrNSPrefix.Equals(XmlReaderWriterHelper.NS_PREFIX_XML)) { DebugFix.Assert(nsUriAttr == XmlReaderWriterHelper.NS_URL_XML); xmlWriter.WriteAttributeString(XmlReaderWriterHelper.NS_PREFIX_XML, nameWithoutPrefix, XmlReaderWriterHelper.NS_URL_XML, value); } else if (!String.IsNullOrEmpty(nsUriAttr)) { #if DEBUG //DebugFix.Assert(nsUriAttr != nsUri); string uriCheck = xmlProp.GetNamespaceUri(attrNSPrefix); DebugFix.Assert(nsUriAttr == uriCheck); #endif //DEBUG xmlWriter.WriteAttributeString(attrNSPrefix, nameWithoutPrefix, nsUriAttr, value); } else if (!String.IsNullOrEmpty(nsUri)) { #if DEBUG Debugger.Break(); #endif //DEBUG xmlWriter.WriteAttributeString(attrNSPrefix, nameWithoutPrefix, nsUri, value); } else { #if DEBUG Debugger.Break(); #endif //DEBUG xmlWriter.WriteAttributeString(nameWithoutPrefix, value); } } } } if (mChildren.Count > 0) { for (int i = 0; i < mChildren.Count; i++) { TreeNode child = mChildren.Get(i); child.GetXmlFragment_(xmlWriter, absoluteLinks); } } else { AbstractTextMedia txt = GetTextMedia(); if (txt != null) { DebugFix.Assert(!HasXmlProperty || mChildren.Count == 0); bool needsCData = false; TreeNode node = null; if (HasXmlProperty) { node = this; } else if (Parent != null && Parent.HasXmlProperty) { node = Parent; } if (node != null) { string name = node.GetXmlElementLocalName(); if (name == "script" || name == "style") { needsCData = true; } } if (needsCData) { xmlWriter.WriteCData(txt.Text); } else { xmlWriter.WriteString(txt.Text); } } } if (HasXmlProperty) { xmlWriter.WriteEndElement(); } }