FileDocCategorySizeDatePackage
FuncExtElementAvailable.javaAPI DocJava SE 5 API2998Fri Aug 26 14:56:08 BST 2005com.sun.org.apache.xpath.internal.functions

FuncExtElementAvailable

public class FuncExtElementAvailable extends FunctionOneArg
Execute the ExtElementAvailable() function.
xsl.usage
advanced

Fields Summary
Constructors Summary
Methods Summary
public com.sun.org.apache.xpath.internal.objects.XObjectexecute(com.sun.org.apache.xpath.internal.XPathContext xctxt)
Execute the function. The function must return a valid object.

param
xctxt The current execution context.
return
A valid XObject.
throws
javax.xml.transform.TransformerException


    String prefix;
    String namespace;
    String methName;

    String fullName = m_arg0.execute(xctxt).str();
    int indexOfNSSep = fullName.indexOf(':");

    if (indexOfNSSep < 0)
    {
      prefix = "";
      namespace = Constants.S_XSLNAMESPACEURL;
      methName = fullName;
    }
    else
    {
      prefix = fullName.substring(0, indexOfNSSep);
      namespace = xctxt.getNamespaceContext().getNamespaceForPrefix(prefix);
      if (null == namespace)
        return XBoolean.S_FALSE;
      methName= fullName.substring(indexOfNSSep + 1);
    }

    if (namespace.equals(Constants.S_XSLNAMESPACEURL)
    ||  namespace.equals(Constants.S_BUILTIN_EXTENSIONS_URL))
    {
          // <<<<<<<   TIGER SPECIFIC CHANGE >>>>>>>>>
          // As we are not supporting Xalan interpretive we are taking away the functionality
          // dependent on XSLT interpretive Transformer. Only way supported is to use XSLTC
          // and the execution path needed for supporting standard XPath API defined by
          // JAXP 1.3 . This method is overridden in XPath implementation to support
          // standard XPath functionality with xpath package of Xalan

        return XBoolean.S_FALSE;
    }
    else
    {
      //dml
      ExtensionsProvider extProvider = (ExtensionsProvider)xctxt.getOwnerObject();
      return extProvider.elementAvailable(namespace, methName)
             ? XBoolean.S_TRUE : XBoolean.S_FALSE;
    }