根据W3C规范:
xml:lang指定的语言适用于指定它的元素(包括其属性的值),以及其内容中的所有元素,除非被另一个xml:lang实例覆盖。
如果我们查看以下示例,
<foo xml:lang="en">
<bar>Some words!</bar>
<bar xml:lang="fr">Different words!</bar>
<bar xml:lang="fr">
<buzz xml:lang="de">Other words!</bar>
<buzz >Other words!</bar>
</bar>
</foo>
foo
且第一个bar
元素为en
,第二个和第三个bar
元素为“fr”,而第一个buzz
为“de” “,而第二个是”fr“。
是否有一种简单的方法可以使用XPath快速确定元素的继承@xml:lang
值是多少?
答案 0 :(得分:1)
下面的XPath可以
用于从给定元素的上下文中查找xml:lang
属性的正确值。
ancestor-or-self::*[attribute::xml:lang][1]/@xml:lang
每个阶段的描述部分都使用下划线标出 照顾,并打破了这个:
通过所有祖先跟随树回到根目录,并仅返回
具有@xml:lang
属性的那些。
ancestor-or-self::*[attribute::xml:lang][1]/@xml:lang
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
返回此列表是为了消除我们搜索的元素, 所以我们抓住第一个(或最接近的元素)。
ancestor-or-self::*[attribute::xml:lang][1]/@xml:lang
^^^
让最近的元素设置为xml:lang,我们不仅仅是返回
其@xml:lang
属性的值。
ancestor-or-self::*[attribute::xml:lang][1]/@xml:lang
^^^^^^^^^^