首页 后端开发 XML/RSS教程 实例简析XPath串函数和XSLT

实例简析XPath串函数和XSLT

Mar 01, 2017 pm 04:53 PM
xpath xslt

XPath(xml Path language)是一种处理XML文档段的语言。XSLT(Extensible Stylesheet Language Transformations,可扩展样式表语言转换)使用XPath描述表达式和地址路径控制节点选取。XSLT可以将XML转换为各种格式,如HTML或其他格式。 
    下面用一个邮件合并程序来简要说明XPath的串函数。下面的XML文件中包含数据,XSLT文件中包含对邮件格式的定义。MSXML4.0对XML文档应用样式表,产生一个合并的邮件文本文档。
XML文件 Letter.xml

<?xml version="1.0" encoding="UTF-8"?>
<Letter>
  <Date>July 17, 2002</Date>
  <To>
     <FirstName>Vicky</FirstName>
     <LastName>P</LastName>
     <Sex>Male</Sex>
  </To>
  <Address>
     <Line1>900 National Pkwy</Line1>
     <Line2>Suite 105</Line2>
     <City>Bellevue</City>
     <State>WA</State>
     <Zip>98007</Zip>
     <Country>USA</Country>
  </Address>
  <Subject>ESTATE OF JOHN DOE / FILE NO. 12345.6789</Subject>
  <Text>
     Please pay the PRoperty taxes as soon as possible.
  </Text>
  <Sender>
     <FirstName>John</FirstName>
     <LastName>M</LastName>
     <Title>Sr. Tax Consultant</Title>
  </Sender>
</Letter>
登录后复制

XSLT样式表文档 Letter.xsl

<?xml version=&#39;1.0&#39; encoding="utf-8"?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="yes"/>
<xsl:variable name="NL" select="&#39;&#xA;&#39;" />
<xsl:variable name="Para" select="concat($NL, $NL)" />
<xsl:template match="/">
   <xsl:value-of select="//Date" />
   <xsl:value-of select="$Para" />
To,
<xsl:value-of select="concat(//To/FirstName, &#39; &#39;, //To/LastName)" />
<xsl:value-of select="$NL" />
<xsl:value-of select="//Address/Line1" />
<xsl:value-of select="$NL" />
<xsl:value-of select="//Address/Line2" />
<xsl:value-of select="$NL" />
<xsl:value-of select="concat(//Address/City, &#39; &#39;, //Address/State, &#39; &#39;, //Address/Zip)" />
<xsl:value-of select="$NL" />
<xsl:value-of select="//Address/Country" />
<xsl:value-of select="$Para" />
Regarding: <xsl:value-of select="//Subject" />
<xsl:value-of select="$NL" />
Dear <xsl:if test="starts-with(//Sex, &#39;M&#39;)">Mr. </xsl:if><xsl:if test="starts-with(//Sex, &#39;F&#39;)">Miss </xsl:if>
<xsl:value-of select="concat(//To/FirstName, &#39; &#39;, //To/LastName)" />,
<xsl:value-of select="$Para" />
<xsl:value-of select="//Text" />
<xsl:value-of select="$Para" />
Sincerely,
<xsl:value-of select="$Para" />
<xsl:value-of select="concat(//Sender/FirstName, &#39; &#39;, //Sender/LastName)" />
<xsl:value-of select="$NL" />
<xsl:value-of select="//Sender/Title" />
</xsl:template>
</xsl:stylesheet>
登录后复制

上面的样式表举例说明了concat和starts-with XPath串函数和怎样在输出文本中增加新行,还有定义和使用变量。
下面是程序的执行结果。

1.VC6建立Win32控制台应用程序。
2.在stdafx.h中添加下面的代码:

#include <TCHAR.H>
#include <stdio.h>
#include <time.h>
#import "msxml4.dll"
// If this import statement fails, you need to install MSXML 4.0 SP1 from:
//http://msdn.microsoft.com/downloads/sample.asp?url=/MSDN-FILES/027/001/766/msdncompositedoc.xml
#include <msxml2.h>
// If this include statement fails, you need to install MSXML 4.0 SP1 SDK from:
//http://msdn.microsoft.com/downloads/sample.asp?url=/MSDN-FILES/027/001/766/msdncompositedoc.xml
// You also need to add the include file and library search path
// to Visual C++&#39;s list of directories (Tools > Options... > Directories).
using namespace MSXML2;
inline void EVAL_HR( HRESULT _hr ) 
   { if FAILED(_hr) throw(_hr); }
#define TEMP_SIZE  _MAX_PATH               // size of short buffer
static _TCHAR   szTemp[TEMP_SIZE];         // multipurpose buffer on stack
static DWord    dwLen;
登录后复制

3.上面的代码引入MSXML4类型库,包含MSXML头文件,检查HRESULT值并声明了一些全局变量。
4.main函数:

  int main(int argc, char* argv[])
{
 try
 {
  EVAL_HR(CoInitialize(NULL));
  // Make sure that MSXML 4.0 is installed
  if (!isMSXMLInstalled())
   return -1;
  // Make sure that XML and XSL file names are passed
  // as command line parameters
  if (argc < 3)
   // Show proper message here
   return -1;
  
  IXMLDOMDocument2Ptr pXMLDoc = NULL;
  IXMLDOMDocument2Ptr pXSLDoc = NULL;
  
  // Load the XML document
  if (loadDocument(pXMLDoc, argv[1], true))
  {
   // Load the stylesheet
   if (loadDocument(pXSLDoc, argv[2], false))
   {
    _ftprintf(stdout, pXMLDoc->transformNode(pXSLDoc));
   }
   else
   {
    printMSXMLError(pXSLDoc);
   }
  }
  else
  {
   printMSXMLError(pXMLDoc);
  }
 }
 catch(...)
 {//exception handling
 }
 
 _ftprintf(stdout, "\n\nPress Enter to continue...");
 getchar();
 CoUninitialize();
 return 0;
}
登录后复制

5.XML文件和XSLT样式表文件名作为命令行参数传递给应用程序。主函数通过调用isMSXMLInstalled验证    MSXML4.0是否安装。接下来两次调用loadDocument;先是加载XML文档,然后是加载XSLT样式表。 最后调用transformNode进行转换。

6.本例代码下载:http://www.perfectxml.com/CPPMSXML/downloads/20020716MailMerge.zip

 以上就是实例简析XPath串函数和XSLT的内容,更多相关内容请关注PHP中文网(www.php.cn)!


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP 实战:使用 XPath 从 XML 文档中提取数据 PHP 实战:使用 XPath 从 XML 文档中提取数据 Jun 13, 2023 pm 10:03 PM

在使用PHP处理XML数据时,XPath是一种非常有用的工具。XPath是一种用于在XML文档中定位元素的语言。它可以帮助开发人员快速、简单地从XML文档中提取所需的数据。在本文中,我们将介绍XPath的基本概念,并详细讲解如何在PHP中使用XPath。我们将演示如何使用XPath从XML文档中提取数据,并构建一个简单的

如何使用 PHP 和 XPath 解析 HTML 内容 如何使用 PHP 和 XPath 解析 HTML 内容 Jun 17, 2023 am 11:17 AM

随着Web技术不断发展,Web页面的内容也越来越复杂。我们常常需要从HTML页面中抽取信息以进行进一步的处理和分析,如爬虫、数据挖掘等。本文将介绍如何使用PHP和XPath解析HTML内容,方便快捷地获取我们需要的信息。PHPSimpleHTMLDOMParserPHPSimpleHTMLDOMParser是一个开源的

php如何使用PHP的XSLT扩展? php如何使用PHP的XSLT扩展? May 31, 2023 pm 09:51 PM

PHP的XSLT扩展是一种强大的工具,用于将XML文档转换为HTML、XHTML或XML格式。这个扩展是基于W3CXSLT标准的,能够快速地解析和转换XML文档。在本文中,我们将讨论php如何使用XSLT扩展。一、安装XSLT扩展在开始使用XSLT扩展之前,需要先确认是否安装了该扩展。可以使用phpinfo()函数来查看。如果扩展没有安装,则需要在PHP配

PHP XPath 函数使用详解:XPath为XML和HTML文件提供搜索和查询功能 PHP XPath 函数使用详解:XPath为XML和HTML文件提供搜索和查询功能 Jun 27, 2023 pm 01:04 PM

XPath是一种查询和定位XML和HTML文档中特定节点的语言。作为一种路径表达式语言,XPath在许多编程语言中广泛使用,其中包括PHP。在本文中,我们将深入了解PHPXPath函数的使用方法,以便您能够轻松地在您的项目中使用XPath来搜索和查询XML和HTML文件。什么是XPath?XPath是一种查询和定位XML和HTML文档中特定节点的语言,它是

如何使用php扩展XSLT进行XML和XHTML的转换 如何使用php扩展XSLT进行XML和XHTML的转换 Jul 28, 2023 pm 02:28 PM

如何使用PHP扩展XSLT进行XML和XHTML的转换概述:在Web开发中,经常需要将XML文件转换为XHTML(或HTML)格式,以便在浏览器上进行展示。PHP提供了XSLT扩展,使得这一转换过程变得简单和高效。本文将介绍如何使用PHP扩展XSLT来实现XML到XHTML的转换,并提供代码示例。步骤1:安装和启用XSLT扩展在开始之前,确保你的PHP环境已

xPath注入的基础语法有哪些 xPath注入的基础语法有哪些 May 26, 2023 pm 12:01 PM

首先什么是xPath:xPath是一种在xml查找信息的语言在xPath中,有七种元素的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根节点)。xml文档被当作文档树来解析,树的根被称为文档节点或者根节点。这是一份基本的xml文档的源码,从这份xml源码中可以看出,bookstore为文档节点(根节点),book、title、author、year、price是元素节点。其中book节点拥有四个子元素节点:title、author、year、price,title节点有三个同胞:au

PHP中的DOM和XPath技术 PHP中的DOM和XPath技术 May 11, 2023 pm 04:04 PM

近年来,随着互联网的不断发展,Web开发技术也不断的更新迭代。其中,PHP语言因其易学易用、运行速度快、跨平台特点被广泛应用于Web开发领域。在PHP中,DOM和XPath技术是开发Web应用时经常用到的技术,本文将详细介绍这两项技术的基础知识和应用场景。一、DOM技术DOM(文档对象模型,DocumentObjectModel)是一种处理XML或HTM

How to use Python for xpath, JsonPath, and bs4? How to use Python for xpath, JsonPath, and bs4? May 09, 2023 pm 09:04 PM

1.xpath1.1xpath使用google提前安装xpath插件,按ctrl+shift+x出现小黑框安装lxml库pipinstalllxml‐ihttps://pypi.douban.com/simple导入lxml.etreefromlxmlimportetreeetree.parse()解析本地文件html_tree=etree.parse('XX.html')etree.HTML()服务器响应文件html_tree=etree.HTML(respon

See all articles