[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Perl and MSXML3 to transform XML with XSL
No, using Perl and MSXML3 wasn't my first choice. Yes, it does work. For
background, here is an excellent article from xml.com:
http://www.perl.com/pub/a/2001/04/17/msxml.html This article shows enough details to load an XML document (and an XSL stylesheet) into a DOMDocument: # Load the XML file $doc_to_transform->{async} = "False"; $doc_to_transform->{validateOnParse} = "True"; $boolean_Load = $doc_to_transform->Load($xml_file); I have figured out how to get detailed error checking out of the two loads. The $doc_to_transform->{parseError} syntax gets me access to line numbers, error reasons and so on. Very nice. if(!$boolean_Load) { # The error message includes file name, line #, position #, and reason. PrintMessage("error at line ".$doc_to_transform->{parseError}->{line}." position ".$doc_to_transform->{parseError}->{linePos}." reason ".$doc_to_transform->{parseError}->{reason}); } The article also shows how to transform them and save the result: # Perform the transformation and save the resulting DOM object to file $doc_to_transform->transformNodeToObject($style_sheet_doc, $transformed_doc); $transformed_doc->save("$out_file"); Unfortunately the article gives me no hint on how to error check the transformNodeToObject, and I've been unable to figure it out on my own. The closest example I have found is from MSDN: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmcondetecthandlxslerrors.asp?frame=true They give some JScript examples along this line for transformNode: try { result = source.transformNode(style.XMLDocument); } catch (exception) { result = reportRuntimeError(exception); } Which calls this function: function reportRuntimeError(exception) { return "XSL Runtime Error" + exception.description; } What is the equivalent of this try/catch in Perl? I assume the syntax is something like: # Perform the transformation and save the resulting DOM object to file $doc_to_transform->transformNodeToObject($style_sheet_doc, $transformed_doc) or $transformed_doc->{runtimeError}->{description}; This doesn't work; the "or" is always triggered. Any help is appreciated. --James Garriss (MITRE) XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|