style page 30 - Dave's Blog

Search
My timeline on Mastodon

XSL Transforms in JavaScript

2007 Oct 7, 4:12In a previous post I mentioned an xsltproc like js file I made. As noted in that post, on Windows you can write console script files in JavaScript, name them foo.js, and execute them from the command prompt. I later found that MSDN has an XSLT javascript sample which looks similar to mine, but I like mine better for the XSLT parameter support and having a non-ridiculous way of interpreting filenames. The code for my xsltproc.js follows. The script is very simple and demonstrates the ease with which you can manipulate these system objects and all it takes is opening up notepad.
var createNewXMLObj = function() {
   var result = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
   result.validateOnParse = false;
   result.async = false;
   return result;
}

var args = WScript.arguments;
var ofs = WScript.CreateObject("Scripting.FileSystemObject");

var xslParams = [];
var xmlStyle = null;
var xmlInput = null;
var inputFile = null;
var outputFile = null;
var error = false;

for (var idx = 0; idx < args.length && !error; ++idx)
   if (args.item(idx) == "-o") {
      if (idx + 1 < args.length) {
         outputFile = ofs.GetAbsolutePathName(args.item(idx + 1));
         ++idx;
      }
      else
         error = true;
   }
   else if (args.item(idx) == "--param" || args.item(idx) == "-param") {
      if (idx + 2 < args.length) {
         xslParams[args.item(idx + 1)] = args.item(idx + 2);
         idx += 2;
      }
      else
         error = true;
   }
   else if (xmlStyle == null) {
      xmlStyle = createNewXMLObj();
      xmlStyle.load(ofs.GetAbsolutePathName(args.item(idx)));
   }
   else if (xmlInput == null) {
      inputFile = ofs.GetAbsolutePathName(args.item(idx));
      xmlInput = createNewXMLObj();
      xmlInput.load(inputFile);
   }

if (xmlStyle == null || xmlInput == null || error) {
   WScript.Echo('Usage:\n\t"xsltproc" xsl-stylesheet input-file\n\t\t["-o" output-file] *["--param" name value]');
}
else {
   var xslt = new ActiveXObject("MSXML2.XSLTemplate.3.0");
   xslt.stylesheet = xmlStyle;
   var xslProc = xslt.createProcessor();
   xslProc.input = xmlInput;

   for (var keyVar in xslParams)
      xslProc.addParameter(keyVar, xslParams[keyVar]);

   xslProc.transform();

   if (outputFile == null)
      WScript.Echo(xslProc.output);
   else {
      var xmlOutput = createNewXMLObj();
      xmlOutput.loadXML(xslProc.output);
      xmlOutput.save(outputFile);
   }
}
PermalinkCommentsjs xml jscript windows xslt technical xsltproc wscript xsl javascript

Date Time Formats

2007 Sep 27, 2:17Starting on a new simple project I wanted to get the history of my Delicious links. Delicious has an export tool available via the settings section so I thought I'd try that. However, the links aren't exported in XML not even in XHTML but rather in HTML. Shocking. An example:
"Don't Tase Me, Bro!" (UF Student Tasered Remix)
Remix of the 'Don't tase me, bro!' guy getting tasered.At this point I'm already not going to use this file because its in HTML but I'm even more disgusted by those date time values. Raymond Chen of the Old New Thing posted about recognizing timestamps and timestamp sentinel values. From the first blog post and with the use of a calculator for base conversion one can tell that those are UNIX style timestamps counting the number of seconds since 1970.

It reminds me of my hatred for the MIME date time format I developed working on my webpage's server side parsing of atom and RSS. Atom is of course my favorite as Atom uses the Internet date time format described in the following documents. Here's an example of one 2007-09-27T020:50:00.000-08:00 On the other hand the evil and villainous RSS uses the MIME date time format now described in the more recent IETF MIME standard. Here's an example Thu, 27 Sep 2007 20:50:00 -0800
The Internet date time format has the advantage of being so easy to sort. An alphabetic sort with normal C-style collation rules of strings containing Internet date times will also sort them chronologically. This is not the case for the MIME date time due to the preceding day of the week and the spelled out month name. This also means that when producing these you have to figure out the day of the week and when parsing them you have to match month names rather than just parsing out numbers. Anyway now days if I see mention of a date time in a new proposed standard or spec I be sure to point out the numerous advantages of the Internet date time format.
PermalinkCommentsdate xml html feed time technical date-time code atom rss

Palak And Meghal's Wedding

2007 Sep 1, 4:32
The child in front of me kept staring at me.
From: David Risney
Views: 59
0 ratings
Time: 00:07 More in People & Blogs
PermalinkCommentsvideo

Bokardo - The Del.icio.us Lesson

2007 Aug 15, 3:16Reasons why del.icio.us style tagging is different and better than things that have come before it.PermalinkCommentsarticle blog business taxonomy tagging delicious folksonomy reference tag ontology

Bunny Sniff and Shake

2007 Aug 13, 3:35
I've been told that family members after reading my webpage which contains some technical related material would turn to my cousins webpage. So, in an effort to not drive away readers I've...
From: David Risney
Views: 328
3 ratings
Time: 00:08 More in Pets & Animals
PermalinkCommentsvideo

Canadian Wedding

2007 Jul 15, 5:08This previous weekend Sarah and I went to Canada for my friends Palak and Meghal's wedding. Our five day stay took us on the route from Toronto, to Burlington (for the wedding), and then Niagra.

Hotel near CN TowerIn Toronto we visited the CN Tower, the ROM, and the Bata Shoe Museum. We generally acted like tourists walking around taking photos of things, putting on sun block, and not saying 'eh'. But we could have been worse like the drunk American college students in front of us in line for the CN Tower asking the guide if the CN Tower is taller than the Stratosphere in Las Vegas. We stumbled upon the Toronto Outdoor Art Exhibit which was really interesting. Sarah in particular recalls the cute stuffed animal monsters.

Palak And Meghal's Wedding 6After Toronto we drove to Burlington where Palak and Meghal's wedding would take place. We got up early and made it on time to the wedding which was lovely. I hadn't attended an Indian wedding previously so it was a new experience for me. During the ceremony the child in front of me kept peeking over her parent's shoulder and staring at me. It lasted all day with a break after lunch during which we drove around and experienced small town Ontario. After the break cousins performed dances for Palak and Meghal and then we all danced the night away until the wee hours.

Niagra FallsIn Niagra we stayed in a hotel room with a falls view which was lovely. We went on the Maid of the Mist tour that takes tourists right up to the falls in a boat and drenches them. We also went on the Behind the Falls tour which was not as fun. In both we are given rain coats which are essentially glorified plstic trash bags. For dinner we ate in the hotel restaurant which had a lovely view of the falls. At night the falls are lit up in various colors with gigantic lights.PermalinkCommentsniagra wedding personal toronto nontechnical

YouTube - Family Guy - Peter's 80s Dance with Cleavland

2007 Jun 8, 1:30Clip from the Family Guy of Peter doing 80s style things. Specifically enjoying the Beverly Hills Copy theme song. Why do I think this is so funny?PermalinkCommentsfamily-guy 80s music video humor tv

Resource Tools - IE7 XML Source View Upgrade Part 1

2007 May 9, 4:15I read about text/xml URI fragment resolution a few months ago. I was interested to find another kind of fragment reference other than the text/html URI fragment but of course I didn't find an implementation in IE, Firefox, or Opera. I decided to see how much work would be required to implement this in IE.

In IE and Firefox when you open an XML file that doesn't have an XML stylesheet the XML source is rendered with syntax highlighting. In IE I also noticed that the gold bar appears when you open an XML file off of your local machine. To me this suggested that the XML source was being rendered as HTML which I assumed was produced by running an XSLT on the source XML file. If so, I figured I could modify the XSLT to implement text/xml URI fragments. I ran FileMon to see if iexplore.exe loaded an XSLT file when opening an XML file. Only the XML file and MSXML3.DLL were opened and no XSLTs were loaded as files. My next hope for modifying the XSLT was if it existed as a resource in MSXML3.DLL. I did a findstr on the DLL for SCRIPT and found an XSLT so I decided to check for resources in MSXML3.DLL. Unfortunately my previous resource viewer didn't work correctly so I decided to write my own.

I created resource tools to view and modify resources in Windows modules. The viewer outputs HTML with links to the individual resources of a module using the res URI scheme that's built into IE. The modifier is a simple command line tool that replaces or adds one resource at a time to a module.

Using these tools I found that the XSLT was stored as a resource in MSXML3.DLL. I'll talk more about the existing XSLT and the one I replaced it with next time.PermalinkCommentsresource technical xml msxml res xslt xsl

XSL to XSLT Converter 1.1

2007 May 3, 12:52A free tool to convert old style XSL documents into XSLT documents.PermalinkCommentsmsdn microsoft tool free download xsl xslt xml

OS-Tan - Gallery: Lamest Technology Mascots Ever (Wired)

2007 May 2, 1:00Apparently there's something called OS-tan in which Windows OSes are represented as anime styled characters. Very odd.PermalinkCommentsarticle os-tan humor images weird anime

Seeing through walls

2007 Apr 23, 1:13Researcher applies Van-Eck phreaking style attack to flat panel (non CRT) displays.PermalinkCommentssecurity article privacy hack van-eck-phreaking phreaking cryptonomicon

mudlondon

2007 Apr 19, 3:34mudlundon is a collaborative mapping project presented in the style of a text adventure or MUD and with its data saved in RDF.PermalinkCommentsmud rdf map semanticweb geo london im aim

IE User-Defined Style Sheets - Managing Style Sheets (MSDN)

2007 Apr 16, 4:40Using this feature in IE you can provide your own style sheet that will override a page's style.PermalinkCommentsie browser css msdn microsoft

IE Extensibility - Using Rendering Behaviors

2007 Apr 16, 3:33An overlooked point of IE extensibility. Attach behaviors to elements in your document via style sheets. Essentially this lets you override the normal behavior of document elements with your own code. The article tells you all about it.PermalinkCommentsmsdn microsoft ie browser code programming css article howto extension behavior

RFC 4151 The 'tag' URI Scheme

2007 Apr 2, 4:34The 'tag' URI scheme. This is another URN style URI. That is, it only names things it doesn't locate them like URLs.PermalinkCommentsrfc tag uri reference internet ietf urn

Coding Standard Generator

2007 Feb 6, 5:12A step by step coding style document generator.PermalinkCommentsprogramming c++ development style

The world is in your hand | haha.nu - a lifestyle blogzine

2006 Dec 21, 3:21Cool photos of miniatures, toys, postcards or photos held up over their real world counterparts. Some look pretty cool.PermalinkCommentshumor photos blog gallery

XSL Transformations (XSLT)

2006 Nov 29, 11:35The Extensible Stylesheet Language Transformation specification.PermalinkCommentsxhtml w3c standards specification reference xsl xslt quickreference

Windows Live Local / Virtual Earth: Spaceland is Live!

2006 Nov 6, 6:45Windows Live Local mapping service now has a 3D in browser view. I think I found an Ad floating in 3D: http://local.live.com/default.aspx?v=2&cp=47.661837~-122.318396&style=h&lvl=18&tilt=-45.0127372558486&dir=351.874729443864&alt=389.481441551819&scene=37PermalinkCommentsmicrosoft windows-live search virtual-earth spaceland map blog article

Prettyprint - Wikipedia, the free encyclopedia

2006 Sep 14, 2:14PermalinkCommentsdevelopment programming software tool tools standards style wikipedia prettyprint beautifier
Older EntriesNewer Entries Creative Commons License Some rights reserved.