有一个xml文件,我写了一个xsl文件将该xml格式化成我需要的文本格式,用浏览器打开没问题,我希望有一个工具(模块)能够被我用程序调用,传入一xml文件和xsl文件,输出一个解析出来的文本文件,谁有这方面的建议?
解决方案 »
- 江湖救急:Delphi严重Bug,TADOConnection在线程内创建,TEdit控件不能切换输入法!
- 在DBGrid中,怎样才能让我能点击一个单元格选择整行,又可以编辑单元格的内容呢
- ODBC连接,查询内容无法更新
- 【300分】急呀,谁有<<Delphi数据库系统开发实例导航>>书籍提供下载呀?
- 那位兄弟有做过计量单位转换的模块。。。或有好建议。。。
- 请教各位哥哥姐姐一个菜问题,帮帮忙好吗?(在线等)
- 请教一个对象间通知的问题
- onkeydown、onkeypress、onkeyup三个事件有什么区别?
- sos:如何动态改变存储过程中where后的子句?
- 怎样用API播放MIDI文件?
- 有谁能帮我解释这个问题吗,谢谢!!
- 高分求助:delphi7 用dbexpress连mysql问题!!
var
xdoc,xslt : IXMLDOMDocument;
s : String;
begin
xdoc:=CreateDOMDocument();
xslt:=CreateDOMDocument();
xdoc.load('aXml.xml');
xslt.load('aXsl.xsl');
s:=xdoc.transformNode(xslt.documentElement);
ShowMessage(s);
end;
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
========================xml===============================
<?xml version="1.0" encoding="GBK"?>
<T Rows="10" Cols="5">
<C key="C1">
<C1 name="汉字" type="VARCHAR2"></C1>
<C2 name="拼音" type="VARCHAR2"></C2>
<C3 name="五笔" type="VARCHAR2"></C3>
<C4 name="郑码" type="VARCHAR2"></C4>
<C5 name="笔顺编号" type="VARCHAR2"></C5>
</C>
<R id="1">
<C1>一</C1>
<C2>yi</C2>
<C3>ggll</C3>
<C4>A</C4>
<C5>1</C5>
</R>
<R id="2">
<C1>丁</C1>
<C2>ding</C2>
<C3>sgh</C3>
<C4>AI</C4>
<C5>12</C5>
</R>
<R id="3">
<C1>丂</C1>
<C2>yu</C2>
<C3>gnv</C3>
<C4>AZVV</C4>
<C5>15</C5>
</R>
<R id="4">
<C1>七</C1>
<C2>qi</C2>
<C3>agn</C3>
<C4>HD</C4>
<C5>15</C5>
</R>
</T>
==================================xsl==============================
<?xml version="1.0" encoding="GBK"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes"/>
<xsl:template match="text()">
<xsl:value-of select="." />
</xsl:template> <xsl:template match="/">
<html>
<head>
<title>GBK Table</title>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<link type="text/css" rel="stylesheet" href="std.css"/>
<script language="javascript" src="std.js"></script>
</head>
<body>
<table>
<thead>
<xsl:apply-templates select="/T/C" />
</thead>
<!--tfoot>
<xsl:apply-templates select="/T/C" />
</tfoot-->
<tbody>
<xsl:apply-templates select="/T/R" />
</tbody>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="C">
<tr>
<th width="10">
<input type="checkbox" onclick="doCheck(this);" title="全选/清除" />
</th>
<xsl:for-each select="*">
<th><xsl:value-of select="@name"/></th>
</xsl:for-each>
</tr>
</xsl:template>
<xsl:template match="R">
<tr>
<td align="center">
<input type="checkbox" value="{./*[name()=string(/T/C/@key)]}" id="_UserSelect_" name="UserSelect" onclick="doCheck(this);" style="width:100%"></input>
</td>
<xsl:for-each select="*">
<td><xsl:value-of select="." /></td>
</xsl:for-each>
</tr>
</xsl:template></xsl:stylesheet>
象<xsl:value-of select="." />后面的select"."都不能省略的。
比如说我要比较当前节点的值是否与0相等,则在http://www.w3.org/TR/WD-xsl命名控件下是这样实现的
<xsl:when test=".[value()$eq$0]">xxx</xsl:when>