<!
DOCTYPE html>
<
link rel=
"help" href=
"https://www.w3.org/TR/1999/REC-xpath-19991116/#function-lang">
<
body>
<
script src=
"/resources/testharness.js"></
script>
<
script src=
"/resources/testharnessreport.js"></
script>
<
script>
// Set the context node to the first child of the root element, and evaluate
// the specified XPath expression. The test passes if
// - The first child element name is
'match' and XPath result is true, or
// - The first child element name is not
'match' and XPath result is false.
function testFirstChild(expression, xmlString) {
let doc = (new DOMParser()).parseFromString(xmlString,
'text/xml');
test(() => {
let element = doc.documentElement.firstChild;
let result = doc.evaluate(expression, element, null, XPathResult.BOOLEAN_TYPE, null);
assert_equals(result.resultType, XPathResult.BOOLEAN_TYPE);
assert_equals(result.booleanValue, element.localName ==
'match', element.outerHTML);
}, `${expression}: ${doc.documentElement.outerHTML}`);
}
testFirstChild(
'lang("en")',
'');
testFirstChild(
'lang("en")',
'');
testFirstChild(
'lang("en")',
'');
testFirstChild(
'lang("en")',
'');
// XPath 1.0 says:
// if the context node has no xml:lang attribute, by the value of the
// xml:lang attribute on the nearest ancestor of the context node that has
// an xml:lang attribute.
testFirstChild(
'lang("ja")',
'');
// XPath 1.0 says:
// if there is some suffix starting with - such that the attribute value is
// equal to the argument ignoring that suffix of the attribute value
testFirstChild(
'lang("ja")',
'');
// XPath 3.1 is not to be followed as per:
https://github.com/whatwg/dom/issues/1199
testFirstChild(
'lang("ko")',
'');
</
script>
</
body>