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]