Skip to main content
Inspiring
June 23, 2014
Answered

FM 12 xslt preprocessing

  • June 23, 2014
  • 1 reply
  • 658 views

Hi,

I've got an XML application that works w/o problems on FM9 and FM 11, but not in FM 12. If my structapps does not have any preprocessing XSLT, everything works. But if it has, XSLT processor (Xalan used, not Saxon HE), XSLT processor gives me error: java.io.FileNotFoundException: Could not find file: <path_to_source_xml>\dtd_file, so it looks like xalan cannot resolve the public identifier and tries to locate dtd  from same folder. I have declared the entity locations with public ID + path\filename in structapps (and uses default API client).

What might be wrong?

Thanks in advance,

Martti

This topic has been closed for replies.
Correct answer Lynne A. Price

Martti,

I have confirmed your result. In particular, in FM 12, I can open an XML document with a DOCTYPE declaration that has a relative system identifier, provided that the entity search path is specified in Defaults. The XSLT processor is unable to find the DTD when I declare the entity search path in the XML application. By the way, I get the same result using Saxon as I do using Xalan.

Have you filed a bug on this issue? If not, I'll try to find time to simplify my test case and submit it.

--Lynne

1 reply

Inspiring
June 23, 2014

Martti,

    Just as a test, you might try supplying an absolute path for the system ID in the document type declaration in your XML document. Also, you might check structapps.fm again and make sure the paths are correct there. Are they absolute paths? Have you provided an entity search path?

     --Lynne

MarttiPAuthor
Inspiring
June 24, 2014

Hi Lynne,

I changed the system ID to absolute path in source XML and that worked.  Also, if I have the entity search paths in Defaults node in structapps, xalan works without abs. system id. Does frame pass only these paths to Xalan?. Whatever I set in individual XML app (entity search paths, catalog..) in structapps does not solve the issue. Dont' understand why, since FM selects the app before it invokes Xalan to run the preprocess xslt.

But it works, thanks Lynne. Once again.

Lynne A. PriceCorrect answer
Inspiring
June 24, 2014

Martti,

I have confirmed your result. In particular, in FM 12, I can open an XML document with a DOCTYPE declaration that has a relative system identifier, provided that the entity search path is specified in Defaults. The XSLT processor is unable to find the DTD when I declare the entity search path in the XML application. By the way, I get the same result using Saxon as I do using Xalan.

Have you filed a bug on this issue? If not, I'll try to find time to simplify my test case and submit it.

--Lynne