在 Ajax 中进行 XML 处理,第 2 部分: 两种使用 Ajax 和 XSLT 的方法,在 Ajax 中使用 XSLT 转换 XML

6、XML数据转换:探索XSLT的力量 本文深入探讨了XML数据转换的核心概念和技术,特别是XSLT的应用。内容涵盖XSLT的基本原理、在.NET框架中的实现、与JavaScript的结合使用以及在Web应用程序中的应用。同时介绍了XSLT的高级特性、最佳实践及未来发展趋势,帮助开发者更好地掌握这一强大的XML数据转换工具。 阅读详情

本系列文章分析了实现天气面板的四种不同方法。第一部分中介绍的一种办法是利用一种 Apache Web 服务器规则将 NWS XML 数据代理给浏览器。然后通过 JavaScript 代码从 DOM 提取需要的数据,转变为 HTML 格式再显示出来。

这一部分介绍第二和第三种方法。这两种办法有一点是共同的,即都使用 XSLT。

XSLT

常用缩写词
  • DOM:文档对象模型(Document Object Model)
  • HTML:超文本标记语言(Hypertext Markup Language)
  • XML:可扩展标记语言(Extensible Markup Language)
  • XSLT:可扩展样式表语言转换(Extensible Stylesheet Language Transformation)

XSLT 是一种查询 XML 并将其转换成其他格式的语言。这恰恰是我们所要对天气数据做的工作 — 以 XML 格式存储,但需要某种对用户(或者浏览器)更友好的格式。 NWS 数据中有些是天气面板所不需要的。需要某种技术提取需要的数据。XSLT 可以同时满足这两方面的要求。

本教程不是为了详细介绍 XSLT。关于 XSLT 的更多信息请参阅 developerWorks 文章 “What kind of language is XSLT?”(参见 参考资料)。

和其他很多计算机语言不同,XSLT 语法是有效的 XML。如果习惯于 C、Java™、Perl 或 Python 语言,可能会造成一点麻烦。

由于这两种方法都使用 XSLT,我们首先来看看它。然后再介绍如何纳入总体解决方案。

使用 XSLT 转换数据

首先看看 NWS XML 数据格式。清单 1 显示了压缩后的例子。


清单 1. 示例 NWS XML 数据文件 KNGU.xml(有删减)

<? xml version="1.0" encoding="ISO-8859-1" ?>  
< current_observation  version ="1.0"
 xmlns:xsd
="http://www.w3.org/2001/XMLSchema"
 xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation
=
 "http://www.weather.gov/data/current_obs/current_observation.xsd"
>
 
< credit > NOAA's National Weather Service </ credit >
 
< credit_URL > http://weather.gov/ </ credit_URL >
 
< image >
 
< url > http://weather.gov/images/xml_logo.gif </ url >
 
< title > NOAA's National Weather Service </ title >
 
< link > http://weather.gov </ link >
 
</ image >
 
< suggested_pickup > 15 minutes after the hour </ suggested_pickup >
 
< suggested_pickup_period > 60 </ suggested_pickup_period >
 
< location > Norfolk, Naval Air Station, VA </ location >
 
< station_id > KNGU </ station_id >
 
< latitude > 36.94 </ latitude >
 
< longitude > -76.28 </ longitude >
 
< observation_time >
                Last Updated on Jan 7, 2:53 pm EST
                
</ observation_time >
 
< observation_time_rfc822 >
 Mon, 7 Jan 2008 14:53:00 -0500 EST
 
</ observation_time_rfc822 >
 
< weather > Fair </ weather >
                
< temperature_string > 74 F (23 C) </ temperature_string >
 
< temp_f > 74 </ temp_f >
 
< temp_c > 23 </ temp_c >
 
< relative_humidity > 34 </ relative_humidity >
                
< wind_string > From the Southwest at 9 Gusting to 18 MPH </ wind_string >
 
< wind_dir > Southwest </ wind_dir >
 
< wind_degrees > 240 </ wind_degrees >
 
< visibility_mi > 10.00 </ visibility_mi >
                
< icon_url_base >
                http://weather.gov/weather/images/fcicons/
                
</ icon_url_base >
                
< icon_url_name >
                skc.jpg
                
</ icon_url_name >
 
< disclaimer_url > http://weather.gov/disclaimer.html </ disclaimer_url >
 
< copyright_url > http://weather.gov/disclaimer.html </ copyright_url >
 
< privacy_policy_url > http://weather.gov/notice.html </ privacy_policy_url >
</ current_observation >

我们只对 清单 1 中突出显示的数据感兴趣,因此 XSLT 的首要任务是提取需要的元素。接下来将这部分数据转换成 HTML 以显示到浏览器中。

清单 2 显示了达成这两个目标的 XSLT 程序。


清单 2. weather2html.xsl,天气数据 XSLT 程序

< xsl:stylesheet  version ="1.0"  
xmlns:xsl
="http://www.w3.org/1999/XSL/Transform" >

 
< xsl:output  method ="html"   />

 
< xsl:template  match ="/current_observation" >

 
< center >
 
< b >< xsl:value-of  select ="location"   /></ b >< br />
 
< xsl:value-of  select ="weather"   />< br />

 
< xsl:variable  name ="icon_url_base"  select ="icon_url_base" />
 
< xsl:variable  name ="icon_url_name"  select ="icon_url_name" />

 
< img  border ='0'  src ='{$icon_url_base}{$icon_url_name}'/><br/>
 
<xsl:value-of select ="temperature_string"   />< br />
 Wind: 
< xsl:value-of  select ="wind_string"   />< br />
 Humidity: 
< xsl:value-of  select ="relative_humidity"   /> % < br />
 Visibility: 
< xsl:value-of  select ="visibility_mi"   />  miles < br />
 
< br />< span  style ='font-size:  0.8em; font-weight: bold;' >
 
< xsl:value-of  select ="observation_time"   /></ span >< br />

 
</ center >

 
</ xsl:template >

</ xsl:stylesheet >

首先注意这一行:

<xsl:output method="html" />

它告诉 XSLT 处理程序输出的是 HTML 而不是默认的 XML 格式。

XSLT 程序看起来似乎是 HTML 和 XML 的混合,的确如此。任何以 <xsl: 开始的 XML 元素都是 XSLT 语言的语句。其他的则是直接输出的文本。

比如这一行:

<b><xsl:value-of select="location" /></b><br/>

xsl:value-of 元素要求 XSLT 处理程序找到 XML 输入文件中的 location 元素,提取元素值,在 xsl:value-of 标记所在的位置输出。结果如下所示:

<b>Norfolk, Naval Air Station, VA</b><br/>

XSLT 处理程序

和其他编程语言如 Perl、Ruby 一样,XSLT 的执行也是通过语言解释程序完成的。通常称之为 XSLT 处理程序。但 XSLT 不是一种通用 编程语言 — 只能转换一种 XML 数据文件。因此多数 XSLT 处理程序需要两个输入文件:XSLT 程序和转换的 XML 文件。

很多 Linux® 版本都包含称为 xsltproc 的 XSLT 命令行处理程序。和其他类似的工具一样,调试和优化 XSLT 脚本非常方便。

Xsltproc 需要两个参数:XSLT 程序及其操作的 XML。假设我已经下载了 Norfolk Naval Air Station in Virginia 的 NWS XML 数据到 KNGU.xml 文件中(KNGU 是第 1 部分所说的四字符气象站惟一标识符)。可以用该命令测试 清单 2 中的 XSLT 程序:

xsltproc weather2html.xsl KNGU.xml

XSLT 处理程序把 weather2html.xsl 中的转换规则应用于输入文件 KNGU.xml 并把结果写入标准输出。结果如 清单 3 所示。


清单 3. KNGU.xml XSLT 处理结果

< center >
< b > Norfolk, Naval Air Station, VA </ b >< br >
Fair
< br >
< img  border ="0"  
 src
="http://weather.gov/weather/images/fcicons/skc.jpg" >< br >
57 F (14 C)
< br >
Wind: From the West at 7 MPH
< br >
Humidity: 58%
< br >
Visibility: 7.00 miles
< br >
< br >
< span  style ="font-size: 0.8em; font-weight: bold;" >
 Last Updated on Oct 12, 7:53 am EDT
</ span >
< br >
</ center >

方法 2:XSLT 在服务器上

我打算在天气面板中采用 XSLT 方法。方法 2 中,服务器端脚本从 NWS 服务器获取数据,使用 XSLT 把 XML 转换为 HTML 然后将其返回到浏览器。浏览器将返回的 HTML 片段插入 DIV 标记。

图 1 显示了该方法中使用的数据管道。数据从 NWS 服务器流动到我的服务器,服务器端脚本将 XML 转换为 HTML。管道的重点是浏览器,接收 HTML 并插入到 Web 页面中。


图 1. 方法 2 的数据管道
方法 2 的数据管道

我需要一个能执行 XSLT 转换的服务器端程序。该程序用 Perl 编写,如 清单 4 所示,其他语言也很容易实现。该脚本通过浏览器上的 XMLHttpRequest 调用激活。Ajax JavaScript 传递给服务器端脚本一个参数:从 NWS 服务器检索 XML 数据所需要的四字符 NWS Station ID。


清单 4. weather_xml2html.cgi Perl 脚本

# ! / usr / bin / perl

use  strict ;

my 
$ DATA_DIR  =   " /var/www/html/xml_weather/data " ;
my 
$ XSL_FILE  =   " $DATA_DIR/weather2html.xsl " ;
my 
$ XSLTPROC  =   " /usr/bin/xsltproc " ;
my 
$ HTTP_BIN  =   " /usr/bin/wget -q -O -  " ;
my 
$ URL_FORMAT  =   " http://www.nws.noaa.gov/data/current_obs/%s.xml " ;

#  Get the NOAA location key:
my 
$ location  =   $ ENV{QUERY_STRING} ;

#  Minimal sanity check of the location key:
if   ($ location !~  / ^[ d w]{ 4 } $/)  {
 
print   " Content-type: text/html " ;
 
print   " Unknown location ($location). " ;
 
exit   1 ;
}

#  Build URL:
my 
$ url  =  sprintf  ($ URL_FORMAT ,   $ location );

#  Build  Command :
my 
$ cmd   =   " $HTTP_BIN '$url' 2> /dev/null | $XSLTPROC $XSL_FILE -  " ;

print   " Content-type: text/html " ;

open 
( my  $ IPIPE ,   " $cmd | " );
while 
(<$ IPIPE >)  {
 
print   $ _ ;
}
close 
$ IPIPE ;

Apache Web 服务器运行 清单 4 所示的脚本。Apache QUERY_STRING 环境变量向脚本提供四字符的 Station ID。

Perl 脚本使用两个外部命令:xsltproc 和 wget。Xsltproc 即前面所述的命令行 XSLT 处理程序。Wget 是一个免费工具(可从 Free Software Foundation 下载)。多数 Linux 发行版已经预安装了该程序。Wget 可从 Web 上抓取 Web 页面(或其他 Web 资源)。Perl 脚本使用 wget 从 NWS 服务器获取 XML 文件。

如果在 Linux 命令行中执行,Perl 脚本将构造一个命令管道,如下所示:

/usr/bin/wget -q -O - http://www.nws.noaa.gov/data/current_obs/KNGU.xml /
| /usr/bin/xsltproc /var/www/html/xml_weather/data/weather2html.xsl -

使用外部程序
一些程序员可能对实现这么简单的一个 Ajax Web 服务使用外部程序感到吃惊。Comprehensive Perl Archive Network (CPAN) 资料库包含成千上万个 Perl 模块。其中很多可用于代替 wget 或 xsltproc。但使用这两个工具,weather_xml2html.cgi 脚本更容易改为其他语言实现,如 Python 或 Ruby。多数脚本语言都能把外部程序的结果导入脚本。事实上,我建议您使用所选语言提供的库或者模块。

该命令的输出被读入 Perl 脚本并发送到标准输出。要记住,脚本是通过浏览器 JavaScript 代码调用 XMLHttpRequest 激活的,因此结果作为响应返回到浏览器。

和方法 1 不同,这里不需要 Apache 代理规则。weather_xml2html.cgi 脚本就像一个智能代理,而且由于脚本在服务器上,从而避免了第 1 部分所述的同一域 问题(参见 参考资料)。

服务器返回格式化的天气面板 HTML,因此客户端的天气面板库就很简单了。清单 5 显示第二种方法所用的 JavaScript 代码。


清单 5. weather_badge() 的 weather_badge_intel_proxy.js 实现

function weather_badge (nws_id, div_name)  {
 var ajax 
= new Ajax 
 (
"/cgi-bin/xml_weather/weather_xml2html.cgi?",
 nws_id,
 
"GET",
 function (req) 
{
 var div 
= document.getElementById (div_name);
 div.innerHTML 
= req.responseText;
 }

 );
 ajax.request ();
}

weather_badge() 的这个版本只需要调用服务器脚本(提供适当的 NWS 站点 ID),然后使用 innerHTML 属性将返回的 HTML 插入 DIV 标记。

优缺点

这种方法把更多的处理任务放在 Web 服务器上。如果访问服务器的用户少,或者服务器有大量内存和处理器周期可用,这种方法就能很好地工作。

类似的,如果确知用户使用落后的老式桌面电脑,这种方法也合适。浏览器没有多少工作:发送请求然后等待服务器完成大部分的任务。

方法 3:客户端 XSLT

天气面板的第三种实现也用到 XSLT。这一次 XSLT 处理在浏览器中完成。使用的 weather2html.xsl XSLT 程序(清单 2)仍然相同。图 2 显示了这种方法使用的数据管道。


图 2. 方法 3 的数据管道
方法 3 的数据管道

主流浏览器(Microsoft® Windows® Internet Explorer®、Firefox 和 Opera)都支持相同形式的 XSLT 处理。Firefox 和 Opera 实现了 XSLTProcessor 对象。Internet Explorer 通过扩展 Document 模型实现 XSLT 处理。

清单 6 显示了方法 3 的 weather_badge() 实现。和方法 1 相同,必须设置 Apache Web 代理规则以便浏览器能够访问 NWS 服务器(要记住 Ajax 应用程序只能访问提交原始 Web 页面的同一台服务器上的数据。关于同一域问题请参阅第 1 部分) 。


清单 6. weather_badge() 的 weather_badge_cs_xslt.js 实现

function  weather_badge (nws_id, div_name)  {

 
// Get the XML file from the server.

 
var ajax = new Ajax ("/nws_currobs/" + nws_id + ".xml", "", "GET", null);
 ajax.setAsync (
false);
 ajax.request ();
 
var xml_doc = ajax.req.responseXML;

 
// Get the XSLT from the server.

 ajax 
= new Ajax ("/xml_weather/data/weather2html.xsl", "", "GET", null);
 ajax.setAsync (
false);
 ajax.request ();
 
var xsl_doc = ajax.req.responseXML;

 
var div = document.getElementById (div_name);

 
// Use object detection to find out if we have
 // Firefox/Mozilla/Opera or IE XSLT support.

 
if (typeof XSLTProcessor != "undefined") {
 
var xsl_proc = new XSLTProcessor ();
 xsl_proc.importStylesheet (xsl_doc);
 
var node = xsl_proc.transformToFragment (xml_doc, document);

 div.innerHTML 
= "";
 div.appendChild (node);
 }

 
else if (typeof xml_doc.transformNode != "undefined") {
 div.innerHTML 
= xml_doc.transformNode (xsl_doc);
 }

 
else {
 div.innerHTML 
= "XSLT not supported in browser.";
 }

}

方法 1 中需要从 NWS 服务器检索 XML 文件。这种新的方法也需要从我自己的服务器上检索 XSLT 文件。清单 6 的前半部分是提取这些文件到 weather_badge() 函数中的代码。分别作为 JavaScript Document 对象 xml_doc 和 xsl_doc 通过 XMLHttpRequest 返回。

weather_badge() 函数的后半部分应用 XSLT 转换。由于 Internet Explorer 的处理方式和其他浏览器不同,需要确定运行的浏览器类型。通过对象检测 来完成。利用 JavaScript typeof 运算符检查是否存在执行转换需要的对象。

如果定义了 XSLTProcessor,则使用的是 Firefox 或 Opera 浏览器。于是实例化新的 XSLTProcessor 对象并导入 XSLT 样式表。然后利用该对象的 transformToFragment 方法转换 XML 天气数据。这种方法返回文档片段而不是 HTML 文本。就是说和前两种方法不同,不能使用 innerHTML 将结果插入 DIV 标记。办法很简单:通过 appendChild 很容易将得到的文档片段插入页面的 DOM 树。

若没有定义 XSLTProcessor 但定义了 transformNode 方法,则假定 JavaScript 程序在 Internet Explorer 中运行。这种情况下只需要一行代码来执行 XSLT 转换并将结果插入 DIV 标记:

div.innerHTML = xml_doc.transformNode (xsl_doc);

优缺点

第三种方法结合了前两种方法的一些部分。Apache Web 代理把 XML 返回浏览器进一步处理,XSLT 完成从 XML 到 HTML 的转换。

方法 1 只需要直接访问 DOM 树中的数据元素,与此相比,浏览器中的 XSLT 处理程序需要更多的计算资源。对于这个简单的例子,用户可能觉察不到额外的计算时间。但是如果 XML 非常大或者 XSLT 转换很复杂,用户可能难以忍受浏览器显示结果的延迟。

另一方面,手动操作大型 XML 文件的复杂 DOM 树可能造成 JavaScript 代码难以编写和维护。

还需要考虑用户使用的浏览器和计算机。是有足够内存和处理器能力的高端工作站还是老式的落后计算机?其答案决定了是否能够执行复杂的 JavaScript XSLT 处理。

下载

描述名字大小下载方法
本系列的示例代码x-xmlajax.zip194KBHTTP
关于下载方法的信息


ajax和xml,xslt的整合使用,调优版本,ie6和firefox2.0测试通过 ajax和xml,xslt的整合使用,调优版本,ie6和firefox2.0测试通过<br><br>代码还没来得急整理,大家自己整理,顺便可以自己理解下.<br><br>原形是从网上抄,但我在firefox下怎么都不行,<br>所以自己修正了,这是修正后的版本 立即下载

相关推荐

IPC-7351标准实战:如何用LPWizard_10快速生成PCB封装库(附避坑指南)

本文提供了一份详细的IPC-7351标准实战指南,手把手教你使用LPWizard_10软件快速生成符合行业标准的PCB封装库,并直接导入Cadence Allegro。文章深入解读了IPC-7351密度等级的选择逻辑,并重点分享了软件配置、QFN封装生成实战步骤,以及导出失败、焊盘异常等常见问题的避坑解决方案,旨在帮助硬件工程师提升设计效率和可靠性。

weixin_29207439的博客 155

JavaWEB-22(AJAX快速入门)

JavaWEB-22(AJAX快速入门)

m0_63579794的博客 567

CNN经典论文(一)LeNet

Gradient-Based Learning Applied to Document Recognition(梯度学习在文档识别中的应用) Yann LeCun, Leon Bottou, Yoshua Bengio, and Patrick Haffner 发表时间:December 1998 期刊:Proceedings of the IEEE 影响:世界上第一个卷积神经网络 论文地址:Gradient-Based Learning Applied to Document Recognition

loveling丶的博客 3598

Ajax相关知识点(面试题)

什么是Ajax AJAX是“Asynchronous JavaScript and XML”的缩写,异步JavaScript和Xml。他是指一种创建交互式网页应用的网页开发技术。 为什么使用Ajax Ajax应用程序的优势在于: 通过异步模式,提升了用户体验 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用 (AJAX最大的特点是什么-----Ajax可以实现动态刷新(局部刷新) 就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那

qq_36145755的博客 299

瑞昱RTL8735B开发板深度评测:如何用200元板子搞定1080P视频流+AI推理?

本文深度评测瑞昱RTL8735B开发板(AMB82 MINI),解析其如何在200元预算内实现1080P视频流处理与边缘AI推理。该板搭载0.4TOPS NPU算力,支持H.264/H.265编码,适合物联网开发者构建高性价比边缘计算方案,并详细介绍了硬件架构、AI模型优化及实战项目搭建。

weixin_33712987的博客 522

高通平台power_supply 框架下添加第三方充电IC的驱动方法

1.power_supply电源框架介绍: power supply framework在kernel/drivers/power/下。内核抽象出来power supply子系统为驱动提供了统一的框架。 功能包括: 1.抽象PSY设备的共性,向用户空间提供统一的API; 2.为底层PSY驱动的编写,提供简单、统一的方式,同时封装并实现公共逻辑。 power supply class位于d...

Change 1万+

ajax简单示例(XML+XSLT+JavaScript+JAVA)(version1)

ajax简单示例(XML+XSLT+JavaScript+JAVA)(version1)简单介绍这是我前段时间为了培训做的一个demo,用的技术包括XML、XSLT、JavaScript和JAVA,业务是维护组织的列表及组织包括的人员。代码完成70%,但足以演示做法了,我也只是做到这样,让他们自己做一份完整的。存在问题这个版本只保证在IE6上运行(稍后再写出兼容ff的版本)传输

笨笨熊的专栏 2527

面经-2023-联发科MTK-数字芯片设计

面经-2023-联发科MTK-数字芯片设计

w0shishabi的博客 2944

Ajax 简单的XSLT转换

由于AJAX将展现转移到了客户端,因此可以在需要时载入数据、在必要时重新加载解密以及在用户与页面交互时保护相应界面。有许多不同的方式在客户端展现内容:例如采用JavaScript编写HTML——这样可以使用JavaScript模板,或者采用可扩展样式转换语言(Extensible

sky1069的专栏 782

【Bluetooth蓝牙开发】一、开篇词 | 打造全网最详细的Bluetooth开发教程

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 1万+

链接文件及功能安全:Hightec如何将Flash驱动放进RAM

Fls本身是无法操作自身的,犯冲突。Fls_WriteCmdCycles (预留300字节)与 Fls_EraseCmdCycles(预留200字节) 函数在执行之前将会Copy进RAM,Fls本身是不能操作Fls本身的,除非把最底层的驱动函数防止在RAM或者其他的Flash里面,假设Flash放置在PF0可以操作PF1。英飞凌的驱动有个规定写指令预留300字节,擦除指令预留200字节。

梦想技术家 2145

Ajax并应用于xslt的服务器端的转换

处理页面:       XslCompiledTransform xslDoc = new XslCompiledTransform();      xslDoc.Load(Server.MapPath("~/XSL/XSLZcfgSub.xsl"));      xslDoc.Transform(Server.MapPath("~/XML/ZcfgSub.xml"), null, Res

大巧不工 500

RTCA DO-160G标准详解:航空电子设备的全面环境适应性测试指南

第二章的主要目的是提供标准中使用的术语和定义。了解这些术语对于准确理解标准的要求至关重要,特别是在技术实施过程中。RTCA DO-160G 涉及多个学科的知识,包括航空、电子、电磁学和机械工程,因此需要确保使用的术语在所有学科中具有一致的定义。为了确保测试人员和工程师在执行测试时对所有条件和要求的理解一致,RTCA DO-160G 标准中定义了大量术语。环境应力:指的是设备在操作过程中可能遇到的外部物理或化学条件,包括温度、湿度、振动等。电磁干扰(EMI)

qq_41854911的博客 5277

在 Ajax 中进行 XML 处理,第 2 部分: 两种使用 Ajax 和 XSLT 的方法,在 Ajax 中使用 XSLT 转换 XML...

本系列文章分析了实现天气面板的四种不同方法。第一部分中介绍的一种办法是利用一种 Apache Web 服务器规则将 NWS XML 数据代理给浏览器。然后通过 JavaScript 代码从 DOM 提取需要的数据,转变为 HTML 格式再显示出来。 这一部分介绍第二和第三种方法。这两种办法有一点是共同的,即都使用 XSLT。 XSLT ...

zhangziyangup 306

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

用XPath和XSLT来更好的处理XML

代码如下:

徐刘根的博客 3516

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

如何使用JavaScript 结合XSLT转换XML文档

如何使用JavaScript 结合XSLT转换XML文档 一、             开发描述图 二、             如何使用JavaScript 结合XSLT转换XML文档 1.     主界面效果如下:   2.     使用跨浏览器的JavaScript 代码 加载XSLT 和XML代码如下: a.     先要去判断浏览器的类型,判...

186

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

xslt元素的使用_如何使用XSLT和Ajaxy轻松制作动画论坛

xslt元素的使用Animated forum with XSLT and AJAX. Today is a special day. Today our XSLT lessons will show some really interesting (attractive) results which you can apply in practice. We will make a forum....

cuketao5066的博客 211

整理一下XSLT的优缺点

XSLT的英文标准名称为eXtensible Stylesheet Language Transformation。根据W3C的规范说明书(http://www.w3.org/TR/xslt),最早设计XSLT的用意是帮助XML文档(document)转换为其它文档。但是随着发展,XSLT已不仅仅用于将XML转换为HTML或其它文本格式,更全面的定义应该是:XSLT是一种用来转换XML文档结构的语

Jo_El的专栏 3823

XSLT技术解析:XML转换利器与应用实践

XSLT(可扩展样式表语言转换)是一种专为XML文档转换设计的声明式编程语言,通过模板匹配机制实现结构化数据的多格式输出。其核心技术原理基于XPath查询语言进行节点定位,结合模板规则定义转换逻辑,支持将同一份XML数据转换为HTML、JSON、CSV等多种格式。在企业级数据集成、出版行业自动化、现代Web开发等领域具有独特技术价值,特别是在需要保持数据一致性的多端输出场景中优势明显。随着XSLT 3.0标准的演进,新增的map和array处理能力使其在JSON转换等现代数据处理场景中焕发新生。本文通过电商

weixin_30595035的博客 290

Xslt

XSLT的英文标准名称为eXtensible Stylesheet Language Transformation。根据W3C的规范说明书( http://www.w3.org/TR/xslt ...

Leo_niu的博客 199

如何使用XSLT和Ajaxy轻松制作动画论坛

Animated forum with XSLT and AJAX. Today is a special day. Today our XSLT lessons will show some really interesting (attractive) results which you can apply in practice. We will make a forum. Initiall...

cuken7684698822的博客 130

xslt练习_在客户端进行xslt对xml的xuan渲染

如果使用 XSLT 转换把数据呈现为 HTML 并决定在客户端执行 XSLT 转换,还需要做进一步的选择。XML 数据文档可以使用链接样式表。这种情况下,浏览器将尝试加载该样式表、执行转换并呈现结果。但 XML 文档是数据。不应该规定它的可视化呈现。实际上,它有可能在应用程序的不同地方呈现为不同的形式。比如,一个页面可能像 清单 1 那样显示整个 CD 目录,而下一个页面可能通过层层选择只显示 B...

weixin_30978387的博客 255

解析Ajax响应结果的两种简单方法.

解析Ajax响应结果的两种简单方法. 用过Ajax方面技术的都知道,部分的框架都会要求在客户端有个响应的function或者客户端的回调,这个方法在整个异步操作中就是用来解析服务器的响应.通常服务器给客户端的response以字符串格式传递,比如json或xml,而比较灵活的xml是最常见的.这也是因为在服务器端将结果转换成xml比较方便.那么解析这些xml成我们自己要的界面元素,就是必不可少

思维加速度 629

在 Ajax 中进行 XML 处理,第 1 部分: 四种方法,在 Ajax 程序中解析和转换 XML

希腊哲学家亚里士多德曾经写到:“通往失败的道路有许多条……,但通往成功的道路仅有一条。” 遗憾的是,亚里士多德并不是一名计算机程序员。 虽然亚里士多德的第一个论断符合编程的特点 — “通往失败的道路有许多条” — 他的第二个推测却没有一点依据。 本系列文章针对同一问题运用了四种方法。每种方法都被证明是正确的 — 每种方法都有各自的优缺点。它们要解决的问题并不复杂,同样,解决方案也不复杂。尽管如...

zhangziyangup 251

如何使用Javascript XSLT 处理XML文件(1)

最近使用Firefox进行网页的调试,发现有些Javascript XSLT处理XML的语句仅仅支持IE浏览器。而网络中的一些介绍javascript XSLT 处理XML的文章基本上都是依据AJAX来做的。无奈中,自己写了一个Javascript XSLT处理XML展现页面的小功能。现在帖出来和大家共享,希望大家给点改进意见。在Firefox中使用XSLTProcessor对象处理XML,主要使

冰河の泥鱼的专栏 2065
上一篇: 在 Ajax 中进行 XML 处理,第 1 部分: 四种方法,在 Ajax 程序中解析和转换 XML
下一篇: 测试 Java 类的非公有成员变量和方法
phantomhu
博客等级 码龄23年 70粉丝 24原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值