假设我有一个完整的 html 文档作为 XML 输入。
如果我只想输出 html 中的第一个(或任何)图像,XSLT 文件会是什么样子?
选择第一个的一个 XPath 表达式<img>
文档中的元素是:
(//img)[1]
Do note that 一个经常犯的错误——如@Oded
在他的回答中是建议以下 XPath 表达式——一般来说它可能会选择多个元素:
//img[1]
(: 错误的 !!! :)
这将选择所有<img>
文档中的元素,每个元素都是第一个<img>
其父母的孩子。
这是这个常见错误的确切解释——在W3C XPath 1.0 推荐 http://www.w3.org/TR/1999/REC-xpath-19991116/#path-abbrev:
NOTE: 位置路径//para[1]
与位置路径含义不同/descendant::para[1]
。后者选择第一个后代para
元素;前者选择所有后代para
父母的第一个孩子的元素。
进一步的问题如果文档定义了默认名称空间,则存在,XHTML 必须是这种情况。 XPath 将任何不带前缀的名称视为属于没有命名空间和表达(//img)[1]
不选择任何节点,因为文档中没有属于该节点的元素没有命名空间并且有名字img
.
在这种情况下,有两种方法可以指定所需的 XPath 表达式:
(//x:img)[1]
-- 前缀在哪里x
(通过托管语言)与特定的默认命名空间相关联(在本例中,这是XHTML命名空间).
(//*[name()='img'])[1]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)