有一个xml文件,我写了一个xsl文件将该xml格式化成我需要的文本格式,用浏览器打开没问题,我希望有一个工具(模块)能够被我用程序调用,传入一xml文件和xsl文件,输出一个解析出来的文本文件,谁有这方面的建议?
解决方案 »
- 字符串的一个非典型问题(求教)
- udpclient的socket或多线程监听
- 数据库多层开发------从sql server2000数据库读取数据
- 公园管理方面的解决方案....
- 我想在程序安装完成后自动在安装目录下建立一个文件夹,并且里面有一个文件,如何实现呀?
- 急!!在线等待!请问我为啥联打,中间空出一大片来
- 为何 CmdLine 接收到的参数都变小写?
- 请问websnap和webservices有什么区别?
- 关闭WebBrowwer的问题,UP也有分
- 关于Delphi调用Sql语句?
- 有谁能帮我解释这个问题吗,谢谢!!
- 高分求助: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>