morten 01/08/22 02:21:30
Modified: java/src/org/apache/xalan/xsltc/compiler XslElement.java
Log:
Fix for a problem with some combinations of <xsl:element> and namespace
aliasing. The output lacked the necessary namespace definitions when an
element created with <xsl:element> was given a qname with a prefix that
was mapped to some other prefix.
PR: n/a
Obtained from: n/a
Submitted by: [EMAIL PROTECTED]
Reviewed by: [EMAIL PROTECTED]
Revision Changes Path
1.11 +16 -15
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/XslElement.java
Index: XslElement.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/XslElement.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- XslElement.java 2001/08/14 10:25:41 1.10
+++ XslElement.java 2001/08/22 09:21:29 1.11
@@ -1,5 +1,5 @@
/*
- * @(#)$Id: XslElement.java,v 1.10 2001/08/14 10:25:41 morten Exp $
+ * @(#)$Id: XslElement.java,v 1.11 2001/08/22 09:21:29 morten Exp $
*
* The Apache Software License, Version 1.1
*
@@ -76,7 +76,7 @@
private AttributeValue _name; // name treated as AVT (7.1.3)
private AttributeValueTemplate _namespace = null;
- private String _namespacePrefix;
+ private String _prefix;
private boolean _ignore = false;
/**
@@ -104,9 +104,9 @@
// Get the "name" attribute of the <xsl:element> element
String name = getAttribute("name");
- if ((name == null) || (name.equals(Constants.EMPTYSTRING))) {
+ if ((name == null) || (name.equals(EMPTYSTRING))) {
final ErrorMsg msg = new ErrorMsg("You can't call an element \"\"");
- parser.reportError(Constants.WARNING, msg);
+ parser.reportError(WARNING, msg);
_ignore = true; // Ignore the element if the QName is invalid
return;
}
@@ -120,38 +120,39 @@
String namespace = getAttribute("namespace");
// Then try to get it from the "name" attribute QName prefix
- if (namespace == null) {
+ if ((namespace == null) || (namespace.equals(EMPTYSTRING))) {
// We are supposed to use the default namespace URI if the QName
// from the "name" attribute is not prefixed, so check that first
- if (prefix == null) prefix = Constants.EMPTYSTRING;
+ if (prefix == null) prefix = EMPTYSTRING;
// Then look up the URI that is in scope for the prefix
namespace = lookupNamespace(prefix);
// Signal error if the prefix does not map to any namespace URI
if (namespace == null) {
final ErrorMsg msg = new ErrorMsg(ErrorMsg.NSPUNDEF_ERR,prefix);
- parser.reportError(Constants.WARNING, msg);
+ parser.reportError(WARNING, msg);
parseChildren(parser);
_ignore = true; // Ignore the element if prefix is undeclared
return;
}
+ _namespace = new AttributeValueTemplate(namespace, parser);
+ _prefix = prefix;
}
// Check if this element belongs in a specific namespace
- else if (namespace != Constants.EMPTYSTRING) {
+ else if (namespace != EMPTYSTRING) {
// Get the namespace requested by the xsl:element
_namespace = new AttributeValueTemplate(namespace, parser);
// Get the current prefix for that namespace (if any)
- _namespacePrefix = lookupPrefix(namespace);
+ _prefix = lookupPrefix(namespace);
// Is it the default namespace?
- if ((_namespacePrefix = prefix) == null)
- _namespacePrefix = Constants.EMPTYSTRING;
+ if ((_prefix = prefix) == null) _prefix = EMPTYSTRING;
// Construct final element QName
- if (_namespacePrefix == Constants.EMPTYSTRING)
+ if (_prefix == EMPTYSTRING)
name = qname.getLocalPart();
else
- name = _namespacePrefix+":"+qname.getLocalPart();
+ name = _prefix+":"+qname.getLocalPart();
}
_name = AttributeValue.create(this, name, parser);
@@ -160,7 +161,7 @@
if ((_name instanceof SimpleAttributeValue) &&
(local.indexOf(' ') > -1)) {
final String errmsg = "You can't call an element \""+local+"\"";
- parser.reportError(Constants.WARNING, new ErrorMsg(errmsg));
+ parser.reportError(WARNING, new ErrorMsg(errmsg));
parseChildren(parser);
_ignore = true; // Ignore the element if the local part is invalid
return;
@@ -210,7 +211,7 @@
if (_namespace != null) {
// public void attribute(final String name, final String value)
il.append(methodGen.loadHandler());
- il.append(new PUSH(cpg,_namespacePrefix));
+ il.append(new PUSH(cpg, _prefix));
_namespace.translate(classGen,methodGen);
il.append(methodGen.namespace());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]