国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > XML > 正文

使用XSLT將XML數據轉換成HTML

2024-09-05 20:54:04
字體:
來源:轉載
供稿:網友

使用一個簡單的 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="tblRoot" NAME="tblRoot"
style="table-layout:fixed;">
<TR>
<xsl:for-each select="xml/folders/folder">
<xsl:element name="TD">
<xsl:attribute name="style">width:55px</xsl:attribute>
<xsl:value-of select="text"/>
</xsl:element>
</xsl:for-each>
<TD> </TD>
</TR>

<xsl:for-each select="xml/folders/folder">
<TR>
<xsl:element name="TD">
<xsl:attribute name="colspan">
<xsl:value-of select="fn:getElementCount(., 'folder')"/>
</xsl:attribute>

<TABLE CELLSPACING="0" CELLPADDING="0"
WIDTH="100%" BORDER="0" style="table-layout:fixed;">
<TR>
<xsl:for-each select="files/file">
<xsl:element name="TD">
<xsl:attribute name="style">width:55px;</xsl:attribute>
<xsl:value-of select="text"/>
</xsl:element>
</xsl:for-each>
<TD> </TD>
</TR>

<xsl:for-each select="files/file">
<TR>
<xsl:element name="TD">
<xsl:attribute name="colspan">
<xsl:value-of select="fn:getElementCount(., 'file')"/>
</xsl:attribute>

<xsl:for-each select="fields/field">
<xsl:element name="INPUT">
<xsl:attribute name="type">text</xsl:attribute>
<xsl:attribute name="maxlength">
<xsl:value-of select="data/length"/>
</xsl:attribute>
<xsl:attribute name="value">
&

共2頁上一頁12下一頁
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 抚顺县| 六盘水市| 大同县| 西昌市| 贞丰县| 稷山县| 龙海市| 南乐县| 建瓯市| 西乌珠穆沁旗| 涿鹿县| 安吉县| 阳泉市| 许昌市| 桑日县| 沅陵县| 武邑县| 武胜县| 北宁市| 永城市| 巴楚县| 抚顺县| 洪洞县| 龙岩市| 福泉市| 云林县| 朝阳市| 西畴县| 宝坻区| 广宗县| 武邑县| 炉霍县| 应城市| 开封县| 溧阳市| 虎林市| 那坡县| 冀州市| 莲花县| 神木县| 乌兰浩特市|