我有一个具有这种结构的XML文件:
<entry id="1">
<para>first paragraph</para>
<para>second paragraph</para>
</entry>
<entry id="2">
<para></para>
</entry>
Run Code Online (Sandbox Code Playgroud)
如果我的XSL发现一个条目的第一个元素的文本节点是空的(例子中的条目id ="2"),我需要做一些事情.我试过这个:
<xsl:when test="(entry/para[1]/text()='')">
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.
用于读取元素属性的类似代码片段可以正常工作:
<xsl:when test="entry[1]/para[@stylename = 'Table Heading']">
Run Code Online (Sandbox Code Playgroud)
所以我对text()=''选择做错了.搜索建议我应该使用[not(text())]但我无法弄清楚如何在我的代码中集成它.
text()=''需要一个文本节点,但在这种情况下<para></para>,没有要匹配的文本节点.
所以,我建议像
entry/para[1][.='']
Run Code Online (Sandbox Code Playgroud)
要么
entry/para[1][not(text())]
Run Code Online (Sandbox Code Playgroud)