org.jaxen.function
Class LangFunction

java.lang.Object
  extended byorg.jaxen.function.LangFunction
All Implemented Interfaces:
Function

public class LangFunction
extends java.lang.Object
implements Function

4.3 boolean lang(string)

The lang function returns true or false depending on whether the language of the context node as specified by xml:lang attributes is the same as or is a sublanguage of the language specified by the argument string. The language of the context node is determined by the value of the xml:lang attribute on the context node, or, if the context node has no xml:lang attribute, by the value of the xml:lang attribute on the nearest ancestor of the context node that has an xml:lang attribute. If there is no such attribute, then lang returns false. If there is such an attribute, then lang returns true if the attribute value is equal to the argument ignoring case, or if there is some suffix starting with - such that the attribute value is equal to the argument ignoring that suffix of the attribute value and ignoring case. For example, lang("en") would return true if the context node is any of these five elements:

  <para xml:lang="en"/>
  <div xml:lang="en"><para/></div>
  <para xml:lang="EN"/>
  <para xml:lang="en-us"/>
 

Author:
Attila Szegedi (szegedia @ freemail.hu)
See Also:
XPath Specification

Field Summary
private static java.lang.String LANG_LOCALNAME
           
private static java.lang.String XMLNS_URI
           
 
Constructor Summary
LangFunction()
          Create a new LangFunction object.
 
Method Summary
 java.lang.Object call(Context context, java.util.List args)
           Determines whether or not the context node is written in the language specified by the XPath string-value of args.get(0), as determined by the nearest xml:lang attribute in scope.
private static java.lang.Boolean evaluate(java.util.List contextNodes, java.lang.Object lang, Navigator nav)
           
private static boolean evaluate(java.lang.Object node, java.lang.String lang, Navigator nav)
           
private static boolean isSublang(java.lang.String sublang, java.lang.String lang)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LANG_LOCALNAME

private static final java.lang.String LANG_LOCALNAME
See Also:
Constant Field Values

XMLNS_URI

private static final java.lang.String XMLNS_URI
See Also:
Constant Field Values
Constructor Detail

LangFunction

public LangFunction()
Create a new LangFunction object.

Method Detail

call

public java.lang.Object call(Context context,
                             java.util.List args)
                      throws FunctionCallException

Determines whether or not the context node is written in the language specified by the XPath string-value of args.get(0), as determined by the nearest xml:lang attribute in scope.

Specified by:
call in interface Function
Parameters:
context - the context in which to evaluate the lang() function
args - the arguments to the lang function
Returns:
a Boolean indicating whether the context node is written in the specified language
Throws:
FunctionCallException - if args does not have length one

evaluate

private static java.lang.Boolean evaluate(java.util.List contextNodes,
                                          java.lang.Object lang,
                                          Navigator nav)
                                   throws UnsupportedAxisException
Throws:
UnsupportedAxisException

evaluate

private static boolean evaluate(java.lang.Object node,
                                java.lang.String lang,
                                Navigator nav)
                         throws UnsupportedAxisException
Throws:
UnsupportedAxisException

isSublang

private static boolean isSublang(java.lang.String sublang,
                                 java.lang.String lang)