You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by mm...@locus.apache.org on 2000/10/05 01:20:09 UTC
cvs commit: xml-xalan/java/src/org/apache/xalan/processor StylesheetHandler.java XSLTElementDef.java XSLTSchema.java
mmidy 00/10/04 16:20:09
Modified: java/src/org/apache/xalan/processor StylesheetHandler.java
XSLTElementDef.java XSLTSchema.java
Log:
Handle xsl elements from an unsupported XSL version.
Revision Changes Path
1.9 +6 -1 xml-xalan/java/src/org/apache/xalan/processor/StylesheetHandler.java
Index: StylesheetHandler.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/processor/StylesheetHandler.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- StylesheetHandler.java 2000/08/08 00:27:22 1.8
+++ StylesheetHandler.java 2000/10/04 23:20:08 1.9
@@ -62,6 +62,7 @@
import org.apache.xalan.templates.ElemTemplateElement;
import org.apache.xalan.templates.StylesheetRoot;
import org.apache.xalan.templates.Stylesheet;
+import org.apache.xalan.templates.ElemUnknown;
import org.apache.xalan.utils.NodeConsumer;
import trax.ProcessorException;
import trax.TemplatesBuilder;
@@ -337,8 +338,12 @@
XSLTElementDef def = currentProcessor.getElemDef();
XSLTElementProcessor elemProcessor = def.getProcessorFor(uri, localName);
+ if(null == elemProcessor && Double.valueOf(getStylesheet().getVersion()).doubleValue() > Constants.XSLTVERSUPPORTED)
+ {
+ elemProcessor = def.getProcessorForUnknown(uri, localName);
+ }
if(null == elemProcessor)
- error(rawName+" is not allowed in this position in the stylesheet!", null);
+ error(rawName+" is not allowed in this position in the stylesheet!", null);
return elemProcessor;
}
1.5 +21 -0 xml-xalan/java/src/org/apache/xalan/processor/XSLTElementDef.java
Index: XSLTElementDef.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/processor/XSLTElementDef.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- XSLTElementDef.java 2000/08/29 18:14:00 1.4
+++ XSLTElementDef.java 2000/10/04 23:20:08 1.5
@@ -249,6 +249,27 @@
}
return lreDef;
}
+
+ /**
+ * Given an unknown element , get the processor
+ * for the element
+ */
+ XSLTElementProcessor getProcessorForUnknown( String uri, String localName )
+ {
+ XSLTElementProcessor lreDef = null; // return value
+ if(null == m_elements)
+ return null;
+ int n = m_elements.length;
+ for(int i = 0; i < n; i++)
+ {
+ XSLTElementDef def = m_elements[i];
+ if(def.m_name.equals("unknown"))
+ {
+ return def.m_elementProcessor;
+ }
+ }
+ return null;
+ }
/**
* The allowed attributes for this type.
1.10 +20 -7 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.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- XSLTSchema.java 2000/10/03 15:41:08 1.9
+++ XSLTSchema.java 2000/10/04 23:20:08 1.10
@@ -254,9 +254,9 @@
XSLTAttributeDef xslResultAttr
= new XSLTAttributeDef(Constants.S_XSLNAMESPACEURL, "*", XSLTAttributeDef.T_CDATA, false);
- XSLTElementDef[] templateElements = new XSLTElementDef[20];
- XSLTElementDef[] templateElementsAndParams = new XSLTElementDef[21];
- XSLTElementDef[] templateElementsAndSort = new XSLTElementDef[21];
+ XSLTElementDef[] templateElements = new XSLTElementDef[21];
+ XSLTElementDef[] templateElementsAndParams = new XSLTElementDef[22];
+ XSLTElementDef[] templateElementsAndSort = new XSLTElementDef[22];
XSLTElementDef[] charTemplateElements = new XSLTElementDef[15];
XSLTElementDef resultElement
@@ -270,6 +270,18 @@
xslVersionAttr, xslResultAttr, resultAttr},
new ProcessorLRE(),
ElemLiteralResult.class /* class object */ );
+
+ XSLTElementDef unknownElement
+ = new XSLTElementDef(null, "unknown",
+ null /*alias */,
+ templateElementsAndParams /* elements */,
+ new XSLTAttributeDef[] {
+ xslExcludeResultPrefixesAttr,
+ xslExtensionElementPrefixesAttr,
+ xslUseAttributeSetsAttr,
+ xslVersionAttr, xslResultAttr, resultAttr},
+ new ProcessorUnknown(),
+ ElemUnknown.class /* class object */ );
XSLTElementDef xslValueOf
= new XSLTElementDef(Constants.S_XSLNAMESPACEURL, "value-of",
@@ -487,6 +499,7 @@
templateElements[i++] = xslElement;
templateElements[i++] = xslAttribute;
templateElements[i++] = resultElement;
+ templateElements[i++] = unknownElement;
int k;
for(k = 0; k < i; k++)
@@ -537,7 +550,7 @@
XSLTElementDef[] topLevelElements
= new XSLTElementDef[]
- {includeDef, importDef, resultElement, whiteSpaceOnly,
+ {includeDef, importDef, resultElement, whiteSpaceOnly, unknownElement,
new XSLTElementDef(Constants.S_XSLNAMESPACEURL, "strip-space",
null /*alias */,
@@ -672,15 +685,15 @@
);
importDef.setElements(
- new XSLTElementDef[] {stylesheetElemDef, resultElement});
+ new XSLTElementDef[] {stylesheetElemDef, resultElement, unknownElement});
includeDef.setElements(
- new XSLTElementDef[] {stylesheetElemDef, resultElement});
+ new XSLTElementDef[] {stylesheetElemDef, resultElement, unknownElement});
build(null,
null,
null,
- new XSLTElementDef[] {stylesheetElemDef, whiteSpaceOnly, resultElement},
+ new XSLTElementDef[] {stylesheetElemDef, whiteSpaceOnly, resultElement, unknownElement},
null,
new ProcessorStylesheetDoc(), /* ContentHandler */
null /* class object */