ASP.NET Tutorial/XML/XslTransform — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 14:57, 26 мая 2010
Содержание
Display data from database in asp:Xml with xml transformation
<source lang="csharp">
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="XmlDataSet" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Untitled Page</title>
</head> <body>
<form id="form1" runat="server">
<asp:Button ID="cmdDataSetToXml" runat="server" Text="Display DataSet as XML" OnClick="cmdDataSetToXml_Click" Width="185px"/> <asp:Xml ID="XmlControl" runat="server" EnableViewState="False"></asp:Xml>
</form>
</body> </html> File: Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient; using System.Web.Configuration; using System.Xml; public partial class XmlDataSet : System.Web.UI.Page {
protected void cmdDataSetToXml_Click(object sender, EventArgs e) { string connectionString = WebConfigurationManager.ConnectionStrings["Pubs"].ConnectionString; string SQL = "SELECT * FROM authors WHERE city="Oakland""; SqlConnection con = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand(SQL, con); SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataSet ds = new DataSet("AuthorsDataSet"); con.Open(); adapter.Fill(ds, "AuthorsTable"); con.Close(); XmlDataDocument dataDoc = new XmlDataDocument(ds); XmlControl.XPathNavigator = dataDoc.CreateNavigator(); XmlControl.TransformSource = "Data.xsl"; }
}
File: Data.xsl <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="AuthorsDataSet">
The Author List
<xsl:apply-templates select="AuthorsTable"/> Created through XML and XSLT
</xsl:template>
<xsl:template match="AuthorsTable">
Name: <xsl:value-of select="au_lname"/>, <xsl:value-of select="au_fname"/>
Phone: <xsl:value-of select="phone"/>
</xsl:template>
</xsl:stylesheet>
File: Web.config <?xml version="1.0"?> <configuration>
<connectionStrings> <add name="Pubs" connectionString="Data Source=localhost\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=Pubs;"/> </connectionStrings>
</configuration></source>
Read the transformed result of XslTransform and output the result (VB.net)
<source lang="csharp">
<%@ Page Language="VB" %> <%@ Import Namespace="System.Xml" %> <%@ Import Namespace="System.Xml.XPath" %> <%@ Import Namespace="System.Xml.Xsl" %> <script runat="server">
sub Page_Load(Sender as Object, e as EventArgs) Dim objReader as New XmlTextReader(Server.MapPath("Data.xml")) Dim objDoc as XPathDocument = new XPathDocument(objReader) Dim objXSLT As XslTransform = New XslTransform() dim objWriter as XmlTextWriter = new XmlTextWriter(Server.MapPath("output.html"), nothing) try objXSLT.Load(Server.MapPath("Data.xsl")) dim objReader2 as XmlReader = objXslT.Transform(objDoc, nothing) While objReader2.Read() Response.Write("" & objReader2.Name & " " & _ objReader2.Value & "
") End While catch ex As Exception Response.Write(ex.Message) finally objReader.Close objWriter.Close end try end sub
</script> <html><body> </body></html>
File: Data.xml
<?xml version="1.0"?> <bookstore>
<book genre="asdf"> <title>asdf</title> <author> <first-name>asdf</first-name> <last-name>asdf</last-name> </author> <price>asdf</price> </book> <book genre="asdf"> <title>asdf</title> <author> <first-name>asdf</first-name> <last-name>asdf</last-name> </author> <price>asdf</price> </book> <book genre="asdf"> <title>asdf</title> <author> <first-name>asdf</first-name> <last-name>asdf</last-name> </author> <price>asdf</price> </book>
</bookstore> File: Data.xsl <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:op="x-schema:books.xdr" version="1.0" > <xsl:template match="op:bookstore"> <HTML><BODY>
Title | Price |
</BODY></HTML> </xsl:template> <xsl:template match="op:book"> <TR> <TD><xsl:value-of select="op:title"/></TD> <TD><xsl:value-of select="op:price"/></TD> </TR> </xsl:template>
</xsl:stylesheet></source>
Transform XML document to HTML
<source lang="csharp">
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="XmlToHtml" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Untitled Page</title>
</head> <body>
<form id="form1" runat="server">
</form>
</body> </html> File: Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Xml.Xsl; using System.Xml.XPath; using System.Xml; public partial class XmlToHtml : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) { string xslFile = Server.MapPath("Data.xslt"); string xmlFile = Server.MapPath("Data.xml"); string htmlFile = Server.MapPath("Data.htm"); XslTransform transf = new XslTransform(); transf.Load(xslFile); transf.Transform(xmlFile, htmlFile); XPathDocument xdoc = new XPathDocument(new XmlTextReader(xmlFile)); XPathNavigator xnav = xdoc.CreateNavigator(); XmlReader reader = transf.Transform(xnav, null); reader.MoveToContent(); Response.Write(reader.ReadOuterXml()); reader.Close(); }
} File: Data.xml <?xml version="1.0"?>
<DVD ID="1" Category="Category 1"> <Title>title 1</Title> <Director>directory 2</Director> <Price>1</Price> <Starring> <Star>star 1</Star> <Star>star 2</Star> </Starring> </DVD> <DVD ID="2" Category="Category 2"> <Title>title 2</Title> <Director>directory 2</Director> <Price>2</Price> <Starring> <Star>star 3</Star> <Star>star 4</Star> </Starring> </DVD>
File: Data.xsl <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"/> <xsl:template match="/"> <xsl:element name="Movies"> <xsl:apply-templates select="//DVD" /> </xsl:element> </xsl:template> <xsl:template match="DVD"> <xsl:element name="{name()}"> <xsl:attribute name="ID"> <xsl:value-of select="@ID"/> </xsl:attribute> <xsl:attribute name="Title"> <xsl:value-of select="Title/text()"/> </xsl:attribute> <xsl:apply-templates select="Starring" /> </xsl:element> </xsl:template> <xsl:template match="Starring"> <xsl:element name="Stars"> <xsl:attribute name="Name"> <xsl:value-of select="Star/text()"/> </xsl:attribute> </xsl:element> </xsl:template>
</xsl:stylesheet></source>
Use XslTransform to trasnform XML data to HTML file (VB.net)
<source lang="csharp">
<%@ Page Language="VB" %> <%@ Import Namespace="System.Xml" %> <%@ Import Namespace="System.Xml.XPath" %> <%@ Import Namespace="System.Xml.Xsl" %> <script runat="server">
sub Page_Load(Sender as Object, e as EventArgs) Dim objReader as New XmlTextReader(Server.MapPath("Data.xml")) Dim objDoc as XPathDocument = new XPathDocument(objReader) Dim objNav as XPathNavigator = objDoc.CreateNavigator() Dim objXSLT As XslTransform = New XslTransform() dim objWriter as XmlTextWriter = new XmlTextWriter(Server.MapPath("output.html"), nothing) try objXSLT.Load(Server.MapPath("Data.xslt")) objXSLT.Transform(objDoc, nothing, objWriter) Response.Write("File written successfully") catch ex As Exception Response.Write(ex.Message) finally objReader.Close objWriter.Close end try end sub
</script> <html><body> </body></html>
File: Data.xml
<?xml version="1.0"?> <bookstore>
<book genre="asdf"> <title>asdf</title> <author> <first-name>asdf</first-name> <last-name>asdf</last-name> </author> <price>asdf</price> </book> <book genre="asdf"> <title>asdf</title> <author> <first-name>asdf</first-name> <last-name>asdf</last-name> </author> <price>asdf</price> </book> <book genre="asdf"> <title>asdf</title> <author> <first-name>asdf</first-name> <last-name>asdf</last-name> </author> <price>asdf</price> </book>
</bookstore> File: Data.xsl <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:op="x-schema:books.xdr" version="1.0" > <xsl:template match="op:bookstore"> <HTML><BODY>
Title | Price |
</BODY></HTML> </xsl:template> <xsl:template match="op:book"> <TR> <TD><xsl:value-of select="op:title"/></TD> <TD><xsl:value-of select="op:price"/></TD> </TR> </xsl:template>
</xsl:stylesheet></source>