public class ModeEE extends ModePE
| Modifier and Type | Class and Description |
|---|---|
static class |
ModeEE.RuleChainOptimizationData |
static interface |
ModeEE.RuleTypeAction |
SimpleMode.RuleGroupActionMode.RuleAction, Mode.RuleFilteratomicValueRuleChain, commentRuleChain, documentRuleChain, functionItemRuleChain, genericRuleChain, namedAttributeRuleChains, namedElementRuleChains, namespaceRuleChain, processingInstructionRuleChain, qNamedAttributeRuleChains, qNamedElementRuleChains, textRuleChain, unnamedAttributeRuleChain, unnamedElementRuleChainDEFAULT_MODE_NAME, modeName, mustBeTyped, mustBeUntyped, OMNI_MODE, UNNAMED_MODE_NAME| Constructor and Description |
|---|
ModeEE(StructuredQName modeName,
CompilerInfo compilerInfo) |
| Modifier and Type | Method and Description |
|---|---|
void |
computeStreamability()
Compute the streamability of all template rules
|
void |
explainTemplateRules(ExpressionPresenter out)
Explain all template rules in this mode by showing their
expression tree represented in XML.
|
void |
exportTemplateRules(ExpressionPresenter out)
Export all template rules in this mode in a form that can be re-imported.
|
protected void |
exportUseAccumulators(ExpressionPresenter presenter) |
RuleChain |
getNamedNodeChain(NodeInfo node,
XPathContext context)
Find the named node rule chain for a given node
|
RuleChain |
getUnnamedNodeChain(NodeInfo node)
Find the unnamed node rule chain for a given node
|
void |
invertStreamableTemplates()
For a streamable mode, invert all the templates to generate streamable code
|
static java.util.List<Rule> |
listRules(RuleChain chain)
Work with a rule chain as a list of rules
|
Rule |
makeRule(Pattern pattern,
RuleTarget action,
int precedence,
int minImportPrecedence,
double priority,
int sequence)
Generate a new rule - so it can be overridden to make more specialist rules
|
protected PreconditionMatcher |
makeRuleSearchState(RuleChain chain,
XPathContext context)
Generate a search state for processing a given node
|
void |
optimizeRuleChain(RuleChain chain,
int type) |
void |
optimizeRules() |
static java.util.List<Rule> |
orderRules(java.util.List<Rule> r1,
java.util.List<Rule> r2)
Combine two rule lists in rank order
|
static java.util.List<Rule> |
orderRules(RuleChain chain1,
RuleChain chain2)
Combine two rule chains into a rank-ordered combined list
|
void |
reportAmbiguity(Item item,
Rule r1,
Rule r2,
XPathContext c)
Report an ambiguity, that is, the situation where two rules of the same
precedence and priority match the same node
|
protected boolean |
ruleMatches(Rule r,
Item item,
XPathContextMajor context,
RuleSearchState ruleSearchState)
Does this rule match the given item? Can be overridden
|
protected ModeEE.RuleTypeAction |
setType(ModeEE.RuleTypeAction action,
ItemType type) |
static java.lang.String |
typeName(int type)
Find the name for a node type
|
getBuiltInRuleSetForCode, getCodeForBuiltInRuleSet, prepareStreamabilityaddRule, addRule, allocateAllBindingSlots, allocateAllPatternSlots, allocatePatternSlots, checkForConflictingProperties, computeRankings, copyRules, forceAllocateAllBindingSlots, getActivePart, getBuiltInRuleSet, getExplicitNamespaces, getLabel, getMaxPrecedence, getMaxRank, getNamedRuleChain, getPropertyValue, getRule, getRule, getStackFrameSlotsNeeded, isEmpty, processRuleChain, processRuleChain, processRuleChains, processRules, processRules, searchRuleChain, searchRuleChain, setBuiltInRuleSet, setExplicitProperty, setGroup, setStackFrameSlotsNeededapplyTemplates, explain, export, getAccumulators, getComponentKind, getConstructType, getDeclaringComponent, getModeName, getModeTitle, getNextMatchRule, getObjectName, getRecoveryPolicy, getRule, getSymbolicName, isDeclaredStreamable, isMustBeTyped, isUnnamedMode, makeNewContext, makeNewContextIfNeeded, setAccumulators, setHasRules, setRecoveryPolicy, setStreamableallocateBindingSlotsRecursive, getBody, getColumnNumber, getDeclaredVisibility, getLineNumber, getLocation, getPackageData, getProperties, getProperty, getPublicId, getRetainedStaticContext, getStackFrameMap, getSystemId, isExportable, makeDeclaringComponent, saveLocation, setBody, setChildExpression, setDeclaredVisibility, setDeclaringComponent, setLineNumber, setPackageData, setRetainedStaticContext, setStackFrameMap, setSystemIdpublic ModeEE(StructuredQName modeName, CompilerInfo compilerInfo)
protected void exportUseAccumulators(ExpressionPresenter presenter)
exportUseAccumulators in class Modepublic Rule makeRule(Pattern pattern, RuleTarget action, int precedence, int minImportPrecedence, double priority, int sequence)
SimpleModemakeRule in class SimpleModepattern - the pattern that this rule matchesaction - the object invoked by this rule (usually a Template)precedence - the precedence of the ruleminImportPrecedence - the minumum import precedence for xsl:apply-importspriority - the priority of the rulesequence - a sequence number for ordering of rulesprotected PreconditionMatcher makeRuleSearchState(RuleChain chain, XPathContext context)
SimpleModemakeRuleSearchState in class SimpleModepublic RuleChain getNamedNodeChain(NodeInfo node, XPathContext context)
node - the node to be matchedcontext - local contextpublic RuleChain getUnnamedNodeChain(NodeInfo node)
node - the node to be matchedprotected boolean ruleMatches(Rule r, Item item, XPathContextMajor context, RuleSearchState ruleSearchState) throws XPathException
ruleMatches in class SimpleModer - the rule to checkitem - the context itemcontext - the static context for evaluationruleSearchState - An appropriate matcher for preconditions in this modeXPathExceptionpublic void computeStreamability()
throws XPathException
computeStreamability in class SimpleModeXPathExceptionpublic void invertStreamableTemplates()
throws XPathException
invertStreamableTemplates in class SimpleModeXPathException - if there is a non-streamable template in the modeprotected ModeEE.RuleTypeAction setType(ModeEE.RuleTypeAction action, ItemType type)
public void optimizeRules()
optimizeRules in class SimpleModepublic void optimizeRuleChain(RuleChain chain, int type)
public void exportTemplateRules(ExpressionPresenter out) throws XPathException
SimpleModeexportTemplateRules in class SimpleModeout - used to display the expression treeXPathExceptionpublic static java.util.List<Rule> listRules(RuleChain chain)
chain - the chained set of rulespublic static java.util.List<Rule> orderRules(java.util.List<Rule> r1, java.util.List<Rule> r2)
This does not detect duplicates within the list
r1 - one list of rules, assumed in rank orderr2 - the other list of rules, assumed in rank orderpublic static java.util.List<Rule> orderRules(RuleChain chain1, RuleChain chain2)
This could be simplified as orderRules(listRules(chain1),listRules(chain2))
chain1 - the first rule chainchain2 - the second rule chainpublic void explainTemplateRules(ExpressionPresenter out) throws XPathException
SimpleModeexplainTemplateRules in class SimpleModeout - used to display the expression treeXPathExceptionpublic void reportAmbiguity(Item item, Rule r1, Rule r2, XPathContext c) throws XPathException
SimpleModereportAmbiguity in class SimpleModeitem - The item that matches two or more rulesr1 - The first rule that the node matchesr2 - The second rule that the node matchesc - The context for the transformationXPathException - if the system is configured to treat ambiguous template matching as a
non-recoverable errorpublic static java.lang.String typeName(int type)
type - the code for the typeCopyright (c) 2004-2018 Saxonica Limited. All rights reserved.