Class TPathCache
  The syntax constraints on attribute values are different than in 
  pure XML: Whenever an embedded xpath expressions is indicated by an escape 
  character,  the further contents must be parsable as such.
  So "a{" is a valid value for any CDATA attribute in XML, 
  but not in xslt result elements.
  
  The involved compiler for AVTs is AttributeValueTemplate. 
  It always delivers a TPath.Expr;
  if there are no opening brackets in the source, this will be one single 
  constant literal expression.
  
  This value is turned into a an TPathCache.ExprClassified, which contains 
  the parsed  code and analysis results (or "null" in the code field iff 
  there had been errors.)
  
  Look-up and memorization go in two steps: 
  (1) first look for verbatim cached source.
  (2) Then parse and look up for canonical source text.
  If look-up fails, perform analyses and store accordingly.
  
 +  FIXME: List of all variable names collected !?!?
  
  Additionally, the "sensitivity" on the context is calculated: 
  None -> needs evaluation only once, is constant
  Session -> depends only on global variables, needs evaluation 
  only once per application
  Multi -> depends on context (=input focus, local vars), needs always 
  re-evaluation
  
  FIXME variable access is context depended. 
  
  FIXME But if ALL appearing variable NAMES appear only on global level, 
  this raises sensivity only to "session", not to "multi".
  
  FIXME the "union of relative and absolute" is not yet supported, (????)
    code has to be unified with [mt]/tpath/Util.isAbsolute() !!!!
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionstatic classHolds the results of parsing and analysis.static classStatistic data on the sub-expressions of the top-level TPath.Union expression.protected classstatic enumThis value is ONLY related to the current-node-(list)-context, not to referred variables nor functions!
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final TPath.Uniontpath "(preceding::node()|nacestor-or-self::node())"static final TPath.Stepstatic final TPath.AxisSpecifierstatic final TPath.AxisSpecifierstatic final TPath.AxisSpecifierstatic final TPath.AxisSpecifierstatic final TPath.AxisSpecifier(package private) static final Map<TPath.Expr, TPath.Expr> protected Map<String, TPathCache.ExprClassified> (package private) TPathCache.PatternPart(package private) boolean(package private) Location<XMLDocumentIdentifier> (package private) MessageReceiver<SimpleMessage<XMLDocumentIdentifier>> (package private) booleanstatic final TPath.Steptpath "precedingSiblings::node()"(package private) final TPathCache.PredicateCheckerstatic final TPath.Step(package private) String(package private) TPathCache.ExprClassifiedstatic final TPath.Nodestatic final TPath.Root
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionprotected voidMeans to check the function which can appear as first (umod: deepest) expression on a path expression ("id(x)/a/b/")booleancheckPattern(MessageReceiver<SimpleMessage<XMLDocumentIdentifier>> msg_EXT, @Opt Location<XMLDocumentIdentifier> loc, TPathCache.ExprClassified expr, boolean inTemplateOrKeyMatch, String role) Returns whether the ExprClassified is a pattern, and updatesTPathCache.ExprClassified.patternPartsaccordingly.protected voidcheckStep(TPath.Step step, boolean isTop) protected voidcheckTop(TPath.Expr expr) (package private) static TPath.ExprcopyLocation(TPath.Expr newer, TPath.Expr old) (package private) void(package private) static final TPath.ExprAny expression of un-rooted type "a/b/..."
 = TPath.Step()->base->Step->base->null
 can be interpreted existentially quantified by prepending with
 "/descendant-or-self::node()/a/b/.."
 = TPath.Step()->base->Step->base-> (descendant-or-self) Root
 This is realized by a copy, which is cached and can be used as key for the cached evaluation result.parse(MessageReceiver<SimpleMessage<XMLDocumentIdentifier>> msg_EXT, Location<XMLDocumentIdentifier> loc, NamespaceName attribName, @Opt String data, boolean isTemplate) Parse expression source and store result to caches.protected voidsplitTop(TPath.Expr expr) (package private) static final TPath.SteptopStep(TPath.Step step) (package private) static TPath.ExprwithRoot(TPath.Expr expr, TPath.Expr root) Return a clone which has the given root instead of a base of null; distribute this over a possible top-level "union" operation.
- 
Field Details- 
attributeValueTemplates_to_canonical
- 
attributeValue_to_canonical
- 
canonical_to_parsed
- 
tpathParser
- 
msg
- 
loc
- 
inTemplateOrKeyMatchboolean inTemplateOrKeyMatch
- 
roleString role
- 
patternOkayboolean patternOkay
- 
toCheckTPathCache.ExprClassified toCheck
- 
curPartTPathCache.PatternPart curPart
- 
predicateChecker
- 
TPATH_NODE
- 
TPATH_ROOT
- 
AXIS_ANC_OR_SELF
- 
AXIS_DESC
- 
AXIS_DESC_OR_SELF
- 
AXIS_PRECEDING
- 
AXIS_PRECEDING_SIBS
- 
RELATIVE_TO_PRECEDING
- 
ANYWHERE_IN_DOM
- 
ALL_LOWERStpath "(preceding::node()|nacestor-or-self::node())"
- 
PRECEDING_SIBStpath "precedingSiblings::node()"
- 
cache_all_quantified
 
- 
- 
Constructor Details- 
TPathCachepublic TPathCache()
 
- 
- 
Method Details- 
parse@Opt public @Opt TPathCache.ExprClassified parse(MessageReceiver<SimpleMessage<XMLDocumentIdentifier>> msg_EXT, Location<XMLDocumentIdentifier> loc, NamespaceName attribName, @Opt @Opt String data, boolean isTemplate) Parse expression source and store result to caches. Return null in case of parsing errors. Otherwise classify expression for sensitivity. Return cached value, iff it exists. FIXME dann stimmt rel2abs nicht !?!?!? (Error msg must contain an attribute name, since location has only element granularity.)
- 
error
- 
checkStep
- 
checkFunctionMeans to check the function which can appear as first (umod: deepest) expression on a path expression ("id(x)/a/b/")
- 
checkTop
- 
splitTop
- 
checkPatternpublic boolean checkPattern(MessageReceiver<SimpleMessage<XMLDocumentIdentifier>> msg_EXT, @Opt @Opt Location<XMLDocumentIdentifier> loc, TPathCache.ExprClassified expr, boolean inTemplateOrKeyMatch, String role) Returns whether the ExprClassified is a pattern, and updatesTPathCache.ExprClassified.patternPartsaccordingly. Generates errors if ExprClassified is not correct as a pattern.
- 
copyLocation
- 
withRootReturn a clone which has the given root instead of a base of null; distribute this over a possible top-level "union" operation.
- 
topStep
- 
make_all_quantifiedAny expression of un-rooted type "a/b/..."
 = TPath.Step()->base->Step->base->null
 can be interpreted existentially quantified by prepending with
 "/descendant-or-self::node()/a/b/.."
 = TPath.Step()->base->Step->base-> (descendant-or-self) Root
 This is realized by a copy, which is cached and can be used as key for the cached evaluation result.- Parameters:
- expr- an un-rooted expression serving as pattern-part, i.e. not a Union.
 
 
-