Yan*_* Bo 0 xml xslt xpath xquery
我创建了两个文件,input.xml
和formatter.xslt
.
input.xml中:
<?xml-stylesheet type="text/xsl" href="formatter.xslt"?>
<div><span>1</span><span>2</span></div>
Run Code Online (Sandbox Code Playgroud)
formatter.xslt:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html><head></head><body>
<xsl:copy-of select="//*[1]"/>
,
<xsl:copy-of select="(//*)[1]"/>
</body></html>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
然后我input.xml
在Internet Explorer中打开,然后按下F12.我看到DOM树是这样的:
<html><head></head><body>
<div><span>1</span><span>2</span></div><span>1</span>
,
<div><span>1</span><span>2</span></div>
</body></html>
Run Code Online (Sandbox Code Playgroud)
为什么//*[1]
和(//*)[1]
复制不同的元素到输出文件?
以及//*[1]
是/descendant-or-self::node()/*[1]
同时(//*)[1]
是(/descendant-or-self::node()/*)[1]
如此前者选择是它们的父的第一个子所有元素节点,而后者仅选择由括号中的表达式中选择的第一个节点,即它仅选择第一属于的子那些元素节点父节点.