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 Summary
Nested 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 Summary
FieldsModifier 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.AxisSpecifierprotected Map<String, TPathCache.ExprClassified> static final TPath.Steptpath "precedingSiblings::node()"static final TPath.Stepstatic final TPath.Nodestatic final TPath.Root -
Constructor Summary
Constructors -
Method Summary
Modifier 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) 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)
-
Field Details
-
attributeValueTemplates_to_canonical
-
attributeValue_to_canonical
-
canonical_to_parsed
-
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_LOWERS
tpath "(preceding::node()|nacestor-or-self::node())" -
PRECEDING_SIBS
tpath "precedingSiblings::node()"
-
-
Constructor Details
-
TPathCache
public 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.) -
checkStep
-
checkFunction
Means to check the function which can appear as first (umod: deepest) expression on a path expression ("id(x)/a/b/") -
checkTop
-
splitTop
-
checkPattern
public 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.
-