| Method from org.dom4j.rule.RuleManager Detail: |
protected void addDefaultRule(Mode mode,
Pattern pattern,
Action action) {
Rule rule = createDefaultRule(pattern, action);
mode.addRule(rule);
}
|
protected void addDefaultRules(Mode mode) {
// add an apply templates rule
Action applyTemplates = new Action() {
public void run(Node node) throws Exception {
if (node instanceof Element) {
mode.applyTemplates((Element) node);
} else if (node instanceof Document) {
mode.applyTemplates((Document) node);
}
}
};
Action valueOf = getValueOfAction();
addDefaultRule(mode, NodeTypePattern.ANY_DOCUMENT, applyTemplates);
addDefaultRule(mode, NodeTypePattern.ANY_ELEMENT, applyTemplates);
if (valueOf != null) {
addDefaultRule(mode, NodeTypePattern.ANY_ATTRIBUTE, valueOf);
addDefaultRule(mode, NodeTypePattern.ANY_TEXT, valueOf);
}
}
Adds the default stylesheet rules to the given Mode instance |
public void addRule(Rule rule) {
rule.setAppearenceCount(++appearenceCount);
Mode mode = getMode(rule.getMode());
Rule[] childRules = rule.getUnionRules();
if (childRules != null) {
for (int i = 0, size = childRules.length; i < size; i++) {
mode.addRule(childRules[i]);
}
} else {
mode.addRule(rule);
}
}
|
public void clear() {
modes.clear();
appearenceCount = 0;
}
|
protected Rule createDefaultRule(Pattern pattern,
Action action) {
Rule rule = new Rule(pattern, action);
rule.setImportPrecedence(-1);
return rule;
}
|
protected Mode createMode() {
Mode mode = new Mode();
addDefaultRules(mode);
return mode;
}
A factory method to return a new Mode instance which should add
the necessary default rules |
public Rule getMatchingRule(String modeName,
Node node) {
Mode mode = (Mode) modes.get(modeName);
if (mode != null) {
return mode.getMatchingRule(node);
} else {
System.out.println("Warning: No Mode for mode: " + mode);
return null;
}
}
Performs an XSLT processing model match for the rule which matches the
given Node the best. |
public Mode getMode(String modeName) {
Mode mode = (Mode) modes.get(modeName);
if (mode == null) {
mode = createMode();
modes.put(modeName, mode);
}
return mode;
}
|
public Action getValueOfAction() {
return valueOfAction;
}
|
public void removeRule(Rule rule) {
Mode mode = getMode(rule.getMode());
Rule[] childRules = rule.getUnionRules();
if (childRules != null) {
for (int i = 0, size = childRules.length; i < size; i++) {
mode.removeRule(childRules[i]);
}
} else {
mode.removeRule(rule);
}
}
|
public void setValueOfAction(Action valueOfAction) {
this.valueOfAction = valueOfAction;
}
Sets the default value-of action which is used in the default rules for
the pattern "text()|@" |