﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-flyhorse-文章分类-XML</title><link>http://www.blogjava.net/flyhorse/category/2579.html</link><description>Eclipse,J2EE框架，SOA，XML</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 14:26:47 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 14:26:47 GMT</pubDate><ttl>60</ttl><item><title>XSLT.Cookbook2 学习笔记1--XPath</title><link>http://www.blogjava.net/flyhorse/articles/49980.html</link><dc:creator>飞马</dc:creator><author>飞马</author><pubDate>Fri, 02 Jun 2006 08:42:00 GMT</pubDate><guid>http://www.blogjava.net/flyhorse/articles/49980.html</guid><wfw:comment>http://www.blogjava.net/flyhorse/comments/49980.html</wfw:comment><comments>http://www.blogjava.net/flyhorse/articles/49980.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flyhorse/comments/commentRss/49980.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flyhorse/services/trackbacks/49980.html</trackback:ping><description><![CDATA[
		<h2 style="MARGIN: 13pt 0cm">
				<a name="_Toc137024967">
						<span lang="EN-US">
								<font face="Arial">[</font>
						</span>
				</a>
				<span style="mso-bookmark: _Toc137024967">
						<span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">引文</span>
						<span lang="EN-US">
								<font face="Arial">1 XSLT</font>
						</span>
				</span>
				<span style="mso-bookmark: _Toc137024967">
						<span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">中</span>
						<span lang="EN-US">
								<font face="Arial">XPath</font>
						</span>
				</span>
				<span style="mso-bookmark: _Toc137024967">
						<span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">的作用</span>
						<span lang="EN-US">
								<font face="Arial">]</font>
						</span>
				</span>
		</h2>
		<p class="doctext" style="MARGIN: auto 0cm">
				<font face="宋体">
						<span lang="EN-US">In XSLT 1.0, XPath plays three crucial roles</span>：</font>
		</p>
		<p class="doctext" style="MARGIN: auto 0cm; TEXT-INDENT: 12pt; mso-char-indent-count: 1.0">
				<span lang="EN-US">
						<font face="宋体">
								<span style="mso-spacerun: yes"> </span>First, it is used within templates for addressing into the document to extract data as it is being transformed. </font>
				</span>
		</p>
		<p class="doctext" style="MARGIN: auto 0cm; TEXT-INDENT: 12pt; mso-char-indent-count: 1.0">
				<span lang="EN-US">
						<font face="宋体">Second, XPath syntax is used as a pattern language in the matching rules for templates. </font>
				</span>
		</p>
		<p class="doctext" style="MARGIN: auto 0cm; TEXT-INDENT: 12pt; mso-char-indent-count: 1.0">
				<span lang="EN-US">
						<font face="宋体">Third, it is used to perform simple math and string manipulations via built-in XPath operators and functions.</font>
				</span>
		</p>
		<p class="doctext" style="MARGIN: auto 0cm">
				<span lang="EN-US">
						<font face="宋体">XSLT 2.0 retains and strengthens this intimate connection with XPath 2.0 by drawing heavily on the new computational abilities of XPath 2.0.</font>
				</span>
		</p>
		<h2 style="MARGIN: 13pt 0cm">
				<a name="_Toc137024968">
						<span lang="EN-US">
								<font face="Arial">[</font>
						</span>
				</a>
				<span style="mso-bookmark: _Toc137024968">
						<span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">引文</span>
						<span lang="EN-US">
								<font face="Arial">2 </font>
						</span>
				</span>
				<span style="mso-bookmark: _Toc137024968">
						<span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">当前节点的设置</span>
						<span lang="EN-US">
								<font face="Arial">]</font>
						</span>
				</span>
		</h2>
		<p class="doctext" style="MARGIN: auto 0cm">
				<span lang="EN-US">
						<font face="宋体">In XSLT, the context is set via:</font>
				</span>
		</p>
		<p class="doclist" style="MARGIN: auto 0cm auto 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
						<span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">         </span></span>
				</span>
				<span lang="EN-US">
						<font face="宋体">a template match (<tt>&lt;xsl:template match="x"&gt; ... &lt;/xsl:template&gt;</tt>)</font>
				</span>
		</p>
		<p class="doclist" style="MARGIN: auto 0cm auto 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
						<span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">         </span></span>
				</span>
				<tt>
						<span lang="EN-US">
								<font face="宋体">xsl:for-each</font>
						</span>
				</tt>
		</p>
		<p class="doclist" style="MARGIN: auto 0cm auto 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol">
						<span style="mso-list: Ignore">·<span style="FONT: 7pt 'Times New Roman'">         </span></span>
				</span>
				<tt>
						<span lang="EN-US">
								<font face="宋体">xsl:apply-templates</font>
						</span>
				</tt>
		</p>
		<h2 style="MARGIN: 13pt 0cm">
				<a name="_Toc137024969">
						<span lang="EN-US">
								<font face="Arial">xsl:template </font>
						</span>
				</a>
				<span style="mso-bookmark: _Toc137024969">
						<span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">与</span>
						<span lang="EN-US">
								<font face="Arial">xsl:apply-templates</font>
						</span>
				</span>
		</h2>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-char-indent-count: 2.0">
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">前者相当于定义函数，后者相当于调用函数。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-char-indent-count: 2.0">
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">xsl:template</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">match</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性采用了</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">XPath</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表达式，用来确定模板的适用对象。对</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">match</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性的设置时，</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">//X</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等价于</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">X</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-char-indent-count: 2.0">
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">xsl:apply-templates</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">select</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性采用了</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">XPath</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表达式，用来选择要应用模板的节点。如果省略了</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">select</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性，则表示当前节点的所有后代节点都应用模板，如果有些节点没用通过</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">xsl:template</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义模板，则采用默认模板（注：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">IE</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中存在默认模板）。设置</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">select</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性时，要从文档根（</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">/</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）开始的绝对路径来选择节点，但是</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">/</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以省略。此处和上面</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">match</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性差别很大，注意区分。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-char-indent-count: 2.0">
				<span style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注意：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: red; LINE-HEIGHT: 150%">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-char-indent-count: 2.0">
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">1</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
						<span lang="EN-US">&lt;xsl:template match="/"&gt; <o:p></o:p></span>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-char-indent-count: 2.0">
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
						<span style="mso-spacerun: yes">   </span>
						<span style="mso-spacerun: yes">  </span>
						<span style="mso-spacerun: yes"> </span>
						<span style="mso-spacerun: yes"> </span>&lt;xsl:apply-templates select="/" /&gt;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 48pt; LINE-HEIGHT: 150%; mso-char-indent-count: 4.0">
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">&lt;/xsl:template&gt;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 48pt; LINE-HEIGHT: 150%; mso-char-indent-count: 4.0">
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上面语句会引起递归调用模板，死循环。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-char-indent-count: 2.0">
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">2</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）如果在</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">XSL</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件中没有对应根的模板，即没有</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">&lt;xsl:template match="/"&gt;</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，则其他的模板都会被使用。但是，如果文件中存在对应根的模板，除非使用</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">&lt;xsl:apply-templates select="</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">……</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">" /&gt;</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，否则其他的模板都不会被使用。</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
				</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这是因为，如果没有对应根的模板，</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">IE</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会采用默认的对应根的模板，而这个默认的模板中使用了</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">&lt;xsl:apply-templates select="</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">……</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">" /&gt;</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。这类似于</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">Java</span>
				<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中默认构造函数的重写，如果我们没有定义，就使用默认的。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
						<o:p>
						</o:p>
				</span>
		</p>
<img src ="http://www.blogjava.net/flyhorse/aggbug/49980.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flyhorse/" target="_blank">飞马</a> 2006-06-02 16:42 <a href="http://www.blogjava.net/flyhorse/articles/49980.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>