您可以使用 Xml Web 服务器控件来显示 XML 文档的内容,且不需要进行格式化或使用 XSL 转换。
一、方案
Xml Web 服务器控件读取 XML 并将其写入该控件所在的 ASP.NET 网页。如果将 XSL 转换 (XSLT) 应用到 XML,则最终转换的输出将呈现在该页中。
二、背景
您可以使用 XML Web 服务器控件将 XML 文档或 XSLT 转换的结果写入 ASP.ENT 网页。XML 输出显示在该控件所在的网页中。
说明: 若要将 XML 数据用作其他控件(如 Repeater、DataList 或 GridView 控件)的源,可以使用 XmlDataSource 控件。
XML 和 XSLT 信息可以在外部文档中,或者可以内联方式包括 XML。有两种方式通过使用 XML Web 服务器控件中的属性设置来引用外部文档。您可以在控件标记中提供 XML 文档的路径,或者将 XML 和 XSLT 文档以编程方式作为对象加载,然后将它们传递给控件。如果您喜欢以内联方式包括 XML,在控件的开始和结束标记之间写入 XML。
可通过设置下表中列出的属性之一来指定要显示的 XML 文档。这三个属性表示可以显示的 XML 文档的不同类型。通过设置适当的属性,可以显示 System.Xml.XmlDocument、XML 字符串或 XML 文件。
属性 | 说明 | ||
使用 System.Xml.XmlDocument 对象设置 XML 文档。 | |||
使用字符串设置 XML 文档。
| |||
使用文件设置 XML 文档。 |
若要显示 XML 文档,则必须至少设置一个 XML 文档属性。如果设置了多个 XML 文档属性,则将显示最后设置的属性中引用的 XML 文档。其他属性中的文档将被忽略。
您可以选择性地设置属性,以指定一个在 XML 文档写入输出流之前对其进行格式化的 XSL 转换 (XSLT) 样式表。这些属性表示可用于格式化文档的不同类型的 XSL 转换样式表。通过设置适当的属性,可以用 System.Xml.Xsl.XslCompiledTransform 对象或 XSL 转换样式表文件来格式化 XML 文档。如果未指定 XSL 转换样式表,则可使用默认格式显示 XML 文档。
三、演练:使用转换在 Web 窗体页中显示 XML 文档
本演练演示如何在网页中显示 XML 文档的信息。在本演练中,您将创建一个简单的 XML 文件。然后将使用 ASP.NET 服务器控件和 XSLT 转换在网页中显示 XML 文件的内容。
说明: 也可以将 XML 文件用作数据源,使用 GridView 控件等控件显示其内容。
若要在网页中显示 XML 信息,必须提供格式设置和显示信息。例如,必须提供 table 元素、p 元素或显示信息时所要用的任何信息。另外,您必须说明 XML 文件中的数据如何适当地放入这些标记中。例如,您可能决定将 XML 文件中的每个元素显示为表中的一行。
提供这些说明的一种方式是在 ASP.NET 页面中使用代码来分析 XML 文件并将数据填充到适当的 HTML 标记中。此方法既费时又难以维护,但它也是对 XML 文件进行精确的编程控制的一种强有力的方式。
一种更好的方式是使用 XSL 转换语言并创建转换(即 XSL 文件)。XSL 转换包含以下信息:
·一个模板,类似于 HTML 页。该模板指定应如何显示 XML 信息。
·XSL 处理指令,它精确地指定如何将 XML 文件中的信息放入模板中。
创建 XSL 转换后,必须将它们应用于 XML 文件。也就是说,应根据一个 XSL 文件对 XML 文件进行转换来处理该 XML 文件。输出是一个新文件,已根据转换文件对 XML 信息进行了格式设置。
这也是可以以编程方式执行的过程。但是,您还可以利用 Xml 服务器控件。此控件用作 ASP.NET 网页上的占位符。可将其属性设置为特定 XML 文件和 XSL 转换。处理网页时,控件会读取 XML,应用转换,然后显示结果。
本演练演示如何通过 XSL 转换使用 Xml 服务器控件显示 XML 信息。在此方案中,您将具有以下项:
·包含多个虚构电子邮件的 XML 文件。
·两个 XSL 转换。一个只显示电子邮件的日期、发件人和主题。另一个显示整个电子邮件。
您将创建一个网页,允许用户以两种不同的方式显示 XML 信息。该页包含一个“仅标题”复选框,该复选框是默认选中的。因此,默认转换是只显示电子邮件头的那个转换。如果用户清除该复选框,则重新显示具有完整电子邮件内容的 XML 信息。
3.1、创建网站和网页
在本部分演练中,将创建一个网站并为其添加新页。在本演练中,您将创建一个不需要使用 Microsoft Internet 信息服务 (IIS) 的文件系统网站。相反,您将在本地文件系统中创建和运行页。
创建文件系统网站
·打开 Visual Web Developer。
·在“文件”菜单上单击“新建网站”。
·在“Visual Studio 已安装的模板”之下选择“ASP.NET 网站”。
·在“位置”框中选择“文件系统”,然后输入要在其中保存网站页面的文件夹的名称。例如,键入文件夹名“C:\WebSites”。
·在“语言”列表中,单击“Visual Basic”或“Visual C#”。
·单击“确定”。
3.2、添加 XML 文件和 XSL 转换
在本部分演练中,将创建一个 XML 文件和两个 XSLT 文件。
1、将 XML 文件添加到项目中
·在解决方案资源管理器中,右击“App_Data”文件夹,然后单击“添加新项”。
说明: 将 XML 文件放入“App_Data”文件夹时,XML 文件就自动具有了允许 ASP.NET 在运行时对其进行读写的相应权限。另外,“App_Data”文件夹标记为不可浏览,因此可防止在浏览器中查看该文件。
·在“Visual Studio 已安装的模板”之下单击“XML 文件”。
·在“名称”框中键入 Emails.xml。
·单击“添加”。
·创建一个仅包含 XML 指令的新 XML 文件。
·复制下面的 XML 数据,然后将其粘贴到文件中,并覆盖该文件中的内容。
<?xml version="1.0" ?>
<messages>
<message id="101">
<to>JoannaF</to>
<from>LindaB</from>
<date>04 September 2007</date>
<subject>Meeting tomorrow</subject>
<body>Can you tell me what room where the committee meeting will be in?</body>
</message>
<message id="109">
<to>JoannaF</to>
<from>JohnH</from>
<date>04 September 2007</date>
<subject>I updated the site</subject>
<body>I posted the latest updates to our internal Web site, as you requested. Let me know if you have any comments or questions. -- John
</body>
</message>
<message id="123">
<to>JoannaF</to>
<from>LindaB</from>
<date>05 September 2007</date>
<subject>re: Meeting tomorrow</subject>
<body>Thanks. By the way, do not forget to bring your notes from the conference. See you later!</body>
</message>
</messages>
·保存文件并将其关闭。
下一步,将两个 XSL 转换添加到您的项目中。
2、将 XSL 转换添加到您的项目中
·在解决方案资源管理器中,右击“App_Data”文件夹,然后单击“添加新项”。
·在“Visual Studio 已安装的模板”之下单击“文本文件”。没有转换文件的模板。因此,可以通过创建具有正确扩展名的文本文件的方式来创建。
·在“名称”框中键入 Email_headers.xslt。
·单击“添加”。即创建了一个新的空白文件。
·复制下面的代码示例并将其粘贴到该文件中。
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<html>
<body>
<table cellspacing="3" cellpadding="8">
<tr bgcolor="#AAAAAA">
<td class="heading"><strong>Date</strong></td>
<td class="heading"><strong>From</strong></td>
<td class="heading"><strong>Subject</strong></td>
</tr>
<xsl:for-each select="messages/message">
<tr bgcolor="#DDDDDD">
<td width="25%" valign="top">
<xsl:value-of select="date"/>
</td>
<td width="20%" valign="top">
<xsl:value-of select="from"/>
</td>
<td width="55%" valign="top">
<strong><xsl:value-of select="subject"/></strong>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
说明: 可以随意调整此模板;例如,可以更改颜色、字体大小、样式或其他功能。
·保存文件并将其关闭。
·重复第 1 步到第 4 步,但这一次将文件命名为“Email_all.xslt”。
·将下面的代码示例粘贴到“Email_all.xslt”文件中。
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<html>
<body>
<table cellspacing="10" cellpadding="4">
<xsl:for-each select="messages/message">
<tr bgcolor="#CCCCCC">
<td class="info">
Date: <strong><xsl:value-of select="date"/></strong>
<br /><br />
To: <strong><xsl:value-of select="to"/></strong>
<br /><br />
From: <strong><xsl:value-of select="from"/></strong>
<br /><br />
Subject: <strong><xsl:value-of select="subject"/></strong>
<br /><br />
<br /><br />
<xsl:value-of select="body"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
·保存文件并将其关闭。
3.3、向页添加 Xml 控件
具有一个 XML 文件和两个转换之后,即可使用它们在网页中显示信息。使用 Xml 服务器控件完成该操作。
·打开或切换到 Default.aspx 页。
·切换到“设计”视图。
·从“工具箱”的“标准”选项卡中,将一个“Xml”控件拖到该页上。一个表示“Xml”控件的灰色框即添加到该页中。
·选择该控件,然后在“属性”窗口中设置以下属性。
属性 | 设置 |
DocumentSource | ~/App_Data/Emails.xml |
TransformSource | ~/App_Data/Email_headers.xslt |
这会使“XML”控件在默认情况下只显示电子邮件头。
3.4、添加控件以更改转换
在本部分演练中,您将使用一个复选框来使用户能够在转换间进行切换。Xml 控件当前应用只显示电子邮件标题的转换。
·将光标移到“Xml”控件前面,然后按几次 Enter,使“Xml