以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  apply-templates为什么select不上呢?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=57244)


--  作者:blackeyed524
--  发布时间:12/27/2007 9:43:00 AM

--  apply-templates为什么select不上呢?
<xsl:apply-templates select="children"/>

<xsl:template match="children">
    ......
</xsl:template>

为什么没有执行children中的内容??我是在xml spy中写的,xslt2.0


--  作者:blackeyed524
--  发布时间:12/27/2007 9:44:00 AM

--  
有时候可以有时候不可以?我没弄清楚是那块出了问题.....
--  作者:blackeyed524
--  发布时间:12/27/2007 10:25:00 AM

--  
哈哈  问题解决了 但还是不知其内在机制

我是把select放到了上层节点上了,原来是在同层节点之间select,初学者啊。。。。编个程序稀里糊涂,大家不要介意。。。。

是不是select不能在同层节点间用?内在机制是什么?????


--  作者:enyaxp
--  发布时间:12/27/2007 3:09:00 PM

--  
当然可以,用select的参数是用XPath描述的节点路径,可以访问不同层节点的呀
--  作者:blackeyed524
--  发布时间:12/27/2007 3:14:00 PM

--  
是的 在xpath中是可以这样
但我在xslt的同层节点上select同层节点是有问题的
好像select应该是child节点的
--  作者:enyaxp
--  发布时间:12/27/2007 3:29:00 PM

--  
xsl:apply-templates中的select属性是将定义的模版应用到当前元素或当前元素的子元素,像你说的那种访问方法应该是不行的。
--  作者:enyaxp
--  发布时间:12/27/2007 3:43:00 PM

--  
不过用XPath是可以访问同级节点的。比如A和B都是同级节点,Xpath路径为/root/Father/A(B),这样下面的XSL码是没有问题的:

<xsl:template match="/">
...
<xsl:apply-templates select="root/Father/A"/>
</xsl:template>

<xsl:template match="A">
...
<xsl:apply-templates select="/root/Father/B"/>
</xsl:template>

<xsl:template match="B">
...
</xsl:template>


--  作者:孤独
--  发布时间:1/24/2008 10:12:00 PM

--  
如果多个template都可以匹配一个节点,
一般是那个xpath最详细的匹配,所以看下是不是这样俄。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
72.266ms