電子工業出版社 JEUISHING HOUSE DF ELECTRONCS INDSTR 【例14.4】 doc.xsl.代码 <?xml version="1.0 encoding="GB2312 ? <xsl:stylesheetxmins:xsl=http://www.w3.org/tr/wd-xs1> <html>body> <xsl: apply-templates/> </body ></html> xs: template match="地址"> TD>姓名</TD TD>省份</TD》 TD>城市</TD> TD>街道</TD> <TD>邮政编码</TD <xsl: for-each select="名单" order-by="+姓名” R> TD》<xsl: value-of select="姓名"/></T <TD》<xsl: value- of select="城市"/></TD <TD><xsl: value- of select="街道"/></TD》 <TD》<xsl: value- of select="邮政编码"/</TD /TR> </xsl: templat / 在需要转换的XML文档的加入一行<xm- stylesheet type=" text/xsl"href="doc.xs"?>,说 明该XML文档需要名为 doc. xsl的XSL文件转换。 <?xml version="1.0 encoding="GB2312"?> text/xsl" href="de >李《姓 名>中国</名 省》广东省《/ 城市省="广东">广州</城市
【例 14.4】doc.xsl.代码 <?xml version="1.0" encoding="GB2312" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html><body> <xsl:apply-templates/> </body></html> </xsl:template> <xsl:template match="地址"> <Table border="2"> <TR> <TD>姓名</TD> <TD>省份</TD> <TD>城市</TD> <TD>街道</TD> <TD>邮政编码</TD> </TR> <xsl:for-each select="名单" order-by="+姓名" > <TR> <TD><xsl:value-of select="姓名"/></TD> <TD><xsl:value-of select="省"/></TD> <TD><xsl:value-of select="城市"/></TD> <TD><xsl:value-of select="街道"/></TD> <TD><xsl:value-of select="邮政编码"/></TD> </TR> </xsl:for-each> </Table> </xsl:template> </xsl:stylesheet> 在需要转换的 XML 文档的加入一行<?xml-stylesheet type="text/xsl" href="doc.xsl"?>,说 明该 XML 文档需要名为 doc.xsl 的 XSL 文件转换。 <?xml version="1.0" encoding="GB2312"?> <?xml-stylesheet type="text/xsl" href="doc.xsl"?> <地址> <名单> <姓名> <姓>李</姓> <名>中国</名> </姓名> <省>广东省</省> <城市 省="广东">广州</城市>
電子工業出版社 JEUISHING HOUSE DF ELECTRONCS INDSTR <街道〉 北京路15号 邮政编码 514000 </邮政编码 /名单〉 名单 姓名 姓>王</姓 名>中</名 /姓名 省〉广东省/省〉 城市省="广东">广州</城市〉 街道 北京路15号 /街道 邮政编码 514000 /邮政编码〉 /名单〉 名单> 姓>吴√/姓〉 名>国</名> /姓名 <省》广东省√/省 城市省="广东"》广州</城市〉 街道 北京路115号 <邮政编码 514000 </邮政编码 /名单〉 /地址 用IE浏览器打开上述文件,得到下列结果 姓名省份城市街道邮政编码 李中国广东省广州北京路15号51400 王中广东省广州北京路15号540 吴国广东省广州北京路115号51400 结果表明通过转换,已经将XML文档转换为标准的HIML文档
<街道> 北京路 15 号 </街道> <邮政编码> 514000 </邮政编码> </名单> <名单> <姓名> <姓>王</姓> <名>中</名> </姓名> <省>广东省</省> <城市 省="广东">广州</城市> <街道> 北京路 15 号 </街道> <邮政编码> 514000 </邮政编码> </名单> <名单> <姓名> <姓>吴</姓> <名>国</名> </姓名> <省>广东省</省> <城市 省="广东">广州</城市> <街道> 北京路 115 号 </街道> <邮政编码> 514000 </邮政编码> </名单> </地址> 用 IE 浏览器打开上述文件,得到下列结果: 姓名 省份 城市 街道 邮政编码 李 中国 广东省 广州 北京路 15 号 514000 王 中 广东省 广州 北京路 15 号 514000 吴 国 广东省 广州 北京路 115 号 514000 结果表明通过转换,已经将 XML 文档转换为标准的 HTML 文档
電子工業出版社 JEUISHING HOUSE DF ELECTRONCS INDSTR 【例145】AUTO模式查询 在查询分析器,执行下列查询: CT Customers. Customer ID, Orders. Order ID, Orders. OrderDate WHERE Customers. Customer ID= Orders. CustomerID and Customers. country= UK ORDER BY Customers. Customer ID FOR XML AUTO 得到下列结果(部分) <Customers Cus tomer ID= arout> <Orders OrderID="10864 OrderDate=1998-02-02T00: 00: 00/> < Orders OrderId="10920"0 deraTe="1998-03-03100:00:00"/ <Orders OrderID=10953" OrderDate=1998-03-16T00: 00: 00/> <Orders OrderID=11016 OrderDate=1998-04-10T00: 00: 000/> <Orders OrderID=10726 OrderDate=1997-11-03T00: 00: 00/> </Customers> 【例146】RAW模式查询 在查询分析器执行下列查询 SELECT Customers. CustomerId, Orders. Order id, Orders. OrderDate FROM Customers. Orders WHERE Customers. Customer ID Orders Cus tomerID and Customers. country="UK ORDER BY Customers. Customer Id FOR XML RAW 得到下列结果(部分) <row CustomerID=AROUT"OrderID=10864 Order Date=1998-02-02T00: 00: 00p <row CustomerID="AROUT"OrderID=10920"Order Date="1998-03-03T00: 00: 00"p <row CustomerID="AROUT" OrderID=10953"Order Date=1998-03-16T00: 00: 00"p> <row CustomerID="AROUt"OrderID=110 100: 00: 00"p> 例如:生成下列一个通用表 Parent Customer! 1 CustomerId OrderId ALFKI ALFKI 10643 【例147】 EXPLICIT模式查询
【例 14.5】 AUTO 模式查询 在查询分析器, 执行下列查询: SELECT Customers.CustomerID, Orders.OrderID, Orders.OrderDate FROM Customers, Orders WHERE Customers.CustomerID = Orders.CustomerID and Customers.country='UK' ORDER BY Customers.CustomerID FOR XML AUTO 得到下列结果(部分): <Customers CustomerID="AROUT"> <Orders OrderID="10864" OrderDate="1998-02-02T00:00:00"/> <Orders OrderID="10920" OrderDate="1998-03-03T00:00:00"/> <Orders OrderID="10953" OrderDate="1998-03-16T00:00:00"/> <Orders OrderID="11016" OrderDate="1998-04-10T00:00:00"0"/> <Orders OrderID="10726" OrderDate="1997-11-03T00:00:00"/> </Customers> 【例 14.6】 RAW 模式查询 在查询分析器,执行下列查询: SELECT Customers.CustomerID, Orders.OrderID, Orders.OrderDate FROM Customers, Orders WHERE Customers.CustomerID = Orders.CustomerID and Customers.country='UK' ORDER BY Customers.CustomerID FOR XML RAW 得到下列结果(部分): <row CustomerID="AROUT" OrderID="10864" OrderDate="1998-02-02T00:00:00"/> <row CustomerID="AROUT" OrderID="10920" OrderDate="1998-03-03T00:00:00"/> <row CustomerID="AROUT" OrderID="10953" OrderDate="1998-03-16T00:00:00"/> <row CustomerID="AROUT" OrderID="110100:00:00"/> 例如:生成下列一个通用表: Tag Parent Customer!1! CustomerID Order!2! OrderID 1 Null ALFKI Null 2 1 ALFKI 10643 …….. ……. …….. ……… 【例 14.7】 EXPLICIT 模式查询
電子工業出版社 JEUISHING HOUSE DF ELECTRONCS INDSTR 在査询分析器中,实施下列查询 SELECt I as Tag, Customers. Cus tomerID as [Customer! 1! CustomerID NULL as [Order! 2! OrderID FROM Customers UNION ALL Customers. Cus tomer id Orders. OrderId FROM Customers. Orders WHERE Customers. Customer Id= Orders. CustomerID ORDER BY [Customer!! CustomerID], [Order! 2! OrderID] FOR XML EXPLICIT 说明: 在第一个 SELECT语句中,获取所有< Customer:>元素及其特性值。在含有多个 SELECT语句的查询中,只使用在第一个查询中指定的列名(通用表列名)。忽略在第二个 SELECT语句中指定的列名。 在第二个查询中检索所有< Order>元素及其特性值 使用 UNION ALL组合此查询中的两个 SELECT语句 得到下列结果(部分 <Customer CustomerID=ALFKI> <Order OrderID=10643">> <Order OrderID=10692>> <Order OrderID=10702">> Order OrderID=10835">> <Order OrderID=10952>> Order OrderID=11011">> </Customer> 【例14.8】直接在浏览器地址栏输入查询语句 例如本地服务器名为 lund 2ks,虚拟目录名为 testxm, FOR XML子句采用AUTO模 式 http://lundw2ks/testxml?sql=selectCustomersCustomerid, Orders. OrderId Orders. OrderDate FRom Customers. Orders WHERE Customers. Customer id Orders. CustomerID and Customers. country="UK FOR XML aUTO&root=ROOT 直接在浏览器输入上述URL,可得到下列XML文档的结果(部分结果)
在查询分析器中,实施下列查询 SELECT 1 as Tag, NULL as Parent, Customers.CustomerID as [Customer!1!CustomerID], NULL as [Order!2!OrderID] FROM Customers UNION ALL SELECT 2, 1, Customers.CustomerID, Orders.OrderID FROM Customers, Orders WHERE Customers.CustomerID = Orders.CustomerID ORDER BY [Customer!1!CustomerID], [Order!2!OrderID] FOR XML EXPLICIT 说明: 在第一个 SELECT 语句中,获取所有 <Customer> 元素及其特性值。在含有多个 SELECT 语句的查询中,只使用在第一个查询中指定的列名(通用表列名)。忽略在第二个 SELECT 语句中指定的列名。 在第二个查询中检索所有 <Order> 元素及其特性值. 使用 UNION ALL 组合此查询中的两个 SELECT 语句。 得到下列结果(部分): <Customer CustomerID="ALFKI"> <Order OrderID="10643"/> <Order OrderID="10692"/> <Order OrderID="10702"/> <Order OrderID="10835"/> <Order OrderID="10952"/> <Order OrderID="11011"/> </Customer> 。。。。。。。 【例 14.8】直接在浏览器地址栏输入查询语句 例如本地服务器名为 lundw2ks, 虚拟目录名为 testxml, FOR XML 子句采用 AUTO 模 式。 http://lundw2ks/testxml?sql=SELECT Customers.CustomerID, Orders.OrderID, Orders.OrderDate FROM Customers, Orders WHERE Customers.CustomerID = Orders.CustomerID and Customers.country='UK' FOR XML AUTO&root=ROOT 直接在浏览器输入上述 URL, 可得到下列 XML 文档的结果(部分结果):
電子工業出版社 JSHING HOUSE DF ELECTRONCS INDSTE <?xml version="1. 0 encoding="utf-8 ? <ROOT> <Orders Order ID=10289 OrderDate= 1996-08-26T00: 00: 00"/> </Customers> </ROOT> 【例149】通过HITP执行存储过程 首先在目标数据库创建存储过程,名为 test sp, create procedure test s SELECT Customers. Customer ld, Orders. Order id, Orders. OrderDate FROM Customers. Orders WHERE Customers. Customer ID= Orders. CustomerID and Customers. country= UK FOR XML AUTO 【例14.10】使用模板访问数据库 模板代码: Kroot xmIns: sql=urn: schemas-microsoft-com: xmI-sql'> SELECT Customers. Customer ID, Orders. Order ID, Orders, OrderDate FROM Customers Orders WHERE Customers. Customer ID= Orders. CustomerID and Customers. country= UK for xml auto
<?xml version="1.0" encoding="utf-8" ?> - <ROOT> - <Customers CustomerID="BSBEV"> <Orders OrderID="10289" OrderDate="1996-08-26T00:00:00" /> </Customers> ....... </ROOT> 【例 14.9】通过 HTTP 执行存储过程 首先在目标数据库创建存储过程, 名为 test_sp, create procedure test_sp as SELECT Customers.CustomerID, Orders.OrderID, Orders.OrderDate FROM Customers, Orders WHERE Customers.CustomerID = Orders.CustomerID and Customers.country='UK' FOR XML AUTO 【例 14.10】使用模板访问数据库 模板代码: <root xmlns:sql='urn:schemas-microsoft-com:xml-sql'> <sql:query> SELECT Customers.CustomerID, Orders.OrderID, Orders.OrderDate FROM Customers, Orders WHERE Customers.CustomerID = Orders.CustomerID and Customers.country='UK' for xml auto </sql:query> </root>