##
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the  "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
##
#
# $Id$
#
# This property file is used by com.lotus.xsl.server.DefaultApplyXSL.
#
# Each line below specifies a mapping rule between a value contained in the HTTP request's user-Agent 
# field and a value to be scanned for in XSL stylesheet(s) associated with the XML data. This mapping 
# enables relationships to be defined between client capabilities and stylesheets capable of acting 
# on these capabilities.
#
# The rules defined below are order-significant.  In other words, if the first rule is unsuccessful,
# the second rule will be tried, etc.  The media value "unknown" will be used when no rules are
# satisfied.
#
# Example: 
#
# Mapping rules of...
#
#   MSIE=explorer
#   MSPIE=pocketexplorer
#
# ...and XML data that contains XSL stylesheet associations of...
#
# <?xml-stylesheet                 media="explorer"       href="alldata.xsl"  type="text/xsl"?>
# <?xml-stylesheet alternate="yes" media="pocketexplorer" href="somedata.xsl" type="text/xsl"?>
#
# ...and an HTTP request that contains a user-Agent value of...
#    
#   foo MSPIE bar
#
# ...will apply the XSL stylesheet somedata.xsl.
#
MSIE=explorer
MSPIE=pocketexplorer
HandHTTP=handweb
Mozilla=netscape
Lynx=lynx
Opera=opera
Java=java
AvantGo=avantgo
Nokia=nokia
UP.Browser=up
DoCoMo=imode
