2011-03-02 14 views
5

Me estoy deshaciendo del archivo por lotes de configuración web.config (Hanselman's) y quiero usar la función de transformación de configuración en vs2010. Sin embargo, me está resultando difícil descifrar para transformar un elemento xml (a diferencia de un atributo en un elemento).web.config transform elemento xml

Este es un fragmento de mi web.config:

<Federation type="..." xmlns="..."> 
     <SigningCertificate .../> 
     <AllowedAudienceUris> 
       <Audience>https://audience.url.com</Audience> 
     </AllowedAudienceUris> 
</Federation> 

Quiero transformar el elemento mediante la inserción de una URL diferente en función de la configuración de generación - se puede hacer esto?

¡Gracias de antemano!

/Jasper

Respuesta

-1

Un enfoque sería el siguiente:

<!-- 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> 
+0

que lo han probado, sin embargo, no funcionó. – jaspernygaard

+0

@jaspernygaard La solución es asumir que el elemento raíz es/Federación. Tendría que adaptarlo a lo que es la verdadera estructura xml. Siempre puede publicar una imagen más completa del problema. –

+2

@jaspernygaard No entiendo ... la pregunta es acerca de Web Config Transform, que está basado en XDT, no en XSLT. El fragmento de código proporcionado en esta respuesta es claramente XSLT. ¿Cómo es esta la respuesta aceptada? –

1

Usted debe ser capaz de hacer esto utilizando las xdt:Locator y xdt:Transform atributos.

<?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> 
+0

Parece que esto debería funcionar, pero no, por lo que puedo decir. –

2

Si el AllowedAudienceUris y los elementos de la audiencia se producen sólo una vez, omitiendo el xdt:Locator es también bien:

<?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> 
Cuestiones relacionadas