Если вы хотите сопоставить элемент без текстового значения, вы можете просто сделать это
<xsl:template match="entry[not(text())]" >
Затем вы можете добавить свой код для копирования элемента, но в то же время добавить значение по умолчанию.
Сочетание этого с преобразованием идентичности дает следующий XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="entry[not(text())]">
<entry>
<xsl:copy-of select="@*"/>
<xsl:text>Default Value</xsl:text>
</entry>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
При применении к следующему XML:
<entries>
<entry colsep="0" rowsep="0" />
<entry colsep="0" rowsep="0">Acid suppressant</entry>
</entries>
Ниже выводится
<entries>
<entry colsep="0" rowsep="0">Default Value</entry>
<entry colsep="0" rowsep="0">Acid suppressant</entry>
</entries>