<?xmlversion="1.0"encoding="utf-8" ?>
<root>
<user>
<account>John</account>
<name>王小明</name>
</user>
<user>
<account>Mary</account>
<name>吳阿美</name>
</user>
<user>
<account>David</account>
<name>徐丁丁</name>
</user>
</root>
userHtml.xslt 的內容如下:
<?xmlversion="1.0"encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl">
<xsl:output method="html" indent="no"/>
<xsl:template match="/root">
<table border="1">
<tr style="background-color:#FFC125">
<td>帳號</td>
<td>姓名</td>
</tr>
<xsl:for-each select="user">
<tr>
<td>
<xsl:value-of select="account"/>
</td>
<td>
<xsl:value-of select="name"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
因為是輸出 html 的格式, 所以設定 <xsl:output method="html" indent="no"/> 的 method 為 html; indent 設定 no, 表示不要輸出編排的格式.
- 在 ASP.Net 中, 可以在 aspx 檔中加入 Xml 控制項:
<asp:Xml ID="Xml1" runat="server" DocumentSource="users.xml" TransformSource="userHtml.xslt"></asp:Xml>
此做法只要寫好 xml 與 xslt 檔就可自動進行轉換. - 如果 xml 檔案或 xslt 檔案並不在網站的目錄下, 可以用這個方式 :
Step1. 在網頁中加入一個 Literal 控制項, 例如:<asp:Literal ID="Literal1" runat="server"></asp:Literal>
Step2. 在程式中撰寫 xml 與 xslt 檔的轉換, 如下:protected void Page_Load(object sender, EventArgs e) { XmlDocument doc = new XmlDocument(); doc.Load("c:\\users.xml"); XPathNavigator nav = doc.CreateNavigator(); XslCompiledTransform trans = new XslCompiledTransform(false); trans.Load("c:\\userHtml.xslt"); using (StringWriter sw = new StringWriter()) { using (XmlTextWriter xmlWriter = new XmlTextWriter(sw)) { trans.Transform(nav, null, xmlWriter); Literal1.Text = sw.ToString(); } } } - 有關 xslt 的說明, 可參考 w3schools 網站.
沒有留言:
張貼留言