Попытка чего-то дурацкого в очистке многословного XML, которая заключается в рекурсивном удалении всех пустых узлов.
Для этой цели я считаю узел «пустым», если он не имеет (а) дочерних узлов, (б) содержимого только для пробелов, (в) только «пустых» дочерних узлов. То есть я считаю следующее «пустым», потому что все листья являются пустыми / пустыми узлами:
<foo>
<bar>
<baz/>
</bar>
<quux> </quux>
</foo>
Я пытался использовать <xsl:if test="child::node()">
в своих шаблонах, но это не помогло. Вполне возможно, что ответ «иди по дереву, глупый», но похоже, что XSL должен уметь это делать?
Я бы ожидал
<foo>
<bar>
<baz/>
</bar>
<quux> </quux>
<quuux>Actual content</quuux>
</foo>
чтобы вернуться как
<foo>
<quuux>Actual content</quuux>
</foo>
с этим фильтром я имею в виду.