Непонятно, что вы намереваетесь получить в качестве выхода, и что вы ожидаете от xsl:strip-whitespace
в первую очередь. Но следует отметить, что он не удаляет всех пробелов, а только то, что считается незначительным в соответствии с «обычными» правилами. В частности, из спецификации XSLT 1.0:
Текстовый узел никогда не удаляется, если он не содержит только пробельные символы.
Так, например, это:
<foo>
<bar> </bar>
</foo>
будет сокращено до:
<foo><bar/></foo>
потому что у него было 3 текстовых узла только для пробелов (после <foo>
и до <bar>
, между <bar>
и </bar>
и после </bar>
и до </foo>
).
Обратите внимание, что, поскольку у вас есть <xsl:output indent="yes">
в вашей таблице стилей, она будет преобразована в:
<foo>
<bar/>
<foo>
на выходе.
С другой стороны, это:
<foo>
text1
<bar> text2 </bar>
text3
</foo>
Не будет удален вообще, поскольку все содержащиеся в нем текстовые узлы не являются чисто пробельными узлами.