|
使用一个简单的 XSL 样式表就可以将 XML 数据转换成 HTML。随着 XML 规范的不断演进,在新的版本中满足每个人的需要似乎已经成为必要;不幸的是,进行简单的转换一直都困扰着规范。
假设我有一个表示一个页面内容的 XML 数据,现在我想将其内容转换成布局。下面是我想要转换的 XML:
<?xml version='1.0'?> <?xml-stylesheet type="text/xsl" href="article.xsl"?> <xml> <folders> <folder> <text>Folder 1</text> <files> <file> <text>File 1</text> <fields> <field> <data> <type>string</type> <length>50</length> <value>some data</value> </data> </field> </fields> </file> </files> </folder> </folders> </xml>
这个内容表示一组文件夹、文件和域。每个文件夹包含文件,每个文件包含用于输入数据的域。文件夹组中的每个文件夹都将表现为一个 TABLE 的第一行的一个 TR 元素和一个 TD 元素。文件组中的每个文件都将表示为嵌套在文件夹 TR 元素中的一个 TABLE 元素的第一行的一个 TR 元素和一个 TD 元素。域组中的每个域都将在相关的文件中表现为一个 INPUT。
为了实现这一想法,我们需要将遍历 XML 然后根据XSL 构建一个表。
下面是用于这个转换的 XSL:
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:fn="http://www.mycompany.com/mynamespace"> <xsl:output method="html"/>
<msxsl:script language="JScript" implements-prefix="fn"> function getElementCount(nodelist, what) { var rtrn = 0; rtrn = nodelist[0].parentNode.selectNodes(what).length; return (rtrn + 1); //1 is added for filler TD } </msxsl:script>
<xsl:template match="/">
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%" BORDER="0" ID="tblRo 此新闻共有4页 上一页 1 2 3 4 下一页 |