将模板应用于当前节点的后同级的前同级
您好,我有以下输入
<Root>
<A rename="yes"/>
<B rename="no"/>
<C rename="no"/>
<D rename="yes"/>
<E rename="no"/>
<F all="yes"/>
</Root>
,目前我位于 ,我想在
@rename="yes"
元素上应用模板,该元素位于元素
。
我正在尝试做类似的事情:
<xsl:apply-templates select=
"following-sibling::*[@all='yes']/preceding-sibling::node()[@rename='yes'" />
但我没有得到预期的输出。请建议。
Hi I have following Input
<Root>
<A rename="yes"/>
<B rename="no"/>
<C rename="no"/>
<D rename="yes"/>
<E rename="no"/>
<F all="yes"/>
</Root>
Currently i am at <A>
and i want apply template on the element whose @rename="yes"
, that is coming before element <F>
.
i am trying to doing something like:
<xsl:apply-templates select=
"following-sibling::*[@all='yes']/preceding-sibling::node()[@rename='yes'" />
But i am not getting the expected output. Please suggest.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要此 XPath 表达式(假设
A
只有一个名为F
的同级元素):它选择
rename
属性值为"yes"
的任何元素,并且该元素是名为的任何后续同级(当前节点)元素的第一个此类前同级元素F。
这是一个完整的 XSLT 转换:
应用于提供的 XML 文档时:
生成所需的正确结果:
You want this XPath expression (assuming
A
has only one following sibling namedF
):It selects any element whose
rename
attribute has value of"yes"
and that is the first such preceding sibling of any following sibling (of the current node) element namedF
.Here is a complete XSLT transformation:
when applied on the provided XML document:
the wanted, correct result is produced: