<!--
Connection Manager

Copyright (C) 2011  The Chromium OS Authors. All rights reserved.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-->

<!--
Generate an easy-to-parse table of APN's from
the mobile providers database
-->

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="country"/>

<xsl:template match="provider">
<xsl:if test="count(gsm[*])!=0">
provider:<xsl:value-of select="count(name)"/>,<xsl:value-of select="count(gsm/apn)"/>,<xsl:choose>
  <xsl:when test="@primary='true'">1</xsl:when><xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates select="name"/><xsl:apply-templates select="gsm"/>
</xsl:if>
</xsl:template>

<xsl:template match="name">
name:<xsl:value-of select="@xml:lang"/>,<xsl:value-of select="."/>
</xsl:template>

<xsl:template match="gsm">
networks:<xsl:apply-templates select="network-id"/>
<xsl:apply-templates select="apn"/></xsl:template>

<xsl:template match="network-id"><xsl:value-of select="@mcc"/><xsl:value-of select="@mnc"/><xsl:if test="position()!=last()">,</xsl:if></xsl:template>

<xsl:template match="apn">
apn:<xsl:value-of select="count(name)"/>,<xsl:value-of select="@value"/>,<xsl:value-of select="username"/>,<xsl:value-of select="password"/>
<xsl:apply-templates select="name"/>
</xsl:template>

<xsl:output method="text" indent="no" encoding="utf-8"
  omit-xml-declaration="yes"/>

<xsl:template match="/serviceproviders"># Generated file --  Do not edit
#
# This file starts with the line
#
#    serviceproviders:<xsl:value-of select="@format"/>
#
# The rest of the file is divided into country blocks, each of which
# is of the form
#
#    country:xx
#    &lt;provider block 1&gt;
#    &lt;provider block 2&gt;
#     . . .
#    &lt;provider block N&gt;
#
# where xx is the two character ISO country code.
#
# Each provider block is of the form
#
#   provider:&lt;# of names&gt;,&lt;# of APNs&gt;,&lt;primary&gt;
#   name:&lt;lang&gt;,&lt;name 1&gt;
#   name:&lt;lang&gt;,&lt;name 2&gt;
#   . . .
#   networks:NNNNNN,NNNNNN,...
#   apn:&lt;# of descriptive names&gt;,&lt;value&gt;,&lt;username&gt;,&lt;password&gt;
#   name:&lt;lang&gt;,&lt;desciptive name 1&gt;
#   name:&lt;lang&gt;,&lt;desciptive name 2&gt;
#   . . .
#   apn:&lt;# of descriptive names&gt;,&lt;value&gt;,&lt;username&gt;,&lt;password&gt;
#   . . .
#
# where each NNNNNN is the five or six digit string constructed by
# concatenating the three-digit MCC (Mobile Country Code) and two-
# or three-digit MNC (Mobile Network Code), and where the &lt;username&gt;
# and &lt;password&gt; fields may be empty. Each 'name' entry for both
# providers and APNs, has an optional language attribute that can
# be used to choose a localized name to display to the user, based
# on the current locale. The language tags are in the format defined
# by RFC 5646.
#
serviceproviders:<xsl:value-of select="@format"/> 
<xsl:text>
</xsl:text>
<xsl:for-each select="./country">country:<xsl:value-of select="@code"/>
<xsl:apply-templates/><xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

<!-- vim:set sw=2 sts=2 et: -->
