2009年5月29日

Delphi MSXML DOM XSLT 轉換


{
XSLT 參考網頁
http://www.w3.org/TR/xslt
在 uses 中加入 msxml, msxmldom
}
uses
msxml, msxmldom;
{
在 Form 上放一個 TMemo
在 FormCreate 事件中加入
}

procedure TForm1.FormCreate(Sender: TObject);
var
DOMDocument: IXMLDOMDocument;
Data: IXMLDOMDocument;
begin
// 資料
with memo1.Lines do
begin
Clear;
Add('<?xml version="1.0" encoding="Big5"?>');
Add('<data>');
Add(' <title>Extensible Markup Language (XML)</title>');
Add(' <text>first</text>');
Add(' <text>second</text>');
Add('</data>');
end;
Data := CreateDOMDocument;
Data.loadXML(memo1.Lines.Text);

// 樣板
with memo1.Lines do
begin
Clear;
Add('<?xml version="1.0" encoding="Big5"?>');
Add('<xsl:stylesheet version="1.0" ');
Add(' xmlns:xsl="http://www.w3.org/1999/XSL/Transform">');
Add('<xsl:template match="data">');
Add(' <html>');
Add(' <head>');
Add(' <title><xsl:value-of select="title"/></title>');
Add(' </head>');
Add(' <body>');
Add(' <xsl:for-each select="text">');
Add(' <li><xsl:value-of select="text()"/></li>');
Add(' </xsl:for-each>');
Add(' </body>');
Add(' </html>');
Add('</xsl:template>');
Add('</xsl:stylesheet>');
end;
DOMDocument := CreateDOMDocument;
DOMDocument.loadXML(memo1.Lines.Text);

// 轉換
Memo1.Lines.Text := Data.transformNode(DOMDocument.documentElement);
end;

{ Memo1

<html>
<head>
<META http-equiv="Content-Type" content="text/html">
<title>Extensible Markup Language (XML)</title>
</head>
<body>
<li>first</li>
<li>second</li>
</body>
</html>

}

沒有留言:

網誌存檔