我正在摆脱web.config配置批处理文件(Hanselman's),并希望在vs2010中使用配置转换功能。但是,我在解决转换xml元素时遇到了一些麻烦(而不是元素上的属性)。
这是我的web.config:
的摘录<Federation type="..." xmlns="...">
<SigningCertificate .../>
<AllowedAudienceUris>
<Audience>https://audience.url.com</Audience>
</AllowedAudienceUris>
</Federation>
我想通过根据构建配置插入不同的url来转换元素 - 可以这样做吗?
提前致谢!
/碧玉
答案 0 :(得分:2)
如果AllowedAudienceUris和Audience元素只出现一次,省略xdt:Locator
也没关系:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<Federation>
<AllowedAudienceUris xdt:Transform="Replace">
<Audience>https://example.com</Audience>
</AllowedAudienceUris>
</Federation>
</configuration>
答案 1 :(得分:1)
您应该可以使用xdt:Locator
和xdt:Transform
属性执行此操作。
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<Federation>
<AllowedAudienceUris
xdt:Transform="Replace"
xdt:Locator="Condition(//Audience)">
<Audience>https://example.com</Audience>
</AllowedAudienceUris>
</Federation>
</configuration>
答案 2 :(得分:-1)
一种方法如下:
<!-- Copy all nodes -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<!-- Operate just on the AllowedAudienceUris (copy it), setting the Audience element -->
<xsl:template match="/Federation/AllowedAudienceUris">
<xsl:copy>
<Audience>https://hello.com</Audience>
</xsl:copy>
</xsl:template>