This topic provides reference information about the syntax of xdt:Transform and xdt:Locator attributes that you use in Web.config transform files. The topic applies to the following products and assumes that you have installed the latest release of the Visual Studio Web Publish Update:
The root element of a transform file must specify the XML-Document-Transform namespace in its opening tag, as shown in the preceding example. The Locator and Transform elements themselves are not reproduced in the deployed Web.config file.
- Visual Studio 2012
- Visual Studio Express 2012 for Web
- Visual Studio 2010
- Visual Web Developer 2010 Express
The following example shows the contents of a transform file that changes a connection string and replaces the customErrors element:
Transformations are applied during deployment, but you can see a preview of the changes in Visual Studio. In Solution Explorer, right-click the transform file (for example, Web.Release.config) and select Preview Transform. Visual Studio shows the original Web.config file and the transformed Web.config file side by side.
Each of the following sections explains the syntax for one Locator attribute.
Specifies an XPath expression that is appended to the current element's XPath expression. Elements that match the combined XPath expression are selected.
The following example shows how to select connection string elements whose name attribute value is oldname or a providerName attribute whose value is oldprovider. In the deployed Web.config file, the selected elements are replaced with the element that is specified in the transform file.
The effective XPath expression that is applied to the development Web.config file as a result of the specified Condition expression is the following:
configuration/connectionStrings/add[@name='AWLT' or @providerName='System.Data.SqlClient']
This expression is a result of combining the implicit XPath condition for the current element (configuration/connectionStrings) with the expression that is specified explicitly.
Each of the following sections explains the syntax for one Transform attribute.
Inserts the element that is defined in the transform XML directly before the element that is selected by the specified XPath expression. The XPath expression must be an absolute expression, because it is applied to the development Web.config file as a whole; it is not appended only to the current element's implicit XPath expression.
Inserts the element that is defined in the transform XML directly after the element that is selected by the specified XPath expression. The XPath expression must be an absolute expression, because it is applied to the development Web.config file as a whole; it is not appended to the current element's implicit XPath expression.
Removes specified attributes from the selected elements.
The following example shows how to select all the compilation elements in the development Web.config file. (Because there can be only one compilation element in the configuration file, you do not have to specify a Locator attribute.) In the deployed Web.config file, thedebug and batch attributes are removed from the compilation element.
Sets attributes for selected elements to the specified values. The Replace transform attribute replaces an entire element including all of its attributes. In contrast, the SetAttributes attribute enables you to leave the element as it is but change selected attributes. If you do not specify which attributes to change, all of the attributes that are present in the element in the transform file are changed.
The SetAttributes transform affects all selected elements. This behavior is different from the Replace transform attribute, which affects only the first selected element if multiple elements are selected.
The following example shows how to select all the compilation elements in the development Web.config file. (Because there can be only one compilation element in the configuration file, you do not have to specify a Locator attribute.) In the deployed Web.config file, the value of the compilation element's batch attribute is set to false.
Locator attributes are optional. If you do not specify a Locator attribute, the element to be changed is specified implicitly by the element that the Transform attribute is specified for. In the following example, the entire system.web element is replaced, because no Locatorattribute is specified to indicate otherwise.
A Transform attribute does not have to be set in the same element as a Locator element. You can specify a Locator element on a parent element in order to select elements whose child elements you want to work with. You can then specify a Transform attribute in a child element in order to apply a change to the children.
If you specify a Locator attribute but you do not specify a Transform attribute in the same element or in a child element, no changes are made.
The following example shows how to use the Locator attribute to select location elements for the specified path. However, only elements that are children of the selected location elements are transformed.
A Transform attribute on a parent element can affect child elements even if no Transform is specified for them. For example, if you put the attribute xdt:Transform="Replace" in the system.web element, all the elements that are children of the system.web element are replaced with the content from the transform file.
|
No comments:
Post a Comment