A layout merger is used to merge a current version layout with an override that is an older version. Merging takes place broadly by copying the current version into a new XmlNode in a specified document. Currently most elements are copied unmodified. However, part refs are treated specially: Each consecutive sequence of part nodes is adjusted in the following ways: - order is made to conform to the order in the override, for any elements found in the override. - any elements not found in the override are copied, in the current sequence starting from the previous element that IS matched, and visibility set to "never". - (elements not matched in the override are discarded, except that) - "$child" elements in the override are copied to the output - a specified set of attributes may also be overridden.
Inheritance: IOldVersionMerger
Esempio n. 1
0
		void TestMerge(string newMaster, string user, string expectedOutput, string suffix)
		{
			var newMasterDoc = new XmlDocument();
			newMasterDoc.LoadXml(newMaster);
			var userDoc = new XmlDocument();
			userDoc.LoadXml(user);
			var outputDoc = new XmlDocument();
			var merger = new LayoutMerger();
			XmlNode output = merger.Merge(newMasterDoc.DocumentElement, userDoc.DocumentElement, outputDoc, suffix);
			var expectedDoc = new XmlDocument();
			expectedDoc.LoadXml(expectedOutput);
			Assert.IsTrue(XmlUtils.NodesMatch(output, expectedDoc.DocumentElement));
		}
Esempio n. 2
0
		void TestMerge(string current, string user, string expectedOutput)
		{
			XmlDocument currentDoc = new XmlDocument();
			currentDoc.LoadXml(current);
			XmlDocument userDoc = new XmlDocument();
			userDoc.LoadXml(user);
			XmlDocument outputDoc = new XmlDocument();
			LayoutMerger merger = new LayoutMerger();
			XmlNode output = merger.Merge(currentDoc.DocumentElement, userDoc.DocumentElement, outputDoc);
			XmlDocument expectedDoc = new XmlDocument();
			expectedDoc.LoadXml(expectedOutput);
			Assert.IsTrue(XmlUtils.NodesMatch(output, expectedDoc.DocumentElement));
		}