DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> 如何在XSL中得到某節點到根節點的全路徑的所有節點?
如何在XSL中得到某節點到根節點的全路徑的所有節點?
編輯:XML詳解     

要在XSL中得到某節點到根節點的帶全部路徑的節點,可以對該節點的路徑進行copy,包括所有節點類型。下面就是具體實現的例子。

GetFullPathNodes.XML

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="GetFullPathNodes.xsl"?> <DATA> <x1/> <x2> <x21> <x211>x211</x211> <x212>x212</x212> <x213>孟子E章</x213> </x21> </x2> <x3> <x31/> </x3> </DATA>

GetFullPathNodes.xsl

<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" omit-xml-declaration="yes"/> <!-- 確定哪個節點將被與祖先節點一起復制 --> <xsl:variable name="MyNodes" select="//x211"/> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="*"> <xsl:if test="$MyNodes[count(ancestor::*) = count(ancestor::* | current())] or count(.| $MyNodes) = count($MyNodes)"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:if> </xsl:template> <xsl:template match="text() | comment() | processing-instruction()"> <xsl:copy/> </xsl:template> </xsl:stylesheet>

結果將象下面所示:

<DATA> <x2> <x21> <x211>x211</x211> </x21> </x2> </DATA>

為了看到真實的結果,可以用JavaScript程序來進行驗證:

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved