|
|
|
| 使用 XML 模板 |
| 作者:佚名 来源:不详 编辑:shaiit |
| |
使用 XML 模板 下面是模板的一般形式,显示了指定 SQL 查询和 XPath 查询的方式:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql" sql:xsl='XSL FileName' > <sql:header> <sql:param>..</sql:param> <sql:param>..</sql:param>...n </sql:header> <sql:query> sql statement(s) </sql:query> <sql:xpath-query mapping-schema="SchemaFileName.xml"> XPath query </sql:xpath-query> </ROOT>
模板中的任何元素都是可选的。元素 <header>、<param>、<query>、<XPath-query> 和特性映射架构在 sql 命名空间中定义。因此,必须在命名空间中声明 xmlns:sql="urn:schemas-microsoft-com:xml-sql"。可对命名空间任意命名;sql 只是一个别名。
<ROOT>
指定此标记以提供所得到的 XML 文档的单个顶层元素(也称为根标记)。<ROOT> 标记可以是任何名称。
<sql:header>
此标记用于保存所有标题值。在目前的实施方案中,只能在此标记中指定 <sql:param> 元素。<sql:header> 用作包含标记,使您得以定义多个参数。所有的参数定义都在一个位置中,这使得处理参数定义更有效。
<sql:param>
该元素用于定义在模板内传递到查询的参数。每个 <param> 元素定义一个参数。可以在 <sql:header> 标记中定义多个 <param> 元素。
<sql:query>
该元素用于指定 SQL 查询。可以在模板中指定多个 <sql:query> 元素。
<sql:xpath-query>
该元素用于指定 XPath 查询。因为 XPath 查询是在带批注的 XML 数据简化 (XDR) 架构上执行,所以必须使用 mapping-schema 特性指定架构文件名。
sql:xsl
该特性用于指定将应用于所得到的 XML 文档的可扩展样式表语言 (XSL) 样式表。在指定映射架构文件时,可以指定相对或绝对路径。指定的相对路径是相对于与 template 类型的虚拟名称关联的目录。例如,如果与 template 类型的虚拟名称相关联的目录是 C:\Template,那么为 sql:xsl 指定的相对路径 Xyz/MyXSL.xml 将映射到 C:\Template\Xyz\MyXSL.xml。
mapping-schema
该特性用于标识带批注的 XDR 架构。仅当在模板中执行 XPath 查询时才指定该特性。XPath 查询在带批注的 XDR 架构上执行。在指定映射架构文件时,可以指定相对或绝对路径。指定的相对路径是相对于与 template 类型的虚拟名称关联的目录。例如,如果与 template 类型的虚拟名称关联的目录是 C:\Template,则相对路径(为 mapping-schema 指定的 schema/MSchema.xml)映射到 C:\Template\Schema\MSchema.xml。
说明 每个 <sql:query> 或 <sql:XPath-query> 表示单独的事务。因此,如果在模板中有多个 <sql:query> 或 <sql:XPath-query> 标记,当一个标记失败时,其它标记将继续。
如果设置了 contenttype,则 Sqlisapi.dll 将标题信息返回给浏览器。如果没有设置 contenttype,则 urlmon 使用模板文件中的第一个字符确定内容类型。如果模板中的第一个字符是 < 字符或 Unicode 字节顺序标志 (0xFFFE),则将 text/xml 作为内容类型返回给浏览器,且浏览器显示结果。否则,Sqlisapi.dll 不发送用以指导浏览器如何显示结果的内容类型标题信息;因此,在浏览器中将看不到结果。
可以在 URL 模板中指定模板之前,必须使用用于 SQL Server 的 IIS 虚拟目录管理实用工具创建 template 类型的虚拟名称。有关更多信息,请参见使用用于 SQL Server 的 IIS 虚拟目录管理实用工具。
存储模板 模板存储在与 template 类型的虚拟名称关联的目录或它的一个子目录中:
如果模板存储在与 template 类型的虚拟名称关联的目录中,则 URL 查询的形式如下: http://IISServer/nwind/TemplateVirtualName/TemplateFile.xml
如果模板存储在与 template 类型 (xyz) 的虚拟名称关联的子目录中,则 URL 查询的形式如下: http://IISServer/nwind/TemplateVirtualName/xyz/TemplateFile.xml在模板中指定 XSL 样式表可以对查询结果应用可扩展样式表语言 (XSL) 样式表。当使用 HTTP 执行模板时,可以用下列方法指定 XSL 文件: 在模板中使用 sql:xsl 特性。使用 xsl 关键字作为 URL 的一部分,以指定将用于处理所得到的 XML 数据的 XSL 文件。 如果在模板中使用 sql:xsl 指定 XSL 文件并且在 URL 中使用关键字 xsl 指定 XSL 文件,则先对结果应用在模板中指定的 XSL 样式表,然后应用在 URL 中指定的 XSL 文件。示例在下列示例中,nwind 是使用用于 SQL Server 的 IIS 虚拟目录管理实用工具创建的虚拟目录,template 是创建虚拟目录时定义的 template 类型的虚拟名称(创建虚拟目录时可以为其指定任何虚拟名称)。有关更多信息,请参见使用用于 SQL Server 的 IIS 虚拟目录管理实用工具。A. 在模板中指定 sql:xsl 以处理结果在下例中,模板包含简单的 SELECT 语句。按照使用 sql:xsl 指定的 XSL 文件中的说明处理查询结果。<?xml version ='1.0' encoding='UTF-8'?> <root xmlns:sql='urn:schemas-microsoft-com:xml-sql' sql:xsl='MyXSL.xsl'> <sql:query> SELECT FirstName, LastName FROM Employees FOR XML AUTO </sql:query> </root> 为举例说明,将模板 (TemplateWithXSL.xml) 存储在与 template 类型的虚拟名称 (template) 关联的目录中。XSL 文件 (MyXSL.xsl) 也存储在同一目录中。下面是 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 = 'Employees'> <TR> <TD><xsl:value-of select = '@FirstName' /></TD> <TD><B><xsl:value-of select = '@LastName' /></B></TD> </TR> </xsl:template> <xsl:template match = '/'> <HTML> <HEAD> <STYLE>th { background-color: #CCCCCC }</STYLE> </HEAD> <BODY> [1] [2] [3] [4] [5] 后一页 |
|
|
| 告诉好友 打印此文 关闭窗口 返回顶部 |
|
|
|