<?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 網站.
沒有留言:
張貼留言