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)
{
