Во-первых, элемент, содержащий неразрывный пробел, не является пустым.И неразрывный пробел не «конвертируется в пробел» в выводе, если только вы не указали таблице стилей преобразовать его.
Теперь, чтобы удалить элемент <p> </p>
, вы можете добавить пустой шаблонсоответствующий ему:
<xsl:template match="p[.=' ']"/>
Если вы хотите, вы можете создать более общий шаблон, который удаляет все пустые и только пробельные элементы p
:
<xsl:template match="p[not(normalize-space(translate(., ' ', ' ')))]"/>