Исходный номер хранится в настройках сайта (пример для UMI.CMS).
Для начала создать шаблон, который будет удалять все лишнее:
<xsl:template name="strip-phone">
<xsl:param name="phone" />
<xsl:variable name="vnumsOnly" select="translate($phone, translate($phone,'+0123456789',''), '')"/>
<xsl:value-of select="substring($vnumsOnly, (substring($vnumsOnly,1,1)='1') +1)"/>
</xsl:template>
Здесь в параметр phone будет передаваться обрабатываемый номер.
Функция translate сперва удалит из значения узла все символы, кроме +0123456789, а затем то, осталось, удалит из исходного значения узла. В итоге получаем номер, в котором содержатся только перечисленные символы +0123456789.
Вызов в шаблоне:
<a>
<xsl:attribute name="href">
<xsl:text>tel:</xsl:text>
<xsl:call-template name="strip-phone">
<xsl:with-param name="phone" select="$conf//property[@name='sales_phone']/value" />
</xsl:call-template>
</xsl:attribute>
<xsl:value-of select="$conf//property[@name='sales_phone']/value" />
</a>
Примечание:
Здесь $conf - это узел настроек сайта (для UMI.CMS)
<xsl:variable name="confId" select="document('udata://umiSettings/getIdByCustomId/spf-ru/')/udata"/>
<xsl:variable name="conf" select="document(concat('uobject://', $confId))/udata"/>