请查看此示例链接地址:(weather.gov)
http://140.90.113.200/xml/current_obs/KLAX.xml
如果您在浏览器中查看页面源,您可以看到它以XML格式显示数据(usng xsl。?)。
我需要实现这样一个简单的网页。
我认为该网站使用XML XSL ...
我将在asp.net中实现一个web应用程序,该应用程序将使用存储在sql数据库(或xml数据库或Web服务)中的数据,并像其他普通网站一样显示这些信息,但在xml格式中显示在不错的UI中(使用xsl?)。那个天气网站只是展示我想做什么的样本(我不会使用该网站的任何数据,我的应用程序是不同的。)我的要求是能够查看页面源仅以XML格式。现在我很清楚xsl是解决方案,但考虑在asp.net中使用此方法。(在动态asp.net页面中使用xml / xsl)< / p>
我的问题?
对我来说,以xml格式输出网页(在页面视图源中以xml格式显示)非常重要,但对用户而言看起来对用户友好。
1.我可以在asp.net中做到吗?
请指导我。我很感激任何示例应用程序,网址,代码或信息,以表明它。
感谢。
答案 0 :(得分:3)
视图-出处:http://140.90.113.200/latest_ob.xsl
这应该可以帮助你了解你需要做什么,不是吗?
答案 1 :(得分:1)
确定,.. 作为一个简单的测试(在ASP.NET,SQL中),我使用数据集来存储来自DB的数据,然后填写XmlDataDocument。然后XslCompiledTransform和XmlTextWriter用于加载定义的xsl ..最后样式化的xml页面将使用Response.OutputStream发送到页面。运行页面后,似乎xml页面使用xsl设置样式,但我的主要问题仍然存在: Simple Database是一个SQL数据库,其表包含4列:ID,Name,Age,Phone 这是我的Default.aspx.cs (代码) - (我没有更改default.aspx的预定义设计)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Data;
using System.Xml;
using System.Xml.Xsl;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection Conn = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=TestDB;Integrated Security=SSPI;");
Conn.Open();
DataSet DS = new DataSet("TestDataSet");
SqlDataAdapter DA = new SqlDataAdapter("SELECT TOP 1 * FROM TableTest", Conn);
DA.Fill(DS, "Persons");
Conn.Close();
DS.EnforceConstraints = false;
XmlDataDocument xmlDoc = new XmlDataDocument(DS);
// Create a procesing instruction.
XmlProcessingInstruction newPI;
String PItext = "<?xml version='1.0' encoding='utf-8'?>'";
newPI = xmlDoc.CreateProcessingInstruction("xml-stylesheet", PItext);
// Add the processing instruction node to the document.
xmlDoc.AppendChild(newPI);
XslCompiledTransform xslTran = new XslCompiledTransform();
xslTran.Load(MapPath("TestTransform.xsl"));
// Response.ContentType = "text/xml;charset=UTF-8";
XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, System.Text.Encoding.UTF8);
xslTran.Transform(xmlDoc, null, writer);
writer.Close();
}
}
这是一个简单的XSL文件(TestTransform.xsl)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:str="http://xsltsl.org/string" version="1.0">
<xsl:output method="html"/>
<xsl:template match="Persons">
<html>
<head>
<title>
Simple Test : Information for : <xsl:value-of select="Name/text()"/>
</title>
</head>
<style type="text/css">
.label { font-weight: bold; vertical-align: text-top; text-align: right;}
.xsllocation { font-size: 18px; color: white; font-weight: bold; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; }
</style>
<body bgcolor="#ddffff" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" background="/images/background1.gif">
<table width="700" border="0" cellspacing="0">
<td width="525" valign="top">
<table cellspacing="2" cellpadding="0" border="0">
<tr valign="top">
<td>       </td>
<td width="100%" align="center">
<a name="contents" id="contents"></a>
<table style="margin-left: 10px;" align="left">
<xsl:variable name="name">
<xsl:value-of select="Name/text()"/>
</xsl:variable>
<xsl:if test="$name != 'NA' and $name != ''">
<tr>
<td class="label">Name is:</td>
<td>
<xsl:copy-of select="$name"/>
</td>
</tr>
</xsl:if>
<xsl:variable name="age">
<xsl:value-of select="Age/text()"/>
</xsl:variable>
<xsl:if test="$age != 'NA' and $age != ''">
<tr>
<td class="label">Age:</td>
<td>
<xsl:copy-of select="$age"/> years old
</td>
</tr>
</xsl:if>
<xsl:variable name="phone">
<xsl:value-of select="Phone/text()"/>
</xsl:variable>
<xsl:if test="$phone != 'NA' and $phone != ''">
<tr>
<td class="label">Phone Number:</td>
<td>
<xsl:copy-of select="$phone"/>
</td>
</tr>
</xsl:if>
</table>
</td>
</tr>
</table>
</td>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
1.低于该简单代码页的结果当我运行并在页面源中查看(使用浏览器)时显示html标签(如body,td, ...):
<html xmlns:str="http://xsltsl.org/string"><head><title>
Simple Test : Information for : Mr Abc </title></head><style type="text/css">
.label { font-weight: bold; vertical-align: text-top; text-align: right;}
.xsllocation { font-size: 18px; color: white; font-weight: bold; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; }
</style><body bgcolor="#ddffff" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" background="/images/background1.gif"><table width="700" border="0" cellspacing="0"><td width="525" valign="top"><table cellspacing="2" cellpadding="0" border="0"><tr valign="top"><td> </td><td width="100%" align="center"><a name="contents" id="contents" /><table style="margin-left: 10px;" align="left"><tr><td class="label">Name is:</td><td>Mr Abc </td></tr><tr><td class="label">Age:</td><td>32 years old
</td></tr><tr><td class="label">Phone Number:</td><td>345353232 </td></tr></table></td></tr></table></td></table></body></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title></head>
<body>
<form name="form1" method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZKwzWK/GivBcwTW8PWk8wUf8dacg" />
</div>
<div>
</div>
</form>
</body>
</html>
但正如我之前所说,我需要让它看起来像提到的天气页面(请在浏览器中查看页面来源).. 这样的东西: * 当 *我点击浏览器上的页面查看源...
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="TestTransform.xsl" type="text/xsl"?>
<Persons version="1.0"
<Name>Mr Abc</Name>
<Age>32</Age>
<Phone>345353232</Phone>
</Persons>
问题是什么? 我怎么能在asp.net中解决这个问题?
答案 2 :(得分:0)
您需要使用XSLT进行XML转换的教程: