Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
679 views
in Technique[技术] by (71.8m points)

internet explorer - Why "XSLT8690: XSLT processing failed" when processing local xml + xslt

Extensive research did not lead me to understanding why the below happens - I hope that the SO community can help...

I copied the files mentioned in Why HTML1113: Document mode restart from IE9 Standards to Quirks to local filesystem and opened the xml in IE9 (by specifying the path D:... in the url bar).
Surprisingly, the behavior is quite different from opening the web version.
Now I can understand that "My Computer" zone settings differing from Internet zone ones explain the pop-up windows mentioned below, but I don't understand why the result is different and why quirks mode is not automatically chosen, just like was done when opening the xml on the web.

When I open the local file, I get the following:

AllowScripts

which no doubt is caused by a local zone setting. Next, the browser mode is IE9 (not auto quirks as earlier) and it fails on applying the XSLT:

XSLT8690

First I thought that this was caused by MSXML6 DOM basic settings like AllowXsltScript not being set to true, but I am not sure about that any more, because it all works OK when opening the web version.
So why does the local one fail?

Stranger still, opening the web version led to auto quirks mode and correct result, but when I switch to quirks mode for the local file, it fails on the MSXML6 DOM object - actually this makes more sense to me than no error, because quirks mode probably only offers MSXML3 (or should only offer that - but then why was auto quirks in web version OK?).

Quirks1

After accepting, it changes to

Quirks2

Now, when selecting IE9 standards mode again, I get

IE9take2_console

and the result is the expected

IE9take2

Reciting events when using local files (apart from zone setting differences):

  1. IE9 standards mode XSLT8690 error
  2. Switching to quirks mode errors
  3. Switching back to IE9 standards mode is OK now

Reciting the events when opening the web version (apart from differences due to zone settings):

  1. quirks mode automatically
  2. page opens correctly in quirks - apparently MSXML6 is still used here in the auto quirks mode
  3. switch to IE9 standards mode is OK too
  4. Back to quirks mode errors as above ("The parameter is incorrect'")

What is causing all these peculiar differences?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This one took me some time but I've got it!

Paul Sweatte's comments led me to a lot of already charted but also to some uncharted waters, but eventually I started experimenting with IE9 My Computer zone security settings directly via the registry, alas to no avail, until.....I looked at the Internet Options popup window again and noticed that there's more than one place where security settings may be updated .....

Walking through all none-zone related IE9 settings, I selected the "Advanced" tab and encountered a promising unchecked one in the security subsection:

Allow active content to run in files on My computer

Changing it (in this case to checked) requires a restart but when I did and reopened my local xml file, it suddenly behaved as the web one did: it opened in quirks mode correctly. Also, switching to IE9 standards mode and back to quirks mode gave the same behaviour as for the web one. Also the popup warning about "scripts usually being safe" was not there anymore.

So that explains why the XSLT8690 error occurs: xslt, or maybe just javascript in there is considered to be active content.

End of story?
For this question yes, but I still wonder why auto quirks mode is OK but manually selected quirks is not.
I suspect that at the first run the xslt is processed before the auto switch to quirks takes place, and at that time the MSXML6 is not needed anymore because the result page is already available. But when you open the xml in quirks mode, then it tries to execute the xslt in quirks mode, and can't because of the available MSXML3 instead of MSXML6.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...