Это связано с разделением пробелов в документе XSLT.В соответствии со спецификацией W3C (для XSLT 1.0, который используется в MSXML)
Текстовый узел сохраняется, если применимо любое из следующего:
имя элемента родителя текстового узла находится в наборе имен элементов, сохраняющих пробелы.
Текстовый узел содержит по крайней мере один непробельный символ.Как и в XML, символом пробела является # x20, # x9, #xD или # xA.
Элемент-предок текстового узла имеет атрибут xml: space со значением preserve и не имеет более близкого элемента-предкаимеет значение xml: space со значением по умолчанию.
Затем говорится: " Для таблиц стилей набор имен элементов, сохраняющих пробелы, состоит только из xsl: text. "
Итак, похоже, что MSXML не соответствует спецификации.
Однако, если вы добавите xml:space="preserve"
к рассматриваемому xsl:text
, вы можете обнаружить, что он работает в MSXML
<xsl:template match="/">
<xsl:text>1</xsl:text>
<xsl:text xml:space="preserve">
</xsl:text>
<xsl:text>2</xsl:text>
</xsl:template>