در مطلب قبلی Web.config File Transformation #1 با مفهوم انتقال وب کانفیگ و برخی از روشهای آن آشنا شدید در ادامه به موارد دیگری خواهم پرداخت.
مثال:
مثال بالا نشان میدهد که چگونه دنبال connectionstring ی بگردیم که نام آن oldname یا نام ارائه دهنده آن oldprovider باشد.
مثال:
مثال فوق دنبال عناصری که ویژگی نام آنها برابر AWLT باشد میگردد.
مثال:
در این مثال همانند مثال Condition همان عناصر را با استفاده از XPath جستجو مینماید.
Insert:
مثال:
connectionstring انتقالی را به لیست رشتههای اتصال فایل انتقالی اضافه مینماید.
مثال:
عنصر انتقالی که همان allow میباشد که قبل از عنصر مسیر configuration/system.web/authorization/deny برای همه کاربر است قرار میدهد.Remove:
همه عناصر add را از فایل انتقالی حذف مینماید.
قواعد انتقال وب کانفیگ
در کل دو ویژگی اصلی در انتقال وب کانفیگ وجود دارد که یک xdt:Transform و دیگری xdt:Locator می باشد. این دو در واقع چگونگی تغییر فایل انتقالی در زمان deploy آن را تعیین میکنند. این ویژگیها از نوع xml میباشد که در فضای نام XML-Document-Transform تعریف شده و با پسوند xdt شروع میشود.
قاعده ویژگی Locator
این ویژگی برای جستجو در فایل وب کانفیگ استفاده میشود
Condition:
عبارت condition برای تعیین شرط قاعده Locator استفاده میشود
Locator="Condition(XPath expression)"
<configuration xmlns:xdt="..."> <connectionStrings> <add name="AWLT" connectionString="newstring" providerName="newprovider" xdt:Transform="Replace" xdt:Locator="Condition(@name='oldname' or @providerName='oldprovider')" /> </connectionStrings> </configuration>
Match:
برای انتخاب عنصر یا عناصری که مقدار آن برابر ویژگی یا ویژگیهای تعیین شده باشد. در صورتی که چندین ویژگی یافت شود، فقط عناصری که همه ویژگیهای تعیین شده آنها برابر باشد انتخاب میشود. نام ویژگیها را میبایست با کما از هم جدا نمود.
Locator="Match(comma-delimited list of one or more attribute names)"
<configuration xmlns:xdt="..."> <connectionStrings> <add name="AWLT" connectionString="newstring" providerName="newprovider" xdt:Transform="Replace" xdt:Locator="Match(name)" /> </connectionStrings> </configuration>
XPath:
عبارتی از مسیرهای عناصر xml را جستجو میکند.
Locator="XPath(XPath expression)"
<configuration xmlns:xdt="..."> <connectionStrings> <add name="AWLT" connectionString="newstring" providerName="newprovider" xdt:Transform="Replace" xdt:Locator="XPath(configuration/connectionStrings[@name='AWLT' or @providerName='System.Data.SqlClient'])" /> </connectionStrings> </configuration>
قاعده ویژگی Transform
این ویژگی نحوه انتقال عنصر در فایل وب کانفیگ را مشخص میسازد.
Replace:
عناصر تعیین شده با عناصر انتقالی جایگزین میشود
Transform="Replace"
عنصر انتقالی به عنوان فرزند عنصر تعیین شده اضافه میگردد.
Transform="Insert"
<configuration xmlns:xdt="..."> <connectionStrings> <add name="AWLT" connectionString="newstring" providerName="newprovider" xdt:Transform="Insert" /> </connectionStrings> </configuration>
InsertBefore:
عنصر انتقالی را قبل از مسیر تعیین شده با XPath قرار میدهد.
Transform="InsertBefore(XPath expression)"
<configuration xmlns:xdt="..."> <authorization> <allow roles="Admins" xdt:Transform="InsertBefore(/configuration/system.web/authorization/deny[@users='*'])" /> </authorization> </configuration>
InsertAfter:
عنصر تعیین شده را بعد از مسیر تعیین شده با XPath قرار میدهد.
Transform="InsertAfter(XPath expression)"
مثال:
<configuration xmlns:xdt="..."> <authorization> <deny users="UserName" xdt:Transform="InsertAfter (/configuration/system.web/authorization/allow[@roles='Admins'])" /> </authorization> </configuration>
عنصر تعیین شده را از فایل انتفالی حذف مینماید. اگر چندین عنصر یافت شود اولین عنصر حذف خواهد شد.
Transform="Remove"
مثال
<configuration xmlns:xdt="..."> <connectionStrings> <add xdt:Transform="Remove" /> </connectionStrings> </configuration>
همه عناصر add عنصر connectionstring را انتخاب و اولین add را حذف مینماید.
RemoveAll:
عنصر یا عناصر تعیین شده را از فایل انتقالی حذف مینماید.
Transform="RemoveAll"
مثال:
<configuration xmlns:xdt="..."> <connectionStrings> <add xdt:Transform="RemoveAll" /> </connectionStrings> </configuration>
RemoveAttribute:
ویژگی تعیین شده را از عناصر انتخاب شده حذف مینماید.
Transform="RemoveAttributes(comma-delimited list of one or more attribute names)"
مثال:
<configuration xmlns:xdt="..."> <compilation xdt:Transform="RemoveAttributes(debug,batch)"> </compilation> </configuration>
ویژگی debug و batch را از عنصر compilation وب کانفیگ انتقالی حذف مینماید.
SetAttribute:
ویژگی تعیین شده را با مقادیر انتقالی مقدار دهی میکند.
Transform="SetAttributes(comma-delimited list of one or more attribute names)"
مثال:
<configuration xmlns:xdt="..."> <compilation batch="false" xdt:Transform="SetAttributes(batch)"> </compilation> </configuration>
ویژگی batch وب کانفیگ انتقالی را با مقدار false مقدار دهی میکند.
ادامه دارد...