Самый простой вариант - всегда ставить кавычки вокруг поля адреса.
<xsl:template match="/">
<xsl:text>Name, Age, Sex, Address
</xsl:text>
<xsl:for-each select="//EmpDetails">
<xsl:value-of select="concat(Name,',',Age,',',Sex,',"',Address/AdderessLine1,'","',JobLocation,'"
')"/>
</xsl:for-each>
</xsl:template>
Если вы хотите сделать это только в том случае, если поле содержит запятую, вы можете использовать шаблон для добавления логики впроверить запятые
Попробуйте это XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" >
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
<xsl:template match="/">
<xsl:text>Name, Age, Sex, Address, JobLocation
</xsl:text>
<xsl:for-each select="//EmpDetails">
<xsl:value-of select="concat(Name,',',Age,',',Sex)"/>
<xsl:text>,</xsl:text>
<xsl:apply-templates select="Address/AdderessLine1" />
<xsl:text>,</xsl:text>
<xsl:apply-templates select="JobLocation" />
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
<xsl:template match="*[contains(., ',')]">
<xsl:text>"</xsl:text>
<xsl:value-of select="." />
<xsl:text>"</xsl:text>
</xsl:template>
</xsl:stylesheet>
В случае, когда в поле нет запятой, применяются встроенные шаблоны XSLT, которые просто выводят текстовое значение элементанезависимо.
Обратите внимание, что в вашем XML есть имя элемента AdderessLine1
.Это, вероятно, должно быть AddressLine1