Если ваш шаблон соответствует Customer, вы перехватываете всю обработку этого тега.
Попробуйте изменить шаблон так, чтобы он соответствовал только NewCustomer, внеся соответствующие изменения в условия теста (test = ". = 'Y'").
Также обратите внимание, что вам придется создать тег NewCustomer в выходных данных, поскольку при сопоставлении его в пользовательском шаблоне он не обрабатывается преобразованием идентичности. Ты очень близко.
Вот обновленный шаблон:
<xsl:template match="Customer/NewCustomer">
<xsl:copy>
<xsl:choose>
<xsl:when test=". = 'Y'">
<xsl:text>true</xsl:text>
</xsl:when>
<xsl:when test=". = 'N'">
<xsl:text>false</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:copy>
</xsl:template>
Во-первых, он совпадает с NewCustomer как ребенок Клиента. Затем он использует xsl: copy, чтобы сделать копию узла (но не атрибуты или дочерние элементы). Затем он использует ваш xsl: выберите для преобразования значений N и Y в false и true соответственно.
Ключевая концепция заключается в том, что, когда шаблон соответствует элементу ввода, элемент ввода эффективно удаляется из вывода и заменяется содержимым соответствующего шаблона. В вашем случае, когда вы выбрали «Клиент», тег «Клиент» и все, что внутри него, было заменено содержимым шаблона, который просто генерировал «true» или «false».