Я думаю, что пуш-программирование в порядке. Это может работать для вас, пока структура вашего XML является статической, даже для пустых значений.
<xsl:template match="node()">
<xsl:apply-templates select="node()"/>
</xsl:template>
<xsl:template match="Benefit_1_Detail_Record">
<xsl:apply-templates select="node()"/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="Emplyee_Person_Number">
<xsl:value-of select="substring(concat(.,' '), 1, 10)"/>
</xsl:template>
<xsl:template match="Employee_First_Name">
<xsl:value-of select="substring(concat(., ' '), 1, 15)"/>
</xsl:template>
<xsl:template match="Employee_Last_Name">
<xsl:value-of select="substring(concat(., ' '), 1, 15)"/>
</xsl:template>
<xsl:template match="Parent_Employee_Number">
<xsl:value-of select="substring(concat(., ' '), 1, 10)"/>
</xsl:template>
<xsl:template match="Dependent_First_Name">
<xsl:value-of select="substring(concat(., ' '), 1, 15)"/>
</xsl:template>
<xsl:template match="Dependent_Last_Name">
<xsl:value-of select="substring(concat(., ' '), 1, 15)"/>
</xsl:template>
<xsl:template match="Dependent_Plan_Name">
<xsl:value-of select="substring(concat(., ' '), 1, 15)"/>
</xsl:template>