在给定的非常简单和标准的配置中:
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:env="urn:schemas-test-env">
<appSettings>
<add key="Name" value="Value" />
<add key="Name" value="Value" env:name="Dev" />
<add key="Name" value="Value" env:name="QA" />
</appSettings>
<!-- rest of the config -->
</configuration>
我想删除所有<add />
使用@env:name != $env
XSLT 的节点?我的主要问题是保持其余配置不变。
到目前为止我所拥有的:
<!-- populated by inline C# code -->
<xsl:variable name="env" select="code:GetEnvironment()" />
<!-- Leave as is -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<!-- Remove non-matching nodes -->
<xsl:template match="configuration/appSettings/add">
???
</xsl:template>
我还有一个存根:
<xsl:choose>
<xsl:when test="not(@env:name)">
<xsl:value-of select="'no env'" />
</xsl:when>
<xsl:when test="./@env:name = $env">
<xsl:value-of select="'Env eq var'" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'Env neq var'" />
</xsl:otherwise>
</xsl:choose>