Mit foreach an der richtigen Stelle und die Elemente natürlich angepasst

Das Problem seh ich aber eher in der Identifizierbarkeit.
Erzeugt werden kann ja nur das <telephone/> Element, welches eine wählbare Nummer enthalten soll.
...und ein Präfix, wie "Arbeit" ist das eben nicht.
@hermann.a: Also, ohne Präfixe vorzustellen, kannste die mal probieren...
fb2cisco.xsl
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:processing-instruction name="xml-stylesheet">
<xsl:text>type="text/xsl" href="/sippd2html.xsl"</xsl:text>
</xsl:processing-instruction>
<CiscoIPPhoneDirectory>
<Title><xsl:value-of select="/phonebooks/phonebook/@name"/></Title>
<Prompt>Kontakt wählen</Prompt>
<xsl:for-each select="/phonebooks/phonebook/contact">
<DirectoryEntry>
<Name><xsl:value-of select="person/realName" /></Name>
<xsl:for-each select="telephony/number">
<xsl:choose>
<xsl:when test="@quickdial<10">
<xsl:element name="Telephone">**70<xsl:value-of select="@quickdial"/></xsl:element>
</xsl:when>
<xsl:when test="@quickdial>9">
<xsl:element name="Telephone">**7<xsl:value-of select="@quickdial"/></xsl:element>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="@vanity!=''">
<xsl:element name="Telephone">**8<xsl:value-of select="@vanity"/></xsl:element>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="@type='home'"><xsl:element name="Telephone"><xsl:value-of select="."/></xsl:element></xsl:when>
<xsl:when test="@type='intern'"><xsl:element name="Telephone"><xsl:value-of select="."/></xsl:element></xsl:when>
<xsl:when test="@type=''"><xsl:element name="Telephone"><xsl:value-of select="."/></xsl:element></xsl:when>
<xsl:when test="@type='memo'"><xsl:element name="Telephone"><xsl:value-of select="."/></xsl:element></xsl:when>
<xsl:when test="@type='work'"><xsl:element name="Telephone"><xsl:value-of select="."/></xsl:element></xsl:when>
<xsl:when test="@type='fax_work'"><xsl:element name="Telephone"><xsl:value-of select="."/></xsl:element></xsl:when>
<xsl:when test="@type='mobile'"><xsl:element name="Telephone"><xsl:value-of select="."/></xsl:element></xsl:when>
<xsl:otherwise><xsl:element name="Telephone"><xsl:value-of select="."/></xsl:element></xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</DirectoryEntry>
</xsl:for-each>
</CiscoIPPhoneDirectory>
</xsl:template>
</xsl:stylesheet>
Das sieht dann so aus...

( Nicht vom "Snom" irritieren lassen, hab keine Ciscos )
Die wird nochmal nach HTML mittels XSLT-Transformation...
sippd2html.xsl
HTML:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/SnomIPPhoneDirectory">
<xsl:element name="html">
<xsl:element name="head">
<xsl:element name="title">
<xsl:value-of select="normalize-space(/SnomIPPhoneDirectory/Title)" />
</xsl:element>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="theme-color" content="Silver"/>
<xsl:element name="meta">
<xsl:attribute name="content">
<xsl:text>application/xhtml+xml; charset=UTF-8</xsl:text>
</xsl:attribute>
<xsl:attribute name="http-equiv">
<xsl:text>content-type</xsl:text>
</xsl:attribute>
</xsl:element>
<xsl:element name="meta">
<xsl:attribute name="content">
<xsl:value-of select="number(/SnomIPPhoneDirectory/Fetch/@mil div 1000)" />
<xsl:text>; URL=</xsl:text>
<xsl:value-of select="normalize-space(/SnomIPPhoneDirectory/Fetch)" />
</xsl:attribute>
<xsl:attribute name="http-equiv">
<xsl:text>refresh</xsl:text>
</xsl:attribute>
</xsl:element>
<xsl:element name="link">
<xsl:attribute name="rel">
<xsl:text>stylesheet</xsl:text>
</xsl:attribute>
<xsl:attribute name="media">
<xsl:text>screen</xsl:text>
</xsl:attribute>
<xsl:attribute name="type">
<xsl:text>text/css</xsl:text>
</xsl:attribute>
<xsl:attribute name="href">
<xsl:text>xml.css</xsl:text>
</xsl:attribute>
</xsl:element>
<xsl:element name="link">
<xsl:attribute name="rel"><xsl:text>shortcut icon</xsl:text></xsl:attribute>
<xsl:attribute name="type"><xsl:text>image/x-ico</xsl:text></xsl:attribute>
<xsl:attribute name="href"><xsl:text>/favicon.ico</xsl:text></xsl:attribute>
</xsl:element>
<xsl:element name="style">
<xsl:attribute name="type"><xsl:text>text/css</xsl:text></xsl:attribute>
*{margin:0px 0px 0px 0px;
padding:0px 0px 0px 0px;}
table,th,td{margin:1px 1px 1px 1px;
border:1px outset black;
padding:1px 1px 1px 1px;
border-collapse:collapse;}
th,td{white-space:nowrap;}
table{width:auto;}</xsl:element>
</xsl:element>
<xsl:element name="body">
<xsl:element name="center">
<xsl:element name="a">
<xsl:attribute name="href"><xsl:text>http://osmc</xsl:text></xsl:attribute>
<xsl:value-of select="/SnomIPPhoneDirectory/Prompt" />
</xsl:element>
<table>
<xsl:element name="caption"><xsl:value-of select="normalize-space(/SnomIPPhoneDirectory/Title)" />
</xsl:element>
<thead><tr><th>Name</th><th>Telephone</th></tr></thead>
<tbody>
<xsl:for-each select="/SnomIPPhoneDirectory/DirectoryEntry">
<tr><td><xsl:value-of select="./Name"/></td><td>
<xsl:for-each select="./Telephone">
<xsl:element name="div">
<xsl:element name="a"><xsl:attribute name="href">tel:<xsl:value-of select="."/></xsl:attribute><xsl:value-of select="."/></xsl:element>
</xsl:element>
</xsl:for-each>
</td></tr>
</xsl:for-each>
</tbody>
</table>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
<!--EOF-->
...die auch ein CSS-Stylesheet einbindet...
xml.css
Code:
body{background-color:Silver;color:Black;font-size:2em;}
a:any-link{
background-color:Black;
color:Silver;
font:bold 1.3em Georgia,Times,serif;
text-decoration:none;}
...

...umgewandelt.
Der Style im HTML Browser eines Smartfons sieht noch moderner aus (Theme-Color) und die URL
tel: kann auch genutzt werden...
