예제 #1
0
        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));
        }
예제 #2
0
        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);
        }
예제 #3
0
        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));
        }
예제 #4
0
        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']");
        }