You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by sb...@locus.apache.org on 2000/12/06 06:28:13 UTC

cvs commit: xml-xalan/java/src/org/apache/xalan/processor XSLTSchema.java

sboag       00/12/05 21:28:13

  Modified:    java/src/org/apache/xalan/processor XSLTSchema.java
  Log:
  Add foregn attribute handling to xsl:output.
  
  Revision  Changes    Path
  1.14      +127 -103  xml-xalan/java/src/org/apache/xalan/processor/XSLTSchema.java
  
  Index: XSLTSchema.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/processor/XSLTSchema.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- XSLTSchema.java	2000/11/28 17:25:50	1.13
  +++ XSLTSchema.java	2000/12/06 05:28:12	1.14
  @@ -57,6 +57,7 @@
   package org.apache.xalan.processor;
   
   import java.util.Hashtable;
  +
   import org.apache.xalan.templates.*;
   import org.apache.xml.utils.QName;
   
  @@ -88,6 +89,8 @@
       XSLTAttributeDef elementsAttr = new XSLTAttributeDef(null, "elements",
                                         XSLTAttributeDef.T_SIMPLEPATTERNLIST,
                                         true);
  +    // XSLTAttributeDef anyNamespacedAttr = new XSLTAttributeDef("*", "*",
  +    //                                XSLTAttributeDef.T_CDATA, false);
       XSLTAttributeDef methodAttr = new XSLTAttributeDef(null, "method",
                                       XSLTAttributeDef.T_QNAME, false);
       XSLTAttributeDef versionAttr = new XSLTAttributeDef(null, "version",
  @@ -286,21 +289,21 @@
                                                    xslResultAttr,
                                                    resultAttr }, new ProcessorUnknown(),
                                                                  ElemUnknown.class /* class object */);
  -    XSLTElementDef xslValueOf =
  -      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "value-of",
  -                         null /*alias */, null /* elements */,
  -                         new XSLTAttributeDef[]{ selectAttrRequired,
  -                                                 disableOutputEscapingAttr }, new ProcessorTemplateElem(),
  -                                                                              ElemValueOf.class /* class object */);
  -    XSLTElementDef xslCopyOf = new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL,
  -                                 "copy-of", null /*alias */,
  -                                 null /* elements */,
  +    XSLTElementDef xslValueOf = new XSLTElementDef(this,
  +                                  Constants.S_XSLNAMESPACEURL, "value-of",
  +                                  null /*alias */, null /* elements */,
  +                                  new XSLTAttributeDef[]{ selectAttrRequired,
  +                                                          disableOutputEscapingAttr }, new ProcessorTemplateElem(),
  +                                                                                       ElemValueOf.class /* class object */);
  +    XSLTElementDef xslCopyOf = new XSLTElementDef(this,
  +                                 Constants.S_XSLNAMESPACEURL, "copy-of",
  +                                 null /*alias */, null /* elements */,
                                    new XSLTAttributeDef[]{ selectAttrRequired },
                                    new ProcessorTemplateElem(),
                                    ElemCopyOf.class /* class object */);
  -    XSLTElementDef xslNumber = new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL,
  -                                 "number", null /*alias */,
  -                                 null /* elements */,
  +    XSLTElementDef xslNumber = new XSLTElementDef(this,
  +                                 Constants.S_XSLNAMESPACEURL, "number",
  +                                 null /*alias */, null /* elements */,
                                    new XSLTAttributeDef[]{ levelAttr,
                                                            countAttr,
                                                            fromAttr,
  @@ -314,7 +317,8 @@
   
       // <!-- xsl:sort cannot occur after any other elements or
       // any non-whitespace character -->
  -    XSLTElementDef xslSort = new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL,
  +    XSLTElementDef xslSort = new XSLTElementDef(this,
  +                                                Constants.S_XSLNAMESPACEURL,
                                                   "sort", null /*alias */,
                                                   null /* elements */,
                                                   new XSLTAttributeDef[]{
  @@ -324,32 +328,35 @@
                                                     orderAttr,
                                                     caseOrderAttr }, new ProcessorTemplateElem(),
                                                                      ElemSort.class /* class object */);
  -    XSLTElementDef xslWithParam =
  -      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "with-param",
  -                         null /*alias */, templateElements /* elements */,  // %template;>
  +    XSLTElementDef xslWithParam = new XSLTElementDef(this,
  +                                    Constants.S_XSLNAMESPACEURL,
  +                                    "with-param", null /*alias */,
  +                                    templateElements /* elements */,  // %template;>
                                       new XSLTAttributeDef[]{ nameAttrRequired,
                                                               selectAttrOpt }, new ProcessorTemplateElem(),
                                                                                ElemWithParam.class /* class object */);
  -    XSLTElementDef xslApplyTemplates =
  -      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "apply-templates",
  -                         null /*alias */, new XSLTElementDef[]{ xslSort,
  -                                                                xslWithParam } /* elements */, new XSLTAttributeDef[]{
  -                                                                  selectAttrDefNode,
  -                                                                  modeAttr }, new ProcessorTemplateElem(),
  -                                                                              ElemApplyTemplates.class /* class object */);
  +    XSLTElementDef xslApplyTemplates = new XSLTElementDef(this,
  +                                         Constants.S_XSLNAMESPACEURL,
  +                                         "apply-templates", null /*alias */,
  +                                         new XSLTElementDef[]{ xslSort,
  +                                                               xslWithParam } /* elements */, new XSLTAttributeDef[]{
  +                                                                 selectAttrDefNode,
  +                                                                 modeAttr }, new ProcessorTemplateElem(),
  +                                                                             ElemApplyTemplates.class /* class object */);
       XSLTElementDef xslApplyImports =
         new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "apply-imports",
                            null /*alias */, null /* elements */,
                            new XSLTAttributeDef[]{},
                            new ProcessorTemplateElem(),
                            ElemApplyImport.class /* class object */);
  -    XSLTElementDef xslForEach =
  -      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "for-each",
  -                         null /*alias */, templateElementsAndSort,  // (#PCDATA %instructions; %result-elements; | xsl:sort)*
  +    XSLTElementDef xslForEach = new XSLTElementDef(this,
  +                                  Constants.S_XSLNAMESPACEURL, "for-each",
  +                                  null /*alias */, templateElementsAndSort,  // (#PCDATA %instructions; %result-elements; | xsl:sort)*
                                     new XSLTAttributeDef[]{ selectAttrRequired,
                                                             spaceAttr }, new ProcessorTemplateElem(),
                                                                          ElemForEach.class /* class object */);
  -    XSLTElementDef xslIf = new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL,
  +    XSLTElementDef xslIf = new XSLTElementDef(this,
  +                                              Constants.S_XSLNAMESPACEURL,
                                                 "if", null /*alias */,
                                                 templateElements /* elements */,  // %template;
                                                 new XSLTAttributeDef[]{
  @@ -363,21 +370,24 @@
                                                     testAttrRequired,
                                                     spaceAttr }, new ProcessorTemplateElem(),
                                                                  ElemWhen.class /* class object */);
  -    XSLTElementDef xslOtherwise =
  -      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "otherwise",
  -                         null /*alias */, templateElements /* elements */,  // %template;>
  +    XSLTElementDef xslOtherwise = new XSLTElementDef(this,
  +                                    Constants.S_XSLNAMESPACEURL, "otherwise",
  +                                    null /*alias */,
  +                                    templateElements /* elements */,  // %template;>
                                       new XSLTAttributeDef[]{ spaceAttr },
                                       new ProcessorTemplateElem(),
                                       ElemOtherwise.class /* class object */);
  -    XSLTElementDef xslChoose = new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL,
  -                                 "choose", null /*alias */,
  +    XSLTElementDef xslChoose = new XSLTElementDef(this,
  +                                 Constants.S_XSLNAMESPACEURL, "choose",
  +                                 null /*alias */,
                                    new XSLTElementDef[]{ xslWhen,
                                                          xslOtherwise } /* elements */, new XSLTAttributeDef[]{ spaceAttr },
                                                                                         new ProcessorTemplateElem(),
                                                                                         ElemChoose.class /* class object */);
  -    XSLTElementDef xslAttribute =
  -      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "attribute",
  -                         null /*alias */, charTemplateElements /* elements */,  // %char-template;>
  +    XSLTElementDef xslAttribute = new XSLTElementDef(this,
  +                                    Constants.S_XSLNAMESPACEURL, "attribute",
  +                                    null /*alias */,
  +                                    charTemplateElements /* elements */,  // %char-template;>
                                       new XSLTAttributeDef[]{ nameAVTRequired,
                                                               namespaceAVTOpt,
                                                               spaceAttr }, new ProcessorTemplateElem(),
  @@ -389,14 +399,16 @@
                            new XSLTAttributeDef[]{ nameAttrRequired },
                            new ProcessorTemplateElem(),
                            ElemCallTemplate.class /* class object */);
  -    XSLTElementDef xslVariable =
  -      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "variable",
  -                         null /*alias */, templateElements /* elements */,  // %template;>
  +    XSLTElementDef xslVariable = new XSLTElementDef(this,
  +                                   Constants.S_XSLNAMESPACEURL, "variable",
  +                                   null /*alias */,
  +                                   templateElements /* elements */,  // %template;>
                                      new XSLTAttributeDef[]{ nameAttrRequired,
                                                              selectAttrOpt }, new ProcessorTemplateElem(),
                                                                               ElemVariable.class /* class object */);
  -    XSLTElementDef xslParam = new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL,
  -                                "param", null /*alias */,
  +    XSLTElementDef xslParam = new XSLTElementDef(this,
  +                                Constants.S_XSLNAMESPACEURL, "param",
  +                                null /*alias */,
                                   templateElements /* elements */,  // %template;>
                                   new XSLTAttributeDef[]{ nameAttrRequired,
                                                           selectAttrOpt }, new ProcessorTemplateElem(),
  @@ -416,17 +428,19 @@
                                                     nameAVTRequired,
                                                     spaceAttr }, new ProcessorTemplateElem(),
                                                                  ElemPI.class /* class object */);
  -    XSLTElementDef xslElement =
  -      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "element",
  -                         null /*alias */, templateElements /* elements */,  // %template;
  +    XSLTElementDef xslElement = new XSLTElementDef(this,
  +                                  Constants.S_XSLNAMESPACEURL, "element",
  +                                  null /*alias */,
  +                                  templateElements /* elements */,  // %template;
                                     new XSLTAttributeDef[]{ nameAVTRequired,
                                                             namespaceAVTOpt,
                                                             useAttributeSetsAttr,
                                                             spaceAttr }, new ProcessorTemplateElem(),
                                                                          ElemElement.class /* class object */);
  -    XSLTElementDef xslComment =
  -      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "comment",
  -                         null /*alias */, charTemplateElements /* elements */,  // %char-template;>
  +    XSLTElementDef xslComment = new XSLTElementDef(this,
  +                                  Constants.S_XSLNAMESPACEURL, "comment",
  +                                  null /*alias */,
  +                                  charTemplateElements /* elements */,  // %char-template;>
                                     new XSLTAttributeDef[]{ spaceAttr },
                                     new ProcessorTemplateElem(),
                                     ElemComment.class /* class object */);
  @@ -437,15 +451,17 @@
                                                     spaceAttr,
                                                     useAttributeSetsAttr }, new ProcessorTemplateElem(),
                                                                             ElemCopy.class /* class object */);
  -    XSLTElementDef xslMessage =
  -      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "message",
  -                         null /*alias */, templateElements /* elements */,  // %template;>
  -                                  new XSLTAttributeDef[]{terminateAttr},
  +    XSLTElementDef xslMessage = new XSLTElementDef(this,
  +                                  Constants.S_XSLNAMESPACEURL, "message",
  +                                  null /*alias */,
  +                                  templateElements /* elements */,  // %template;>
  +                                  new XSLTAttributeDef[]{ terminateAttr },
                                     new ProcessorTemplateElem(),
                                     ElemMessage.class /* class object */);
  -    XSLTElementDef xslFallback =
  -      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "fallback",
  -                         null /*alias */, templateElements /* elements */,  // %template;>
  +    XSLTElementDef xslFallback = new XSLTElementDef(this,
  +                                   Constants.S_XSLNAMESPACEURL, "fallback",
  +                                   null /*alias */,
  +                                   templateElements /* elements */,  // %template;>
                                      new XSLTAttributeDef[]{ spaceAttr },
                                      new ProcessorTemplateElem(),
                                      ElemFallback.class /* class object */);
  @@ -511,15 +527,15 @@
       charTemplateElements[i++] = xslMessage;
       charTemplateElements[i++] = xslFallback;
   
  -    XSLTElementDef importDef = new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL,
  -                                 "import", null /*alias */,
  -                                 null /* elements */,
  +    XSLTElementDef importDef = new XSLTElementDef(this,
  +                                 Constants.S_XSLNAMESPACEURL, "import",
  +                                 null /*alias */, null /* elements */,
                                    new XSLTAttributeDef[]{ hrefAttr },  // EMPTY
                                    new ProcessorImport(),
                                    null /* class object */);
  -    XSLTElementDef includeDef =
  -      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "include",
  -                         null /*alias */, null /* elements */,  // EMPTY
  +    XSLTElementDef includeDef = new XSLTElementDef(this,
  +                                  Constants.S_XSLNAMESPACEURL, "include",
  +                                  null /*alias */, null /* elements */,  // EMPTY
                                     new XSLTAttributeDef[]{ hrefAttr },
                                     new ProcessorInclude(),
                                     null /* class object */);
  @@ -533,44 +549,48 @@
                                                                   Constants.S_XSLNAMESPACEURL,
                                                                   "strip-space",
                                                                   null /*alias */,
  -                                                                null /* elements */,  // EMPTY
  -                                                                                                 new XSLTAttributeDef[]{ elementsAttr },
  -                                                                                                 new ProcessorStripSpace(),
  -                                                                                                 null /* class object */),
  +                                                                null /* elements */,
  +                                                                new XSLTAttributeDef[]{
  +                                                                elementsAttr },
  +                                                                new ProcessorStripSpace(),
  +                                                                null /* class object */),
                                                                 new XSLTElementDef(
                                                                   this,
                                                                   Constants.S_XSLNAMESPACEURL,
                                                                   "preserve-space",
                                                                   null /*alias */,
  -                                                                null /* elements */,  // EMPTY
  -                                                                                 new XSLTAttributeDef[]{ elementsAttr },
  -                                                                                 new ProcessorPreserveSpace(),
  -                                                                                 null /* class object */),
  +                                                                null /* elements */,
  +                                                                new XSLTAttributeDef[]{
  +                                                                elementsAttr },
  +                                                                new ProcessorPreserveSpace(),
  +                                                                null /* class object */),
                                                                 new XSLTElementDef(
                                                                   this,
                                                                   Constants.S_XSLNAMESPACEURL,
                                                                   "output",
                                                                   null /*alias */,
  -                                                                null /* elements */,  // EMPTY
  -                                                                                 new XSLTAttributeDef[]{
  -                                                                                   methodAttr,
  -                                                                                   versionAttr,
  -                                                                                   encodingAttr,
  -                                                                                   omitXmlDeclarationAttr,
  -                                                                                   standaloneAttr,
  -                                                                                   doctypePublicAttr,
  -                                                                                   doctypeSystemAttr,
  -                                                                                   cdataSectionElementsAttr,
  -                                                                                   indentAttr,
  -                                                                                   mediaTypeAttr }, new ProcessorOutputElem(), null /* class object */), new XSLTElementDef(
  -                                                                                     this,
  -                                                                                     Constants.S_XSLNAMESPACEURL,
  -                                                                                     "key",
  -                                                                                     null /*alias */,
  -                                                                                     null /* elements */,  // EMPTY
  -                                                                                                                                                                                                  new XSLTAttributeDef[]{ nameAttrRequired,
  -                                                                                                                                                                                                                          matchAttrRequired,
  -                                                                                                                                                                                                                          useAttr }, new ProcessorKey(), null /* class object */),
  +                                                                null /* elements */,
  +                                                                new XSLTAttributeDef[]{
  +                                                                  methodAttr,
  +                                                                  versionAttr,
  +                                                                  encodingAttr,
  +                                                                  omitXmlDeclarationAttr,
  +                                                                  standaloneAttr,
  +                                                                  doctypePublicAttr,
  +                                                                  doctypeSystemAttr,
  +                                                                  cdataSectionElementsAttr,
  +                                                                  indentAttr,
  +                                                                  mediaTypeAttr,
  +                                                                  XSLTAttributeDef.m_foreignAttr }, 
  +                                                                  new ProcessorOutputElem(), null /* class object */), new XSLTElementDef(
  +                                                                    this,
  +                                                                    Constants.S_XSLNAMESPACEURL,
  +                                                                    "key",
  +                                                                    null /*alias */,
  +                                                                    null /* elements */,  // EMPTY
  +                                                                                                                                                                                                                                                                                     new XSLTAttributeDef[]{ nameAttrRequired,
  +                                                                                                                                                                                                                                                                                                             matchAttrRequired,
  +                                                                                                                                                                                                                                                                                                             useAttr }, new ProcessorKey(), null /* class object */),
                                                                 new XSLTElementDef(
                                                                   this,
                                                                   Constants.S_XSLNAMESPACEURL,
  @@ -638,8 +658,8 @@
                                                                       "namespace-alias",
                                                                       null /*alias */,
                                                                       null /* elements */,  // EMPTY
  -                                                                                                                                                                                                                                                                                                              new XSLTAttributeDef[]{ stylesheetPrefixAttr,
  -                                                                                                                                                                                                                                                                                                                                      resultPrefixAttr }, new ProcessorNamespaceAlias(), null /* class object */),
  +                                                                                                                                                                                                                                                                                                                    new XSLTAttributeDef[]{ stylesheetPrefixAttr,
  +                                                                                                                                                                                                                                                                                                                                            resultPrefixAttr }, new ProcessorNamespaceAlias(), null /* class object */),
                                                                 new XSLTElementDef(
                                                                   this,
                                                                   Constants.S_BUILTIN_EXTENSIONS_URL,
  @@ -660,9 +680,9 @@
                                                                           true),
                                                                         new XSLTAttributeDef(null, "src", XSLTAttributeDef.T_URL, false) }, new ProcessorLRE(),
                                                                                                                                             ElemExtensionScript.class /* class object */) },  // EMPTY
  -                                                                                                                                                                                                                                                                                                                                    new XSLTAttributeDef[]{ new XSLTAttributeDef(null, "prefix", XSLTAttributeDef.T_NMTOKEN, true),
  -                                                                                                                                                                                                                                                                                                                                                            new XSLTAttributeDef(null, "elements", XSLTAttributeDef.T_STRINGLIST, false),
  -                                                                                                                                                                                                                                                                                                                                                            new XSLTAttributeDef(null, "functions", XSLTAttributeDef.T_STRINGLIST, false) }, new ProcessorLRE(), ElemExtensionDecl.class /* class object */) };
  +                                                                                                                                                                                                                                                                                                                                                new XSLTAttributeDef[]{ new XSLTAttributeDef(null, "prefix", XSLTAttributeDef.T_NMTOKEN, true),
  +                                                                                                                                                                                                                                                                                                                                                                        new XSLTAttributeDef(null, "elements", XSLTAttributeDef.T_STRINGLIST, false),
  +                                                                                                                                                                                                                                                                                                                                                                        new XSLTAttributeDef(null, "functions", XSLTAttributeDef.T_STRINGLIST, false) }, new ProcessorLRE(), ElemExtensionDecl.class /* class object */) };
       XSLTAttributeDef excludeResultPrefixesAttr =
         new XSLTAttributeDef(null, "exclude-result-prefixes",
                              XSLTAttributeDef.T_STRINGLIST, false);
  @@ -675,16 +695,18 @@
                                                "version",
                                                XSLTAttributeDef.T_NMTOKEN,
                                                true);
  -    XSLTElementDef stylesheetElemDef =
  -      new XSLTElementDef(this, Constants.S_XSLNAMESPACEURL, "stylesheet",
  -                         "transform", topLevelElements,
  -                         new XSLTAttributeDef[]{ extensionElementPrefixesAttr,
  -                                                 excludeResultPrefixesAttr,
  -                                                 idAttr,
  -                                                 versionAttrRequired,
  -                                                 spaceAttr }, new ProcessorStylesheetElement(),  /* ContentHandler */
  -                                                                                                                                                                         null  /* class object */
  -                                                                                                                                                                           );
  +    XSLTElementDef stylesheetElemDef = new XSLTElementDef(this,
  +                                         Constants.S_XSLNAMESPACEURL,
  +                                         "stylesheet", "transform",
  +                                         topLevelElements,
  +                                         new XSLTAttributeDef[]{
  +                                           extensionElementPrefixesAttr,
  +                                           excludeResultPrefixesAttr,
  +                                           idAttr,
  +                                           versionAttrRequired,
  +                                           spaceAttr }, new ProcessorStylesheetElement(),  /* ContentHandler */
  +                                                                                                                                                                               null  /* class object */
  +                                                                                                                                                                                 );
   
       importDef.setElements(new XSLTElementDef[]{ stylesheetElemDef,
                                                   resultElement,
  @@ -704,8 +726,8 @@
     /**
      * A hashtable of all available built-in elements for use by the element-available
      * function.
  +   * TODO:  When we convert to Java2, this should be a Set.
      */
  -  // TODO:  When we convert to Java2, this should be a Set.
     private Hashtable m_availElems = new Hashtable();
   
     /**
  @@ -720,6 +742,8 @@
     /**
      * Determines whether the passed element name is present in the list of available elements.
      * @param elemName The name of the element to look up.
  +   *
  +   * @return true if an element corresponding to elemName is available.
      */
     public boolean elementAvailable(QName elemName)
     {