True although - interestingly - I've yet to meet a parser that disallows it.
However, I don't want this to cause any confusion, so - for the sake of
argument - feel free to replace "<xml/>" with
"<root-element-of-your-choice/>" (as per the attached java)
The result is the same - i.e. this issue is independent of the xml
content (in fact, in my example java, the parser doesn't even get as far
as trying to parse the "xml").
Regards,
Kieran
Robert Koberg wrote:
Hi,
<xml/> is an illegal element name in an XML document.
best,
-Rob
On Tue, 2008-07-01 at 22:07 +0100, Kieran Topping wrote:
Hello,
I am attempting to create an XML object, put it in scope, and then
execute a script in this scope.
However, when I run the attached simple java class, I get the following
exception:
Exception in thread "main" java.lang.IllegalStateException
at
org.mozilla.javascript.ScriptRuntime.getTopCallScope(ScriptRuntime.java:2986)
at
org.mozilla.javascript.ScriptRuntime.searchDefaultNamespace(ScriptRuntime.java:1145)
at
org.mozilla.javascript.xmlimpl.XMLLibImpl.getDefaultNamespace(XMLLibImpl.java:328)
at
org.mozilla.javascript.xmlimpl.XMLLibImpl.getDefaultNamespaceURI(XMLLibImpl.java:313)
at
org.mozilla.javascript.xmlimpl.XMLLibImpl.parse(XMLLibImpl.java:405)
at
org.mozilla.javascript.xmlimpl.XMLLibImpl.ecmaToXml(XMLLibImpl.java:438)
at
org.mozilla.javascript.xmlimpl.XMLObjectImpl.ecmaToXml(XMLObjectImpl.java:800)
at org.mozilla.javascript.xmlimpl.XML.jsConstructor(XML.java:217)
at
org.mozilla.javascript.xmlimpl.XMLObjectImpl.execIdCall(XMLObjectImpl.java:591)
at
org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:127)
at
org.mozilla.javascript.BaseFunction.construct(BaseFunction.java:328)
at org.mozilla.javascript.Context.newObject(Context.java:1406)
at AddXmlToScope.main(AddXmlToScope.java:10)
When parsing xml, XMLLibImpl checks to see whether there is a "default
namespace" set up. In order to do this,
ScriptRuntime.searchDefaultNamespace() attempts to examine
Context.currentActivationCall and Context.topCallScope. However, because
the XML object is being created outside of a script, these values are
both null. This results in the IllegalStateException being thrown, as
detailed above.
Does anyone know whether this is this a bug, or is it me attempting to
do something that I'm not really allowed to?
Or is there a step that I'm missing in my java?
Many thanks in advance,
Kieran
plain text document attachment (AddXmlToScope.java)
import org.mozilla.javascript.*;
public class AddXmlToScope {
public static void main (String [] argv)
throws Exception
{
Context cx = Context.enter();
try {
Scriptable scope = cx.initStandardObjects();
// Create an XML object.
Object xml = cx.newObject(scope, "XML", new Object [] {"<xml/>"});
// Put the XML object in scope.
ScriptableObject.putProperty(scope, "xml", xml);
// Run a script in this scope. The script will have access
// to the "xml" property.
Object result = cx.evaluateString(scope, "var x = xml.name();", "<cmd>", 1, null);
} finally {
Context.exit();
}
}
}
_______________________________________________
dev-tech-js-engine-rhino mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino
_______________________________________________
dev-tech-js-engine-rhino mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino
import org.mozilla.javascript.*;
public class AddXmlToScope {
public static void main (String [] argv)
throws Exception
{
Context cx = Context.enter();
try {
Scriptable scope = cx.initStandardObjects();
// Create an XML object.
Object xml = cx.newObject(scope, "XML", new Object []
{"<root-element-of-your-choice/>"});
// Put the XML object in scope.
ScriptableObject.putProperty(scope, "xml", xml);
// Run a script in this scope. The script will have access
// to the "xml" property.
Object result = cx.evaluateString(scope, "var x = xml.name();",
"<cmd>", 1, null);
} finally {
Context.exit();
}
}
}
_______________________________________________
dev-tech-js-engine-rhino mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino