19f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
29f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one
39f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * or more contributor license agreements. See the NOTICE file
49f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed with this work for additional information
59f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * regarding copyright ownership. The ASF licenses this file
69f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to you under the Apache License, Version 2.0 (the  "License");
79f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * you may not use this file except in compliance with the License.
89f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * You may obtain a copy of the License at
99f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *     http://www.apache.org/licenses/LICENSE-2.0
119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Unless required by applicable law or agreed to in writing, software
139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS,
149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * See the License for the specific language governing permissions and
169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * limitations under the License.
179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * $Id: XSLTSchema.java 476466 2006-11-18 08:22:31Z minchau $
209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpackage org.apache.xalan.processor;
229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.util.HashMap;
249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.Constants;
269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemApplyImport;
279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemApplyTemplates;
289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemAttribute;
299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemCallTemplate;
309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemChoose;
319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemComment;
329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemCopy;
339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemCopyOf;
349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemElement;
359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemExsltFuncResult;
369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemExsltFunction;
379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemExtensionDecl;
389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemExtensionScript;
399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemFallback;
409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemForEach;
419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemIf;
429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemLiteralResult;
439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemMessage;
449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemNumber;
459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemOtherwise;
469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemPI;
479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemParam;
489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemSort;
499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemTemplate;
509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemText;
519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemTextLiteral;
529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemUnknown;
539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemValueOf;
549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemVariable;
559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemWhen;
569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.templates.ElemWithParam;
579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.utils.QName;
589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/**
609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This class defines the allowed structure for a stylesheet, and the
619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * mapping between Xalan classes and the markup elements in the stylesheet.
629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see <a href="http://www.w3.org/TR/xslt#dtd">XSLT DTD</a>
639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpublic class XSLTSchema extends XSLTElementDef
659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson{
669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Construct a XSLTSchema which represents the XSLT "schema".
699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  XSLTSchema()
719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    build();
739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * This method builds an XSLT "schema" according to http://www.w3.org/TR/xslt#dtd.  This
779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * schema provides instructions for building the Xalan Stylesheet (Templates) structure.
789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  void build()
809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson	// xsl:import, xsl:include
829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef hrefAttr = new XSLTAttributeDef(null, "href",
839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  XSLTAttributeDef.T_URL, true, false,XSLTAttributeDef.ERROR);
849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson	// xsl:preserve-space, xsl:strip-space
869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef elementsAttr = new XSLTAttributeDef(null, "elements",
879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                      XSLTAttributeDef.T_SIMPLEPATTERNLIST,
889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                      true, false, XSLTAttributeDef.ERROR);
899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // XSLTAttributeDef anyNamespacedAttr = new XSLTAttributeDef("*", "*",
919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    //                                XSLTAttributeDef.T_CDATA, false);
929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:output
949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef methodAttr = new XSLTAttributeDef(null, "method",
959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    XSLTAttributeDef.T_QNAME, false, false,XSLTAttributeDef.ERROR);
969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef versionAttr = new XSLTAttributeDef(null, "version",
979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                     XSLTAttributeDef.T_NMTOKEN, false, false,XSLTAttributeDef.ERROR);
989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef encodingAttr = new XSLTAttributeDef(null, "encoding",
999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                      XSLTAttributeDef.T_CDATA, false, false,XSLTAttributeDef.ERROR);
1009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef omitXmlDeclarationAttr = new XSLTAttributeDef(null,
1019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                "omit-xml-declaration",
1029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                XSLTAttributeDef.T_YESNO,
1039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                false, false,XSLTAttributeDef.ERROR);
1049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef standaloneAttr = new XSLTAttributeDef(null,
1059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                        "standalone",
1069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                        XSLTAttributeDef.T_YESNO, false, false,XSLTAttributeDef.ERROR);
1079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef doctypePublicAttr = new XSLTAttributeDef(null,
1089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           "doctype-public",
1099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           XSLTAttributeDef.T_CDATA, false, false,XSLTAttributeDef.ERROR);
1109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef doctypeSystemAttr = new XSLTAttributeDef(null,
1119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           "doctype-system",
1129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           XSLTAttributeDef.T_CDATA, false, false,XSLTAttributeDef.ERROR);
1139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef cdataSectionElementsAttr = new XSLTAttributeDef(null,
1149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  "cdata-section-elements",
1159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  XSLTAttributeDef.T_QNAMES_RESOLVE_NULL,
1169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  false, false,XSLTAttributeDef.ERROR);
1179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef indentAttr = new XSLTAttributeDef(null, "indent",
1189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    XSLTAttributeDef.T_YESNO, false, false,XSLTAttributeDef.ERROR);
1199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef mediaTypeAttr = new XSLTAttributeDef(null, "media-type",
1209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       XSLTAttributeDef.T_CDATA, false, false,XSLTAttributeDef.ERROR);
1219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Required.
1249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // It is an error if the name attribute is invalid on any of these elements
1259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:key, xsl:attribute-set, xsl:call-template, xsl:with-param, xsl:variable, xsl:param
1269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef nameAttrRequired = new XSLTAttributeDef(null, "name",
1279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          XSLTAttributeDef.T_QNAME, true, false,XSLTAttributeDef.ERROR);
1289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson	// Required.
1299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Support AVT
1309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:element, xsl:attribute
1319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef nameAVTRequired = new XSLTAttributeDef(null, "name",
1329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         XSLTAttributeDef.T_AVT_QNAME, true, true,XSLTAttributeDef.WARNING);
1339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Required.
1369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Support AVT
1379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:processing-instruction
1389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef nameAVT_NCNAMERequired = new XSLTAttributeDef(null, "name",
1399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         XSLTAttributeDef.T_NCNAME, true, true,XSLTAttributeDef.WARNING);
1409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Optional.
1429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Static error if invalid
1439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:template, xsl:decimal-format
1449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef nameAttrOpt_ERROR = new XSLTAttributeDef(null, "name",
1459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                     XSLTAttributeDef.T_QNAME, false, false,XSLTAttributeDef.ERROR);
1469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:key
1489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef useAttr = new XSLTAttributeDef(null, "use",
1499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 XSLTAttributeDef.T_EXPR, true, false,XSLTAttributeDef.ERROR);
1509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:element, xsl:attribute
1529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef namespaceAVTOpt = new XSLTAttributeDef(null,
1539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         "namespace",XSLTAttributeDef.T_URL,
1549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         false, true,XSLTAttributeDef.WARNING);
1559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:decimal-format
1569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef decimalSeparatorAttr = new XSLTAttributeDef(null,
1579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                              "decimal-separator",
1589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                              XSLTAttributeDef.T_CHAR, false,XSLTAttributeDef.ERROR, ".");
1599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef infinityAttr = new XSLTAttributeDef(null, "infinity",
1609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                      XSLTAttributeDef.T_CDATA, false,XSLTAttributeDef.ERROR,"Infinity");
1619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef minusSignAttr = new XSLTAttributeDef(null, "minus-sign",
1629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       XSLTAttributeDef.T_CHAR, false,XSLTAttributeDef.ERROR,"-");
1639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef NaNAttr = new XSLTAttributeDef(null, "NaN",
1649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 XSLTAttributeDef.T_CDATA, false,XSLTAttributeDef.ERROR, "NaN");
1659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef percentAttr = new XSLTAttributeDef(null, "percent",
1669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                     XSLTAttributeDef.T_CHAR, false,XSLTAttributeDef.ERROR, "%");
1679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef perMilleAttr = new XSLTAttributeDef(null, "per-mille",
1689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                      XSLTAttributeDef.T_CHAR,
1699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                      false, false,XSLTAttributeDef.ERROR /* ,"&#x2030;" */);
1709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef zeroDigitAttr = new XSLTAttributeDef(null, "zero-digit",
1719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       XSLTAttributeDef.T_CHAR, false,XSLTAttributeDef.ERROR, "0");
1729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef digitAttr = new XSLTAttributeDef(null, "digit",
1739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   XSLTAttributeDef.T_CHAR, false,XSLTAttributeDef.ERROR, "#");
1749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef patternSeparatorAttr = new XSLTAttributeDef(null,
1759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                              "pattern-separator",
1769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                              XSLTAttributeDef.T_CHAR, false,XSLTAttributeDef.ERROR, ";");
1779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:decimal-format
1789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef groupingSeparatorAttr = new XSLTAttributeDef(null,
1799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                               "grouping-separator",
1809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                               XSLTAttributeDef.T_CHAR, false,XSLTAttributeDef.ERROR,",");
1819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:element, xsl:attribute-set, xsl:copy
1849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef useAttributeSetsAttr = new XSLTAttributeDef(null,
1859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                              "use-attribute-sets",
1869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                              XSLTAttributeDef.T_QNAMES,
1879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                              false, false, XSLTAttributeDef.ERROR);
1889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:if, xsl:when
1909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef testAttrRequired = new XSLTAttributeDef(null, "test",
1919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          XSLTAttributeDef.T_EXPR, true, false,XSLTAttributeDef.ERROR);
1929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Required.
1959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:value-of, xsl:for-each, xsl:copy-of
1969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef selectAttrRequired = new XSLTAttributeDef(null,
1979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                            "select",
1989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                            XSLTAttributeDef.T_EXPR, true, false,XSLTAttributeDef.ERROR);
1999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Optional.
2019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:variable, xsl:param, xsl:with-param
2029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef selectAttrOpt = new XSLTAttributeDef(null, "select",
2039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       XSLTAttributeDef.T_EXPR, false, false,XSLTAttributeDef.ERROR);
2049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Optional.
2069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Default: "node()"
2079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:apply-templates
2089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef selectAttrDefNode = new XSLTAttributeDef(null, "select",
2099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           XSLTAttributeDef.T_EXPR, false,XSLTAttributeDef.ERROR, "node()");
2109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Optional.
2119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Default: "."
2129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:sort
2139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef selectAttrDefDot = new XSLTAttributeDef(null, "select",
2149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          XSLTAttributeDef.T_EXPR, false,XSLTAttributeDef.ERROR, ".");
2159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:key
2169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef matchAttrRequired = new XSLTAttributeDef(null, "match",
2179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           XSLTAttributeDef.T_PATTERN, true, false,XSLTAttributeDef.ERROR);
2189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:template
2199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef matchAttrOpt = new XSLTAttributeDef(null, "match",
2209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                      XSLTAttributeDef.T_PATTERN, false, false,XSLTAttributeDef.ERROR);
2219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:template
2229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef priorityAttr = new XSLTAttributeDef(null, "priority",
2239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                     XSLTAttributeDef.T_NUMBER, false, false,XSLTAttributeDef.ERROR);
2249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:template, xsl:apply-templates
2269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef modeAttr = new XSLTAttributeDef(null, "mode",
2279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                     XSLTAttributeDef.T_QNAME, false, false,XSLTAttributeDef.ERROR);
2289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef spaceAttr =
2309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTAttributeDef(Constants.S_XMLNAMESPACEURI, "space", false, false, false, XSLTAttributeDef.WARNING,
2319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           "default", Constants.ATTRVAL_STRIP, "preserve",
2329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           Constants.ATTRVAL_PRESERVE);
2339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef spaceAttrLiteral =
2369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTAttributeDef(Constants.S_XMLNAMESPACEURI, "space",
2379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          XSLTAttributeDef.T_URL, false, true,XSLTAttributeDef.ERROR);
2389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:namespace-alias
2399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef stylesheetPrefixAttr = new XSLTAttributeDef(null,
2409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                              "stylesheet-prefix",
2419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                              XSLTAttributeDef.T_CDATA, true, false,XSLTAttributeDef.ERROR);
2429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef resultPrefixAttr = new XSLTAttributeDef(null,
2439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          "result-prefix",
2449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          XSLTAttributeDef.T_CDATA, true, false,XSLTAttributeDef.ERROR);
2459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:text, xsl:value-of
2479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef disableOutputEscapingAttr = new XSLTAttributeDef(null,
2489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   "disable-output-escaping",
2499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   XSLTAttributeDef.T_YESNO,
2509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   false, false,XSLTAttributeDef.ERROR);
2519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson	// xsl:number
2539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef levelAttr = new XSLTAttributeDef(null, "level", false, false, false, XSLTAttributeDef.ERROR,
2549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   "single", Constants.NUMBERLEVEL_SINGLE,
2559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   "multiple", Constants.NUMBERLEVEL_MULTI,
2569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   "any", Constants.NUMBERLEVEL_ANY);
2579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    levelAttr.setDefault("single");
2589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef countAttr = new XSLTAttributeDef(null, "count",
2599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   XSLTAttributeDef.T_PATTERN, false, false,XSLTAttributeDef.ERROR);
2609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef fromAttr = new XSLTAttributeDef(null, "from",
2619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  XSLTAttributeDef.T_PATTERN, false, false,XSLTAttributeDef.ERROR);
2629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef valueAttr = new XSLTAttributeDef(null, "value",
2639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   XSLTAttributeDef.T_EXPR, false, false,XSLTAttributeDef.ERROR);
2649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef formatAttr = new XSLTAttributeDef(null, "format",
2659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    XSLTAttributeDef.T_CDATA, false, true,XSLTAttributeDef.ERROR);
2669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    formatAttr.setDefault("1");
2679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:number, xsl:sort
2699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef langAttr = new XSLTAttributeDef(null, "lang",
2709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  XSLTAttributeDef.T_NMTOKEN, false, true,XSLTAttributeDef.ERROR);
2719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:number
2739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef letterValueAttr = new XSLTAttributeDef(null,
2749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         "letter-value",
2759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         false, true, false, XSLTAttributeDef.ERROR,
2769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         "alphabetic", Constants.NUMBERLETTER_ALPHABETIC,
2779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         "traditional", Constants.NUMBERLETTER_TRADITIONAL);
2789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:number
2799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef groupingSeparatorAVT = new XSLTAttributeDef(null,
2809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                              "grouping-separator",
2819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                              XSLTAttributeDef.T_CHAR, false, true,XSLTAttributeDef.ERROR);
2829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:number
2839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef groupingSizeAttr = new XSLTAttributeDef(null,
2849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          "grouping-size",
2859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          XSLTAttributeDef.T_NUMBER, false, true,XSLTAttributeDef.ERROR);
2869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   // xsl:sort
2889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef dataTypeAttr = new XSLTAttributeDef(null, "data-type", false, true, true, XSLTAttributeDef.ERROR,
2899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    "text", Constants.SORTDATATYPE_TEXT ,"number", Constants.SORTDATATYPE_TEXT);
2909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson	dataTypeAttr.setDefault("text");
2919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson	// xsl:sort
2939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef orderAttr = new XSLTAttributeDef(null, "order", false, true, false,XSLTAttributeDef.ERROR,
2949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    "ascending", Constants.SORTORDER_ASCENDING,
2959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    "descending", Constants.SORTORDER_DESCENDING);
2969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    orderAttr.setDefault("ascending");
2979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:sort
2999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef caseOrderAttr = new XSLTAttributeDef(null, "case-order", false, true, false,XSLTAttributeDef.ERROR,
3009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       "upper-first", Constants.SORTCASEORDER_UPPERFIRST ,
3019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       "lower-first", Constants.SORTCASEORDER_LOWERFIRST);
3029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // xsl:message
3049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef terminateAttr = new XSLTAttributeDef(null, "terminate",
3059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       XSLTAttributeDef.T_YESNO, false, false,XSLTAttributeDef.ERROR);
3069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    terminateAttr.setDefault("no");
3079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson	// top level attributes
3099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef xslExcludeResultPrefixesAttr =
3109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTAttributeDef(Constants.S_XSLNAMESPACEURL,
3119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           "exclude-result-prefixes",
3129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           XSLTAttributeDef.T_PREFIXLIST, false, false,XSLTAttributeDef.ERROR);
3139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef xslExtensionElementPrefixesAttr =
3149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTAttributeDef(Constants.S_XSLNAMESPACEURL,
3159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           "extension-element-prefixes",
3169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           XSLTAttributeDef.T_PREFIX_URLLIST, false, false,XSLTAttributeDef.ERROR);
3179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // result-element-atts
3189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef xslUseAttributeSetsAttr =
3199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTAttributeDef(Constants.S_XSLNAMESPACEURL, "use-attribute-sets",
3209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           XSLTAttributeDef.T_QNAMES, false, false,XSLTAttributeDef.ERROR);
3219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef xslVersionAttr =
3229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTAttributeDef(Constants.S_XSLNAMESPACEURL, "version",
3239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           XSLTAttributeDef.T_NMTOKEN, false, false,XSLTAttributeDef.ERROR);
3249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef charData = new XSLTElementDef(this, null, "text()",
3269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                null /*alias */, null /* elements */, null,  /* attributes */
3279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                new ProcessorCharacters(),
3289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                ElemTextLiteral.class /* class object */);
3299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charData.setType(XSLTElementDef.T_PCDATA);
3319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef whiteSpaceOnly = new XSLTElementDef(this, null, "text()",
3339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                      null /*alias */, null /* elements */,
3349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                      null,  /* attributes */
3359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                      null,
3369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                      ElemTextLiteral.class /* should be null? -sb */);
3379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charData.setType(XSLTElementDef.T_PCDATA);
3399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef resultAttr = new XSLTAttributeDef(null, "*",
3419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    XSLTAttributeDef.T_AVT, false, true,XSLTAttributeDef.WARNING);
3429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef xslResultAttr =
3439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTAttributeDef(Constants.S_XSLNAMESPACEURL, "*",
3449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           XSLTAttributeDef.T_CDATA, false, false,XSLTAttributeDef.WARNING);
3459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef[] templateElements = new XSLTElementDef[23];
3479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef[] templateElementsAndParams = new XSLTElementDef[24];
3489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef[] templateElementsAndSort = new XSLTElementDef[24];
3499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    //exslt
3509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef[] exsltFunctionElements = new XSLTElementDef[24];
3519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef[] charTemplateElements = new XSLTElementDef[15];
3539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef resultElement = new XSLTElementDef(this, null, "*",
3549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                     null /*alias */,
3559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                     templateElements /* elements */,
3569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                     new XSLTAttributeDef[]{
3579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       spaceAttrLiteral, // special
3589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       xslExcludeResultPrefixesAttr,
3599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       xslExtensionElementPrefixesAttr,
3609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       xslUseAttributeSetsAttr,
3619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       xslVersionAttr,
3629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       xslResultAttr,
3639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       resultAttr },
3649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                        new ProcessorLRE(),
3659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                     ElemLiteralResult.class /* class object */, 20, true);
3669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef unknownElement =
3679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTElementDef(this, "*", "unknown", null /*alias */,
3689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         templateElementsAndParams /* elements */,
3699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         new XSLTAttributeDef[]{ xslExcludeResultPrefixesAttr,
3709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                 xslExtensionElementPrefixesAttr,
3719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                 xslUseAttributeSetsAttr,
3729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                 xslVersionAttr,
3739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                 xslResultAttr,
3749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                 resultAttr },
3759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                                                                 new ProcessorUnknown(),
3769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         ElemUnknown.class /* class object */, 20, true);
3779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslValueOf = new XSLTElementDef(this,
3789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  Constants.S_XSLNAMESPACEURL, "value-of",
3799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  null /*alias */, null /* elements */,
3809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTAttributeDef[]{ selectAttrRequired,
3819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                          disableOutputEscapingAttr },
3829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                               new ProcessorTemplateElem(),
3839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  ElemValueOf.class /* class object */, 20, true);
3849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslCopyOf = new XSLTElementDef(this,
3859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 Constants.S_XSLNAMESPACEURL, "copy-of",
3869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 null /*alias */, null /* elements */,
3879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 new XSLTAttributeDef[]{ selectAttrRequired },
3889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 new ProcessorTemplateElem(),
3899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 ElemCopyOf.class /* class object */, 20, true);
3909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslNumber = new XSLTElementDef(this,
3919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 Constants.S_XSLNAMESPACEURL, "number",
3929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 null /*alias */, null /* elements */,
3939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 new XSLTAttributeDef[]{ levelAttr,
3949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                         countAttr,
3959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                         fromAttr,
3969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                         valueAttr,
3979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                         formatAttr,
3989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                         langAttr,
3999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                         letterValueAttr,
4009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                         groupingSeparatorAVT,
4019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                         groupingSizeAttr },
4029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                        new ProcessorTemplateElem(),
4039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 ElemNumber.class /* class object */, 20, true);
4049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // <!-- xsl:sort cannot occur after any other elements or
4069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // any non-whitespace character -->
4079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslSort = new XSLTElementDef(this,
4089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                Constants.S_XSLNAMESPACEURL,
4099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                "sort", null /*alias */,
4109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                null /* elements */,
4119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                new XSLTAttributeDef[]{
4129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  selectAttrDefDot,
4139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  langAttr,
4149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  dataTypeAttr,
4159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  orderAttr,
4169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  caseOrderAttr },
4179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       new ProcessorTemplateElem(),
4189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                ElemSort.class/* class object */, 19, true );
4199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslWithParam = new XSLTElementDef(this,
4209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    Constants.S_XSLNAMESPACEURL,
4219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    "with-param", null /*alias */,
4229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    templateElements /* elements */,  // %template;>
4239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    new XSLTAttributeDef[]{ nameAttrRequired,
4249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                            selectAttrOpt }, new ProcessorTemplateElem(),
4259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                                             ElemWithParam.class /* class object */, 19, true);
4269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslApplyTemplates = new XSLTElementDef(this,
4279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         Constants.S_XSLNAMESPACEURL,
4289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         "apply-templates", null /*alias */,
4299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         new XSLTElementDef[]{ xslSort,
4309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                               xslWithParam } /* elements */, new XSLTAttributeDef[]{
4319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                                 selectAttrDefNode,
4329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                                 modeAttr },
4339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                                        new ProcessorTemplateElem(),
4349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         ElemApplyTemplates.class /* class object */, 20, true);
4359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslApplyImports =
4369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "apply-imports",
4379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         null /*alias */, null /* elements */,
4389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         new XSLTAttributeDef[]{},
4399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         new ProcessorTemplateElem(),
4409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         ElemApplyImport.class /* class object */);
4419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslForEach = new XSLTElementDef(this,
4429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  Constants.S_XSLNAMESPACEURL, "for-each",
4439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  null /*alias */, templateElementsAndSort,  // (#PCDATA %instructions; %result-elements; | xsl:sort)*
4449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTAttributeDef[]{ selectAttrRequired,
4459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                          spaceAttr },
4469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                               new ProcessorTemplateElem(),
4479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  ElemForEach.class /* class object */, true, false, true, 20, true);
4489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslIf = new XSLTElementDef(this,
4499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                              Constants.S_XSLNAMESPACEURL,
4509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                              "if", null /*alias */,
4519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                              templateElements /* elements */,  // %template;
4529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                              new XSLTAttributeDef[]{
4539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                testAttrRequired,
4549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                spaceAttr }, new ProcessorTemplateElem(),
4559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                             ElemIf.class /* class object */, 20, true);
4569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslWhen =
4579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "when",
4589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         null /*alias */, templateElements /* elements */,  // %template;>
4599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                new XSLTAttributeDef[]{
4609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  testAttrRequired,
4619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  spaceAttr }, new ProcessorTemplateElem(),
4629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                               ElemWhen.class /* class object */,
4639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                                                                false, true, 1, true);
4649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslOtherwise = new XSLTElementDef(this,
4659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    Constants.S_XSLNAMESPACEURL, "otherwise",
4669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    null /*alias */,
4679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    templateElements /* elements */,  // %template;>
4689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    new XSLTAttributeDef[]{ spaceAttr },
4699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    new ProcessorTemplateElem(),
4709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    ElemOtherwise.class /* class object */,
4719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                       false, false, 2, false);
4729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslChoose = new XSLTElementDef(this,
4739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 Constants.S_XSLNAMESPACEURL, "choose",
4749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 null /*alias */,
4759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 new XSLTElementDef[]{ xslWhen,
4769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                       xslOtherwise } /* elements */,
4779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                        new XSLTAttributeDef[]{ spaceAttr },
4789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 new ProcessorTemplateElem(),
4799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 ElemChoose.class /* class object */, true, false, true, 20, true);
4809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslAttribute = new XSLTElementDef(this,
4819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    Constants.S_XSLNAMESPACEURL, "attribute",
4829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    null /*alias */,
4839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    charTemplateElements /* elements */,  // %char-template;>
4849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    new XSLTAttributeDef[]{ nameAVTRequired,
4859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                            namespaceAVTOpt,
4869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                            spaceAttr },
4879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    new ProcessorTemplateElem(),
4889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    ElemAttribute.class /* class object */, 20, true);
4899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslCallTemplate =
4909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "call-template",
4919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         null /*alias */,
4929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         new XSLTElementDef[]{ xslWithParam } /* elements */,
4939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         new XSLTAttributeDef[]{ nameAttrRequired },
4949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         new ProcessorTemplateElem(),
4959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         ElemCallTemplate.class /* class object */, 20, true);
4969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslVariable = new XSLTElementDef(this,
4979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   Constants.S_XSLNAMESPACEURL, "variable",
4989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   null /*alias */,
4999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   templateElements /* elements */,  // %template;>
5009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   new XSLTAttributeDef[]{ nameAttrRequired,
5019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                           selectAttrOpt },
5029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new ProcessorTemplateElem(),
5039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   ElemVariable.class /* class object */, 20, true);
5049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslParam = new XSLTElementDef(this,
5059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                Constants.S_XSLNAMESPACEURL, "param",
5069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                null /*alias */,
5079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                templateElements /* elements */,  // %template;>
5089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                new XSLTAttributeDef[]{ nameAttrRequired,
5099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        selectAttrOpt },
5109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       new ProcessorTemplateElem(),
5119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                ElemParam.class /* class object */, 19, true);
5129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslText =
5139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "text",
5149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         null /*alias */,
5159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         new XSLTElementDef[]{ charData } /* elements */,
5169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         new XSLTAttributeDef[]{ disableOutputEscapingAttr },
5179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         new ProcessorText(),
5189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         ElemText.class /* class object */, 20, true);
5199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslProcessingInstruction =
5209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL,
5219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         "processing-instruction", null /*alias */,
5229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         charTemplateElements /* elements */,  // %char-template;>
5239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         new XSLTAttributeDef[]{
5249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  nameAVT_NCNAMERequired,
5259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  spaceAttr },
5269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                        new ProcessorTemplateElem(),
5279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                          ElemPI.class /* class object */, 20, true);
5289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslElement = new XSLTElementDef(this,
5299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  Constants.S_XSLNAMESPACEURL, "element",
5309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  null /*alias */,
5319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  templateElements /* elements */,  // %template;
5329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTAttributeDef[]{ nameAVTRequired,
5339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                          namespaceAVTOpt,
5349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                          useAttributeSetsAttr,
5359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                          spaceAttr },
5369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                               new ProcessorTemplateElem(),
5379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  ElemElement.class /* class object */, 20, true);
5389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslComment = new XSLTElementDef(this,
5399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  Constants.S_XSLNAMESPACEURL, "comment",
5409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  null /*alias */,
5419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  charTemplateElements /* elements */,  // %char-template;>
5429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTAttributeDef[]{ spaceAttr },
5439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new ProcessorTemplateElem(),
5449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  ElemComment.class /* class object */, 20, true);
5459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslCopy =
5469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "copy",
5479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                         null /*alias */, templateElements /* elements */,  // %template;>
5489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                          new XSLTAttributeDef[]{
5499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  spaceAttr,
5509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  useAttributeSetsAttr },
5519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                        new ProcessorTemplateElem(),
5529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                          ElemCopy.class /* class object */, 20, true);
5539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslMessage = new XSLTElementDef(this,
5549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  Constants.S_XSLNAMESPACEURL, "message",
5559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  null /*alias */,
5569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  templateElements /* elements */,  // %template;>
5579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTAttributeDef[]{ terminateAttr },
5589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new ProcessorTemplateElem(),
5599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  ElemMessage.class /* class object */, 20, true);
5609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef xslFallback = new XSLTElementDef(this,
5619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   Constants.S_XSLNAMESPACEURL, "fallback",
5629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   null /*alias */,
5639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   templateElements /* elements */,  // %template;>
5649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   new XSLTAttributeDef[]{ spaceAttr },
5659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   new ProcessorTemplateElem(),
5669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   ElemFallback.class /* class object */, 20, true);
5679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    //exslt
5689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef exsltFunction =
5699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTElementDef(this,
5709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  Constants.S_EXSLT_FUNCTIONS_URL,
5719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  "function",
5729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  null /*alias */,
5739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  exsltFunctionElements /* elements */,
5749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTAttributeDef[]{ nameAttrRequired },
5759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new ProcessorExsltFunction(),
5769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  ElemExsltFunction.class /* class object */);
5779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef exsltResult =
5789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTElementDef(this,
5799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  Constants.S_EXSLT_FUNCTIONS_URL,
5809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  "result",
5819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  null /*alias */,
5829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  templateElements /* elements */,
5839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTAttributeDef[]{ selectAttrOpt },
5849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new ProcessorExsltFuncResult(),
5859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  ElemExsltFuncResult.class  /* class object */);
5869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    int i = 0;
5899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = charData;  // #PCDATA
5919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // char-instructions
5939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslApplyTemplates;
5949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslCallTemplate;
5959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslApplyImports;
5969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslForEach;
5979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslValueOf;
5989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslCopyOf;
5999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslNumber;
6009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslChoose;
6019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslIf;
6029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslText;
6039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslCopy;
6049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslVariable;
6059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslMessage;
6069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslFallback;
6079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // instructions
6099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslProcessingInstruction;
6109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslComment;
6119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslElement;
6129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = xslAttribute;
6139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = resultElement;
6149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = unknownElement;
6159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = exsltFunction;
6169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElements[i++] = exsltResult;
6179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    System.arraycopy(templateElements, 0, templateElementsAndParams, 0, i);
6199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    System.arraycopy(templateElements, 0, templateElementsAndSort, 0, i);
6209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    System.arraycopy(templateElements, 0, exsltFunctionElements, 0, i);
6219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElementsAndParams[i] = xslParam;
6239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    templateElementsAndSort[i] = xslSort;
6249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    exsltFunctionElements[i]   = xslParam;
6259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    i = 0;
6279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charTemplateElements[i++] = charData;  // #PCDATA
6289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // char-instructions
6309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charTemplateElements[i++] = xslApplyTemplates;
6319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charTemplateElements[i++] = xslCallTemplate;
6329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charTemplateElements[i++] = xslApplyImports;
6339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charTemplateElements[i++] = xslForEach;
6349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charTemplateElements[i++] = xslValueOf;
6359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charTemplateElements[i++] = xslCopyOf;
6369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charTemplateElements[i++] = xslNumber;
6379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charTemplateElements[i++] = xslChoose;
6389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charTemplateElements[i++] = xslIf;
6399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charTemplateElements[i++] = xslText;
6409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charTemplateElements[i++] = xslCopy;
6419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charTemplateElements[i++] = xslVariable;
6429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charTemplateElements[i++] = xslMessage;
6439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    charTemplateElements[i++] = xslFallback;
6449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef importDef = new XSLTElementDef(this,
6469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 Constants.S_XSLNAMESPACEURL, "import",
6479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 null /*alias */, null /* elements */,
6489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 new XSLTAttributeDef[]{ hrefAttr },  // EMPTY
6499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 new ProcessorImport(),
6509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 null /* class object */,
6519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                        1, true);
6529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef includeDef = new XSLTElementDef(this,
6539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  Constants.S_XSLNAMESPACEURL, "include",
6549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  null /*alias */, null /* elements */,  // EMPTY
6559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTAttributeDef[]{ hrefAttr },
6569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new ProcessorInclude(),
6579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  null /* class object */,
6589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                               20, true);
6599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef[] scriptAttrs = new XSLTAttributeDef[]{
6619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    					    new XSLTAttributeDef(null, "lang", XSLTAttributeDef.T_NMTOKEN,
6629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                                 true, false,XSLTAttributeDef.WARNING),
6639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                            new XSLTAttributeDef(null, "src", XSLTAttributeDef.T_URL,
6649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                            			 false, false,XSLTAttributeDef.WARNING)};
6659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef[] componentAttrs = new XSLTAttributeDef[]{
6679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                            new XSLTAttributeDef(null, "prefix", XSLTAttributeDef.T_NMTOKEN,
6689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                            			 true, false,XSLTAttributeDef.WARNING),
6699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                            new XSLTAttributeDef(null, "elements", XSLTAttributeDef.T_STRINGLIST,
6709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                            			 false, false,XSLTAttributeDef.WARNING),
6719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                            new XSLTAttributeDef(null, "functions", XSLTAttributeDef.T_STRINGLIST,
6729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                            			 false, false,XSLTAttributeDef.WARNING) };
6739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef[] topLevelElements = new XSLTElementDef[]
6759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 {includeDef,
6769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  importDef,
6779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  // resultElement,
6789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  whiteSpaceOnly,
6799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  unknownElement,
6809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTElementDef(
6819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         this,
6829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         Constants.S_XSLNAMESPACEURL,
6839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         "strip-space",
6849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         null /*alias */,
6859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         null /* elements */,
6869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         new XSLTAttributeDef[]{
6879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                elementsAttr },
6889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                new ProcessorStripSpace(),
6899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         null /* class object */, 20, true),
6909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTElementDef(
6919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         this,
6929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         Constants.S_XSLNAMESPACEURL,
6939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         "preserve-space",
6949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         null /*alias */,
6959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         null /* elements */,
6969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         new XSLTAttributeDef[]{
6979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                 elementsAttr },
6989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                 new ProcessorPreserveSpace(),
6999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         null /* class object */, 20, true),
7009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTElementDef(
7019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         this,
7029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         Constants.S_XSLNAMESPACEURL,
7039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         "output",
7049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         null /*alias */,
7059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         null /* elements */,
7069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         new XSLTAttributeDef[]{
7079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  methodAttr,
7089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  versionAttr,
7099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  encodingAttr,
7109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  omitXmlDeclarationAttr,
7119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  standaloneAttr,
7129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  doctypePublicAttr,
7139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  doctypeSystemAttr,
7149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  cdataSectionElementsAttr,
7159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  indentAttr,
7169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  mediaTypeAttr,
7179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  XSLTAttributeDef.m_foreignAttr },
7189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          new ProcessorOutputElem(), null /* class object */, 20, true),
7199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTElementDef(
7209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          this,
7219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          Constants.S_XSLNAMESPACEURL,
7229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          "key",
7239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          null /*alias */,
7249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          null /* elements */,  // EMPTY
7259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          new XSLTAttributeDef[]{ nameAttrRequired,
7269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  matchAttrRequired,
7279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  useAttr },
7289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          new ProcessorKey(), null /* class object */, 20, true),
7299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTElementDef(
7309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          this,
7319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          Constants.S_XSLNAMESPACEURL,
7329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          "decimal-format",
7339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          null /*alias */,
7349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          null /* elements */,  // EMPTY
7359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          new XSLTAttributeDef[]{
7369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  nameAttrOpt_ERROR,
7379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  decimalSeparatorAttr,
7389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  groupingSeparatorAttr,
7399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  infinityAttr,
7409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  minusSignAttr,
7419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  NaNAttr,
7429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  percentAttr,
7439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  perMilleAttr,
7449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  zeroDigitAttr,
7459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  digitAttr,
7469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  patternSeparatorAttr },
7479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new ProcessorDecimalFormat(),
7489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           null /* class object */, 20, true),
7499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTElementDef(
7509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           this,
7519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           Constants.S_XSLNAMESPACEURL,
7529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           "attribute-set",
7539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           null /*alias */,
7549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new XSLTElementDef[]{
7559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   xslAttribute } /* elements */,
7569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new XSLTAttributeDef[]{
7579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   nameAttrRequired,
7589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   useAttributeSetsAttr },
7599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new ProcessorAttributeSet(),
7609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           null /* class object */, 20, true),
7619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTElementDef(
7629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           this,
7639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           Constants.S_XSLNAMESPACEURL,
7649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           "variable",
7659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           null /*alias */,
7669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           templateElements /* elements */,
7679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new XSLTAttributeDef[]{
7689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   nameAttrRequired,
7699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   selectAttrOpt },
7709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new ProcessorGlobalVariableDecl(),
7719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           ElemVariable.class /* class object */, 20, true),
7729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTElementDef(
7739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           this,
7749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           Constants.S_XSLNAMESPACEURL,
7759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           "param",
7769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           null /*alias */,
7779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           templateElements /* elements */,
7789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new XSLTAttributeDef[]{
7799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   nameAttrRequired,
7809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   selectAttrOpt },
7819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new ProcessorGlobalParamDecl(),
7829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           ElemParam.class /* class object */, 20, true),
7839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTElementDef(
7849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           this,
7859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           Constants.S_XSLNAMESPACEURL,
7869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           "template",
7879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           null /*alias */,
7889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           templateElementsAndParams /* elements */,
7899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new XSLTAttributeDef[]{
7909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   matchAttrOpt,
7919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   nameAttrOpt_ERROR,
7929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   priorityAttr,
7939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   modeAttr,
7949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   spaceAttr },
7959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new ProcessorTemplate(), ElemTemplate.class /* class object */, true, 20, true),
7969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTElementDef(
7979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           this,
7989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           Constants.S_XSLNAMESPACEURL,
7999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           "namespace-alias",
8009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           null /*alias */,
8019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                          null /* elements */,  // EMPTY
8029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new XSLTAttributeDef[]{
8039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   stylesheetPrefixAttr,
8049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                   resultPrefixAttr },
8059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new ProcessorNamespaceAlias(), null /* class object */, 20, true),
8069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTElementDef(
8079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           this,
8089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           Constants.S_BUILTIN_EXTENSIONS_URL,
8099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           "component",
8109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           null /*alias */,
8119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new XSLTElementDef[]{
8129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                    new XSLTElementDef(
8139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        this,
8149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        Constants.S_BUILTIN_EXTENSIONS_URL,
8159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        "script",
8169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        null /*alias */,
8179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                    	new XSLTElementDef[]{
8189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        charData } /* elements */,
8199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        scriptAttrs,
8209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        new ProcessorLRE(),
8219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        ElemExtensionScript.class /* class object */, 20, true) },  // EMPTY
8229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           componentAttrs,
8239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new ProcessorLRE(), ElemExtensionDecl.class /* class object */),
8249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  new XSLTElementDef(
8259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           this,
8269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           Constants.S_BUILTIN_OLD_EXTENSIONS_URL,
8279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           "component",
8289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           null /*alias */,
8299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new XSLTElementDef[]{
8309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                    new XSLTElementDef(
8319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        this,
8329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        Constants.S_BUILTIN_OLD_EXTENSIONS_URL,
8339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        "script",
8349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        null /*alias */,
8359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                    	new XSLTElementDef[]{
8369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        charData } /* elements */,
8379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        scriptAttrs,
8389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        new ProcessorLRE(),
8399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                        ElemExtensionScript.class /* class object */, 20, true) },  // EMPTY
8409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           componentAttrs,
8419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           new ProcessorLRE(), ElemExtensionDecl.class /* class object */),
8429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                  exsltFunction}/* exslt */;  //end of topevelElements
8439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef excludeResultPrefixesAttr =
8459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTAttributeDef(null, "exclude-result-prefixes",
8469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           XSLTAttributeDef.T_PREFIXLIST, false,false,XSLTAttributeDef.WARNING);
8479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef extensionElementPrefixesAttr =
8489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      new XSLTAttributeDef(null, "extension-element-prefixes",
8499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           XSLTAttributeDef.T_PREFIX_URLLIST, false,false,XSLTAttributeDef.WARNING);
8509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef idAttr = new XSLTAttributeDef(null, "id",
8519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                XSLTAttributeDef.T_CDATA, false,false,XSLTAttributeDef.WARNING);
8529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTAttributeDef versionAttrRequired = new XSLTAttributeDef(null,
8539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                             "version",
8549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                             XSLTAttributeDef.T_NMTOKEN,
8559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                             true,false,XSLTAttributeDef.WARNING);
8569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    XSLTElementDef stylesheetElemDef = new XSLTElementDef(this,
8579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         Constants.S_XSLNAMESPACEURL,
8589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         "stylesheet", "transform",
8599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         topLevelElements,
8609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         new XSLTAttributeDef[]{
8619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           extensionElementPrefixesAttr,
8629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           excludeResultPrefixesAttr,
8639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           idAttr,
8649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           versionAttrRequired,
8659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                           spaceAttr }, new ProcessorStylesheetElement(),  /* ContentHandler */
8669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         null  /* class object */,
8679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                         true, -1, false);
8689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    importDef.setElements(new XSLTElementDef[]{ stylesheetElemDef,
8709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                resultElement,
8719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                unknownElement });
8729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    includeDef.setElements(new XSLTElementDef[]{ stylesheetElemDef,
8739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                 resultElement,
8749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                 unknownElement });
8759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    build(null, null, null, new XSLTElementDef[]{ stylesheetElemDef,
8769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  whiteSpaceOnly,
8779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  resultElement,
8789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                  unknownElement }, null,
8799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                                    new ProcessorStylesheetDoc(),  /* ContentHandler */
8809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                                    null  /* class object */
8819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                                      );
8829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
8839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
8859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * A hashtable of all available built-in elements for use by the element-available
8869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * function.
8879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * TODO:  When we convert to Java2, this should be a Set.
8889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
8899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private HashMap m_availElems = new HashMap();
8909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
8929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the table of available elements.
8939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return table of available elements, keyed by qualified names, and with
8959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * values of the same qualified names.
8969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
8979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public HashMap getElemsAvailable()
8989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
8999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return m_availElems;
9009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
9019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
9039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Adds a new element name to the Hashtable of available elements.
9049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param elemName The name of the element to add to the Hashtable of available elements.
9059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
9069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  void addAvailableElement(QName elemName)
9079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
9089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    m_availElems.put(elemName, elemName);
9099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
9109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
9129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Determines whether the passed element name is present in the list of available elements.
9139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param elemName The name of the element to look up.
9149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return true if an element corresponding to elemName is available.
9169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
9179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public boolean elementAvailable(QName elemName)
9189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
9199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return m_availElems.containsKey(elemName);
9209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
9219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson}
9229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
923