Feeds:
文章
留言

Archive for 十一月 18th, 2005

[JS] XSLT 使用範例

剛剛試了 C#,這次用 Javascript 測試,主要是利用微軟提供的 xmldom ActiveX元件來完成,如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body>
Result:
<div id = ‘divResult’>
</div>
<script type = ‘text/javascript’>
<!–//
 // 1. 載入 XML 文件
 var xmlDoc = new ActiveXObject("Microsoft.xmldom");
 xmlDoc.load("sambruinkimo368545695.xml");
 // 2. 載入 XSL 文件
 var xslDoc = new ActiveXObject("Microsoft.xmldom");
 xslDoc.load("MessageLog.xsl");
 // 3. 轉換輸出到網頁上
 document.getElementById(‘divResult’).innerHTML = xmlDoc.transformNode(xslDoc.documentElement);
//–>
</script>
</body>
</html>

Read Full Post »

[C#] XSLT 轉換範例

C# 要進行 XSLT 只要透過 XPathDocument XslTransform 即可,如果要將轉換結果輸出成檔案需要再使用 XmlTextWriter 。
下面是一個簡單的範例
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl ;
class Class1
{
 static void Main(string[] args)
 {
  // 1. 載入 XML 文件
  XPathDocument xmlDoc = new XPathDocument(@"J:記錄chen_maggy3735029814.xml");
  // 2. 載入 XSL 文件
  XslTransform xslDoc = new XslTransform();
  xslDoc.Load(@"J:記錄MessageLog2.xsl");
  // 3. 轉換文件
  XmlTextWriter csvWriter = new XmlTextWriter(@"c:result.csv",null);
  xslDoc.Transform(xmlDoc, null, csvWriter);
 }
}

Read Full Post »

CHM 轉 PDF

最近再看一 些英文的電子書,發現PDF格式用來作註解和標記挺方便的,chm 格式也很不錯,只是不能加上註記頗不方便,於是在網路繞了幾圈找到兩套可以將 chm 轉 pdf
1. ABC Am CHM Converter
http://www.thebeatlesforever.com/processtext/abcchm.zip
無法下載測試
2. chm2pdf pilot
http://www.colorpilot.com/chm2pdf.html
轉換結果還可以,雖然部分文件轉換時會當機或轉換後的排版有些錯誤之外,大致上還算不錯,而且使用上相當簡單。

Read Full Post »

[C++]控制 PC Speaker

今天阿發問我揚聲器怎麼控制,天啊… 好久以前的東西,印象中之前在 Charles 的 windows 巨作中有說到那個函數,不過人老了什麼都記不起來,還好阿發有提示我說他在網路上找了 beep 函數,到 MSDN 上確認了一下確實該函數可以碼滿足他的需要,因此我也隨手寫了一個範例程式。

範例程式:

/*
 * PC speaker 控制
 *
 * 環境:
 * [1] Windows 2000 Professional
 * [2] Borland C++ Compiler 5.5
 *
 * 參考資料:
 * [1] http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/beep.asp
 */
#include <iostream>
#include "windows.h"
int main(int argc, char *argv[])

 if (argc != 3){
  std::cerr << "parameter error!!n beep_test.exe freq duration";
  exit(-1);
 }

 DWORD freq = atoi(argv[1]);
 DWORD duration = atoi(argv[2]);
 if (freq < 37 || freq >32767){
  std::cerr << "frequency range: 37~32767";
  exit(-1);
 }

 if (duration < 0 ){
  std::cerr << "duration must be larger than 0";
  exit(-1);
 }

 Beep(freq, duration); 
 return 0;
}

Read Full Post »