XPath过滤器不是空的子元素

Mar*_*que 6 xpath

我需要过滤一个XPath表达式,只抓取某个属性为非空.

我试过这个:

<xsl:template match="DocumentElement/QueryResults[string(@FileName)]">
Run Code Online (Sandbox Code Playgroud)

还有这个:

<xsl:template match="DocumentElement/QueryResults[string-length(@FileName)>0]">
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我需要从下面的XPath表达式返回相同类型的数据...

<xsl:template match="DocumentElement/QueryResults">
Run Code Online (Sandbox Code Playgroud)

...但已过滤以避免具有空属性@FileName的项目.

谢谢!

Ode*_*ded 8

由于FileName是子元素而不是属性,因此您需要按原样访问它,而不要@在节点名称前使用属性限定符.

尝试:

<xsl:template match="DocumentElement/QueryResults[FileName]">
Run Code Online (Sandbox Code Playgroud)

这将选择DocumentElement/QueryResults具有FileName子元素的元素.

但是,如果你总是有一个FileName子元素(有时是空的)并且你想选择非空元素,那么试试这个:

<xsl:template match="DocumentElement/QueryResults[string-length(FileName) &gt; 0]">
Run Code Online (Sandbox Code Playgroud)