public void TestConditionLocator() { var transform = XDocument.Parse(@" <configuration xmlns:xdt=""http://schemas.microsoft.com/XML-Document-Transform""> <appSettings> <add xdt:Locator=""Condition(@key='key1' or @anotherAttribute='something')"" /> </appSettings> </configuration> "); var transformElement = transform .Element("configuration") .Element("appSettings") .Element("add"); var xpath = Transform_Accessor.GetTargetXPath(transformElement); Assert.AreEqual(xpath.Expression, "/configuration/appSettings/add[@key='key1' or @anotherAttribute='something']"); var workingElement = this.doc .Element("configuration") .Element("appSettings") .Elements("add") .Single(e => e.Attribute("key").Value == "key1"); Assert.AreEqual(workingElement, this.doc.XPathSelectElement(xpath.Expression)); }
public void TestRootElement() { var xpath = Transform_Accessor.GetTargetXPath(this.doc.Root); //Assert.IsTrue(xpath.XPath == "/configuration"); var element = this.doc.XPathSelectElement(xpath.Expression, xpath.Resolver); Assert.IsNotNull(element); Assert.IsTrue(element == this.doc.Root); }
public void TestImplicitXPath() { var element = this.doc.Element("configuration") .Element("system.net") .Element("mailSettings") .Element("smtp") .Element("network"); var xpath = Transform_Accessor.GetTargetXPath(element); Assert.AreEqual(element, this.doc.XPathSelectElement(xpath.Expression, xpath.Resolver)); }
public void TestConditionLocatorRecursive() { var transform = XDocument.Parse(@" <configuration xmlns:xdt=""http://schemas.microsoft.com/XML-Document-Transform""> <appSettings xdt:Locator=""Condition(@attribute!='value')""> <add xdt:Locator=""Condition(@key='key1')"" /> </appSettings> </configuration> "); var transformElement = transform .Element("configuration") .Element("appSettings") .Element("add"); var xpath = Transform_Accessor.GetTargetXPath(transformElement); Assert.AreEqual(xpath.Expression, "/configuration/appSettings[@attribute!='value']/add[@key='key1']"); }