Я копирую нужные мне узлы из исходного XML
Я не копирую пустые узлы или узлы, содержащие разрыв (поэтому я проверяю пространство нормализации)
Сначала , я предлагаю вам использовать преобразование идентичности с переопределениями. Например, приведенный ниже код скопирует все элементы, за исключением тех, которые «содержат пустые (после нормализации пробелов) строковые значения и не содержат дочерних элементов или атрибутов».
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[not(normalize-space()) and not(*) and not(@*)]"/>
</xsl:stylesheet>
Второй , вы можете попытаться удалить неиспользуемые пробелы во время компиляции, используя:
<xsl:strip-space elements="*"/>
Таким образом, ваш документ будет храниться в памяти без незначительных пробелов и, следовательно, будет более кратким.