mmidy 2002/08/16 14:23:48
Modified: java/src/org/apache/xalan/processor Tag: xslt20
StylesheetHandler.java XSLTSchema.java
java/src/org/apache/xalan/templates Tag: xslt20
Constants.java
java/src/org/apache/xpath/parser Tag: xslt20 SimpleNode.java
java/src/org/apache/xpath/res Tag: xslt20
XPATHErrorResources.properties
Added: java/src/org/apache/xalan/templates Tag: xslt20
ElemAnalyzeString.java ElemMatchingSubstring.java
ElemNonMatchingSubstring.java FuncRegexGroup.java
java/src/org/apache/xpath/functions Tag: xslt20
FuncMatches.java FuncReplace.java FuncTokenize.java
java/src/org/apache/xpath/parser/regexp Tag: xslt20
BMPattern.java Match.java Op.java
ParseException.java ParserForXMLSchema.java
REUtil.java RangeToken.java RegexParser.java
RegularExpression.java Token.java
Log:
Implement Regular Expressions. For now, we copied all the parser code from
Xerces' implementation. Had to make some method public and add a couple new
methods to support XSLT functions.
Revision Changes Path
No revision
No revision
1.53.2.1.2.1 +4 -0
xml-xalan/java/src/org/apache/xalan/processor/StylesheetHandler.java
Index: StylesheetHandler.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/processor/StylesheetHandler.java,v
retrieving revision 1.53.2.1
retrieving revision 1.53.2.1.2.1
diff -u -r1.53.2.1 -r1.53.2.1.2.1
--- StylesheetHandler.java 14 Aug 2002 19:21:26 -0000 1.53.2.1
+++ StylesheetHandler.java 16 Aug 2002 21:23:47 -0000 1.53.2.1.2.1
@@ -158,6 +158,10 @@
func = new org.apache.xalan.templates.FuncCurrentGroup();
SimpleNode.m_builtInFunctions.put(new QName("current-group"),
func);
+
+ func = new org.apache.xalan.templates.FuncRegexGroup();
+
+ SimpleNode.m_builtInFunctions.put(new QName("regex-group"), func);
}
}
}
1.29.2.1.2.1 +35 -9
xml-xalan/java/src/org/apache/xalan/processor/XSLTSchema.java
Index: XSLTSchema.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/processor/XSLTSchema.java,v
retrieving revision 1.29.2.1
retrieving revision 1.29.2.1.2.1
diff -u -r1.29.2.1 -r1.29.2.1.2.1
--- XSLTSchema.java 14 Aug 2002 19:21:26 -0000 1.29.2.1
+++ XSLTSchema.java 16 Aug 2002 21:23:47 -0000 1.29.2.1.2.1
@@ -277,7 +277,13 @@
XSLTAttributeDef.T_EXPR, false);
XSLTAttributeDef groupEndWithAttr = new XSLTAttributeDef(null,
"group-ending-with",
- XSLTAttributeDef.T_EXPR, false);
+ XSLTAttributeDef.T_EXPR, false);
+ XSLTAttributeDef regexAttrRequired = new XSLTAttributeDef(null,
+ "regex",
+ XSLTAttributeDef.T_AVT, true);
+ XSLTAttributeDef flagsAttr = new XSLTAttributeDef(null,
+ "flags",
+ XSLTAttributeDef.T_AVT, false);
XSLTElementDef charData = new XSLTElementDef(this, null,
"text()",
null /*alias */, null /* elements */, null,
/* attributes */
new ProcessorCharacters(),
@@ -298,11 +304,11 @@
XSLTAttributeDef xslResultAttr =
new XSLTAttributeDef(Constants.S_XSLNAMESPACEURL, "*",
XSLTAttributeDef.T_CDATA, false);
- XSLTElementDef[] templateElements = new XSLTElementDef[26];
- XSLTElementDef[] templateElementsAndParams = new XSLTElementDef[27];
- XSLTElementDef[] templateElementsAndSort = new XSLTElementDef[27];
+ XSLTElementDef[] templateElements = new XSLTElementDef[27];
+ XSLTElementDef[] templateElementsAndParams = new XSLTElementDef[28];
+ XSLTElementDef[] templateElementsAndSort = new XSLTElementDef[28];
//exslt
- XSLTElementDef[] exsltFunctionElements = new XSLTElementDef[27];//
although should exclude some template elements.
+ XSLTElementDef[] exsltFunctionElements = new XSLTElementDef[28];//
although should exclude some template elements.
XSLTElementDef[] charTemplateElements = new XSLTElementDef[16];
XSLTElementDef resultElement = new XSLTElementDef(this, null, "*",
@@ -406,14 +412,33 @@
new XSLTAttributeDef[]{ selectAttrRequired,
spaceAttr },
new ProcessorTemplateElem(),
- ElemForEach.class /* class object */,
true, false, true, 20, true);
- XSLTElementDef xslForEachGroup = new XSLTElementDef(this,
+ ElemForEach.class /* class object */,
true, false, true, 20, true);
+ XSLTElementDef xslMatchingSubstring = new XSLTElementDef(this,
+ Constants.S_XSLNAMESPACEURL,
"matching-substring",
+ null /*alias */, templateElements, //
(#PCDATA %instructions; %result-elements;)*
+ new XSLTAttributeDef[]{},
+ new ProcessorTemplateElem(),
+ ElemMatchingSubstring.class /* class
object */, false, false, true, 19, false);
+ XSLTElementDef xslNonMatchingSubstring = new XSLTElementDef(this,
+ Constants.S_XSLNAMESPACEURL,
"non-matching-substring",
+ null /*alias */, templateElements, //
(#PCDATA %instructions; %result-elements;)*
+ new XSLTAttributeDef[]{},
+ new ProcessorTemplateElem(),
+ ElemNonMatchingSubstring.class /* class
object */, false, false, true, 19, false);
+ XSLTElementDef xslAnalyzeString = new XSLTElementDef(this,
+ Constants.S_XSLNAMESPACEURL,
"analyze-string",
+ null /*alias */, new
XSLTElementDef[]{xslMatchingSubstring, xslNonMatchingSubstring}, // (#PCDATA
%instructions; %result-elements; | xsl:sort)*
+ new XSLTAttributeDef[]{ selectAttrRequired,
+ regexAttrRequired,
flagsAttr },
+ new ProcessorTemplateElem(),
+ ElemAnalyzeString.class /* class object
*/, true, false, false, 20, true);
+ XSLTElementDef xslForEachGroup = new XSLTElementDef(this,
Constants.S_XSLNAMESPACEURL,
"for-each-group",
null /*alias */, templateElementsAndSort,
// (#PCDATA %instructions; %result-elements; | xsl:sort)*
new XSLTAttributeDef[]{ selectAttrRequired,
groupByAttr,
groupAdjAttr, groupStartWithAttr, groupEndWithAttr },
new ProcessorTemplateElem(),
- ElemForEachGroup.class /* class object */,
true, false, true, 20, true);
+ ElemForEachGroup.class /* class object */,
true, false, true, 20, true);
XSLTElementDef xslIf = new XSLTElementDef(this,
Constants.S_XSLNAMESPACEURL,
"if", null /*alias */,
@@ -610,7 +635,8 @@
templateElements[i++] = xslCallTemplate;
templateElements[i++] = xslApplyImports;
templateElements[i++] = xslForEach;
- templateElements[i++] = xslForEachGroup;
+ templateElements[i++] = xslForEachGroup;
+ templateElements[i++] = xslAnalyzeString;
templateElements[i++] = xslValueOf;
templateElements[i++] = xslCopyOf;
templateElements[i++] = xslNumber;
No revision
No revision
1.14.2.1.2.1 +11 -3
xml-xalan/java/src/org/apache/xalan/templates/Constants.java
Index: Constants.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/Constants.java,v
retrieving revision 1.14.2.1
retrieving revision 1.14.2.1.2.1
diff -u -r1.14.2.1 -r1.14.2.1.2.1
--- Constants.java 14 Aug 2002 19:21:28 -0000 1.14.2.1
+++ Constants.java 16 Aug 2002 21:23:47 -0000 1.14.2.1.2.1
@@ -197,7 +197,7 @@
ELEMNAME_EXTENSIONSCRIPT = 86, ELEMNAME_OUTPUT = 80,
ELEMNAME_COMPONENT = 81, ELEMNAME_SCRIPT = 82;
- // Next free number: 96 (88-93 used for XSLT2.0 and EXSLT elements);
+ // Next free number: 99 (88-93 used for XSLT2.0 and EXSLT elements);
/**
* Literals for XSL element names. Note that there are more
@@ -282,13 +282,19 @@
ELEMNAME_FUNCRESULT_STRING = "result",
ELEMNAME_PRINCIPALRESULTDOCUMENT_STRING = "principal-result-document",
ELEMNAME_RESULTDOCUMENT_STRING = "result-document",
- ELEMNAME_NAMESPACE_STRING = "namespace";
+ ELEMNAME_NAMESPACE_STRING = "namespace",
+ ELEMNAME_ANALYZESTRING_STRING = "analyze-string",
+ ELEMNAME_MATCHINGSUBSTRING_STRING = "matching-substring",
+ ELEMNAME_NONMATCHINGSUBSTRING_STRING = "non-matching-substring";
public static final int
ELEMNAME_FUNCTION = 88,
ELEMNAME_FUNCRESULT = 89,
ELEMNAME_PRINCIPALRESULTDOCUMENT = 90,
ELEMNAME_RESULTDOCUMENT = 91,
- ELEMNAME_NAMESPACE = 95;
+ ELEMNAME_NAMESPACE = 95,
+ ELEMNAME_ANALYZESTRING = 96,
+ ELEMNAME_MATCHINGSUBSTRING = 97,
+ ELEMNAME_NONMATCHINGSUBSTRING = 98;
/**
* Literals for EXSLT function elements.
@@ -331,6 +337,7 @@
ATTRNAME_EXCLUDE_RESULT_PREFIXES ="exclude-result-prefixes",
ATTRNAME_EXPR = "expr",
ATTRNAME_EXTENSIONELEMENTPREFIXES = "extension-element-prefixes",
+ ATTRNAME_FLAGS = "flags",
ATTRNAME_FORMAT = "format",
ATTRNAME_FROM = "from",
ATTRNAME_GROUPINGSEPARATOR = "grouping-separator",
@@ -373,6 +380,7 @@
ATTRNAME_PERMILLE = "per-mille",
ATTRNAME_PRIORITY = "priority",
ATTRNAME_REFID = "refID",
+ ATTRNAME_REGEX = "regex",
ATTRNAME_RESULTNS = "result-ns",
ATTRNAME_RESULT_PREFIX = "result-prefix",
ATTRNAME_SELECT = "select",
No revision
No revision
1.1.2.1 +459 -0
xml-xalan/java/src/org/apache/xalan/templates/Attic/ElemAnalyzeString.java
1.1.2.1 +658 -0
xml-xalan/java/src/org/apache/xalan/templates/Attic/ElemMatchingSubstring.java
1.1.2.1 +162 -0
xml-xalan/java/src/org/apache/xalan/templates/Attic/ElemNonMatchingSubstring.java
1.1.2.1 +122 -0
xml-xalan/java/src/org/apache/xalan/templates/Attic/FuncRegexGroup.java
No revision
No revision
1.1.2.1 +119 -0
xml-xalan/java/src/org/apache/xpath/functions/Attic/FuncMatches.java
1.1.2.1 +205 -0
xml-xalan/java/src/org/apache/xpath/functions/Attic/FuncReplace.java
1.1.2.1 +145 -0
xml-xalan/java/src/org/apache/xpath/functions/Attic/FuncTokenize.java
No revision
No revision
1.1.2.1.2.3 +9 -0
xml-xalan/java/src/org/apache/xpath/parser/Attic/SimpleNode.java
Index: SimpleNode.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/parser/Attic/SimpleNode.java,v
retrieving revision 1.1.2.1.2.2
retrieving revision 1.1.2.1.2.3
diff -u -r1.1.2.1.2.2 -r1.1.2.1.2.3
--- SimpleNode.java 15 Aug 2002 21:07:45 -0000 1.1.2.1.2.2
+++ SimpleNode.java 16 Aug 2002 21:23:48 -0000 1.1.2.1.2.3
@@ -320,6 +320,15 @@
m_builtInFunctions.put(
new QName("base-uri"),
new FuncBaseURI());
+m_builtInFunctions.put(
+ new QName("matches"),
+ new FuncMatches());
+m_builtInFunctions.put(
+ new QName("replace"),
+ new FuncReplace());
+m_builtInFunctions.put(
+ new QName("tokenize"),
+ new FuncTokenize());
}
/**
No revision
No revision
1.1.2.1 +273 -0
xml-xalan/java/src/org/apache/xpath/parser/regexp/Attic/BMPattern.java
1.1.2.1 +222 -0
xml-xalan/java/src/org/apache/xpath/parser/regexp/Attic/Match.java
1.1.2.1 +289 -0
xml-xalan/java/src/org/apache/xpath/parser/regexp/Attic/Op.java
1.1.2.1 +87 -0
xml-xalan/java/src/org/apache/xpath/parser/regexp/Attic/ParseException.java
1.1.2.1 +504 -0
xml-xalan/java/src/org/apache/xpath/parser/regexp/Attic/ParserForXMLSchema.java
1.1.2.1 +365 -0
xml-xalan/java/src/org/apache/xpath/parser/regexp/Attic/REUtil.java
1.1.2.1 +651 -0
xml-xalan/java/src/org/apache/xpath/parser/regexp/Attic/RangeToken.java
1.1.2.1 +1272 -0
xml-xalan/java/src/org/apache/xpath/parser/regexp/Attic/RegexParser.java
1.1.2.1 +3383 -0
xml-xalan/java/src/org/apache/xpath/parser/regexp/Attic/RegularExpression.java
1.1.2.1 +1502 -0
xml-xalan/java/src/org/apache/xpath/parser/regexp/Attic/Token.java
No revision
No revision
1.7.2.1.2.1 +3 -1
xml-xalan/java/src/org/apache/xpath/res/XPATHErrorResources.properties
Index: XPATHErrorResources.properties
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/res/XPATHErrorResources.properties,v
retrieving revision 1.7.2.1
retrieving revision 1.7.2.1.2.1
diff -u -r1.7.2.1 -r1.7.2.1.2.1
--- XPATHErrorResources.properties 14 Aug 2002 20:07:10 -0000 1.7.2.1
+++ XPATHErrorResources.properties 16 Aug 2002 21:23:48 -0000
1.7.2.1.2.1
@@ -226,4 +226,6 @@
zero=0
one=1
two=2
-three=3
\ No newline at end of file
+three=3
+twoorthree=2 or 3
+threeorfour = 3 or 4
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]