On Tue, 2008-07-01 at 23:23 +0100, Kieran Topping wrote:
> 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").

OK. But aren't you just creating a String? Are you building some kind of
DOM in your script?

> 
> 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
> >
> >
> >   
> 
> 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 [] 
> {"<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

_______________________________________________
dev-tech-js-engine-rhino mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino

Reply via email to