Leveraging XPATH Axes
XPATH axes come in very handy when nodes need to be selected based on (attribute’s or child element’s) values that must match those of other nodes elsewhere in the xml tree. Consider the following log4net configuration file : <?xml version=”1.0″?> <configuration> <configSections> <section name=”nhibernate” type=”System.Configuration.NameValueSectionHandler, System, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b77a5c561934e089″ /> <section name=”log4net” type=”log4net.Config.Log4NetConfigurationSectionHandler,log4net” /> </configSections> <nhibernate> <add key=”hibernate.connection.provider” value=”NHibernate.Connection.DriverConnectionProvider” /> <add key=”hibernate.connection.driver_class” value=”NHibernate.Driver.SqlClientDriver” /> <add key=”hibernate.connection.connection_string” value=”Server=servername; Database=dbname; User=username; Password=secret;” /> <add key=”hibernate.connection.isolation” value=”ReadCommitted” /> <add key=”hibernate.dialect” value=”NHibernate.Dialect.MsSql2000Dialect” /> </nhibernate> <log4net> <appender name=”NHibernateFileLog” type=”log4net.Appender.RollingFileAppender”> <file value=”Logs/nhibernate.txt” /> <appendToFile value=”true” /> <rollingStyle value=”Size” /> <maxSizeRollBackups value=”10″ /> <maximumFileSize value=”100KB” /> <staticLogFileName value=”true” /> <layout type=”log4net.Layout.PatternLayout”> <conversionPattern value=”%d{HH:mm:ss.fff} [%t] %-5p %c – %m%n” /> </layout> </appender> <appender name=”GeneralLog” type=”log4net.Appender.RollingFileAppender”> <file value=”Logs/general.txt” /> <appendToFile […]