我想测试html <body>
的条件,紧接着是<div>
,因为它们之间没有任何内容。
这是一个不起作用<xsl:if test="//div[preceding::*[1][self::body]][1]">
的例子。其他路径语句在文档的更深处<divs>
错误地命中。
我在XSLT 2.0和Xpath 2或3中工作。
答案 0 :(得分:1)
所以你想找到div
的第一个子元素的任何body
元素吗?
//div[parent::body][not(preceding-sibling::*)]
如果您要求div元素是body
的第一个子节点(不仅仅是第一个子元素,那么没有文本节点或注释在开场<body>
和<div>
之间,您可以使用
//div[parent::body][not(preceding-sibling::node())]
一个改进是允许两个开始标记之间的空格,但不允许非空白文本节点:
//div[parent::body][not(preceding-sibling::*)]
[not(preceding-sibling::text()[normalize-space()])]
(如果您的样式表执行<xsl:strip-space elements="*"/>
,则无需完全忽略仅限空白的文本节点。
答案 1 :(得分:1)
如果您使用body/node()[1][self::div]
,则检查body
元素的第一个子节点是div
元素。