首頁 後端開發 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.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 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的轉換概述:在網路開發中,經常需要將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

如何使用 Python 實作 xpath、JsonPath 和 bs4? 如何使用 Python 實作 xpath、JsonPath 和 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