XML 用于匹配缺失属性的文档转换 (XDT) 定位器

XML Document Transform (XDT) locator for matching missing attribute

假设我有以下 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" 属性。 (我曾希望如果该属性不存在,它会优雅地 return false 匹配。)

XDT 的 Match 采用逗号分隔的属性名称列表,因此 xdt:Locator="Match(name)" 期望有一个名称为 "name".

的属性

您可能会想到 XPath,其中缺少属性只会 return false,并且您可以通过 not(@name).

测试它是否缺失

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

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

到select无名logger元素。

注意:您写的 XML 格式不正确。确保在您的实际 XML.

中有一个根元素