XML Transform Locator与缺少的属性匹配

时间:2015-04-06 20:27:32

标签: asp.net xml web.config-transform xdt

说我有以下XML:

<logger>
    <level value="ALL" />
    <appender-ref ref="AsyncAppender" />
</logger>
<logger name="PerformanceMetricsLog">
    <level value="OFF" />
</logger>

我需要对此进行XML转换。

如何匹配xdt:Locator或第一个匹配?在第二个?

我尝试了xdt:Locator="Match(name)",我收到一条错误消息,指出没有“name”属性。 (我原本希望如果属性不在那里,它会优雅地为比赛返回假。)

1 个答案:

答案 0 :(得分:1)

XDT&#39; s Match采用以逗号分隔的属性名称列表,因此xdt:Locator="Match(name)"期望有一个名称属性,&#34; name&#34;。

您可能正在考虑XPath,其中缺少属性只会返回false,您可以通过not(@name)测试其缺席。

XDT有一个XPath函数,它需要一个实际的XPath,所以你可以这样写:

xdt:Locator="XPath(//logger[not(@name)])"

选择无名logger元素。

注意:您编写的XML格式不正确。确保在实际的XML中有一个根元素。