xmlmodeltestcase.java
来自「JXPath」· Java 代码 · 共 800 行 · 第 1/2 页
JAVA
800 行
list("never"));
assertXPathValueIterator(
context,
"vendor//promotion[../@stores = 'all']",
list(""));
}
// public void testAxisDescendantDocumentOrder() {
// Iterator iter = context.iteratePointers("//*");
// while (iter.hasNext()) {
// System.err.println(iter.next());
// }
// }
public void testAxisParent() {
// parent::
assertXPathPointer(
context,
"//street/..",
"/vendor[1]/location[1]/address[1]");
// parent:: (note reverse document order)
assertXPathPointerIterator(
context,
"//street/..",
list(
"/vendor[1]/location[2]/address[1]",
"/vendor[1]/location[1]/address[1]"));
// parent:: with a namespace and wildcard
assertXPathValue(
context,
"vendor/product/price:sale/saleEnds/parent::price:*" + "/saleEnds",
"never");
}
public void testAxisFollowingSibling() {
// following-sibling::
assertXPathValue(
context,
"vendor/location[.//employeeCount = 10]/"
+ "following-sibling::location//street",
"Tangerine Drive");
// following-sibling:: produces the correct pointer
assertXPathPointer(
context,
"vendor/location[.//employeeCount = 10]/"
+ "following-sibling::location//street",
"/vendor[1]/location[2]/address[1]/street[1]");
}
public void testAxisPrecedingSibling() {
// preceding-sibling:: produces the correct pointer
assertXPathPointer(
context,
"//location[2]/preceding-sibling::location//street",
"/vendor[1]/location[1]/address[1]/street[1]");
}
public void testAxisAttribute() {
// attribute::
assertXPathValue(context, "vendor/location/@id", "100");
// attribute:: produces the correct pointer
assertXPathPointer(
context,
"vendor/location/@id",
"/vendor[1]/location[1]/@id");
// iterate over attributes
assertXPathValueIterator(
context,
"vendor/location/@id",
list("100", "101"));
// Using different prefixes for the same namespace
assertXPathValue(
context,
"vendor/product/price:amount/@price:discount",
"10%");
// namespace uri for an attribute
assertXPathValue(
context,
"namespace-uri(vendor/product/price:amount/@price:discount)",
"priceNS");
// local name of an attribute
assertXPathValue(
context,
"local-name(vendor/product/price:amount/@price:discount)",
"discount");
// name for an attribute
assertXPathValue(
context,
"name(vendor/product/price:amount/@price:discount)",
"price:discount");
// attribute:: with the default namespace
assertXPathValue(
context,
"vendor/product/price:amount/@discount",
"20%");
// namespace uri of an attribute with the default namespace
assertXPathValue(
context,
"namespace-uri(vendor/product/price:amount/@discount)",
"");
// local name of an attribute with the default namespace
assertXPathValue(
context,
"local-name(vendor/product/price:amount/@discount)",
"discount");
// name of an attribute with the default namespace
assertXPathValue(
context,
"name(vendor/product/price:amount/@discount)",
"discount");
// attribute:: with a namespace and wildcard
assertXPathValueIterator(
context,
"vendor/product/price:amount/@price:*",
list("10%"));
// attribute:: with a wildcard
assertXPathValueIterator(
context,
"vendor/location[1]/@*",
set("100", "", "local"));
// attribute:: with default namespace and wildcard
assertXPathValueIterator(
context,
"vendor/product/price:amount/@*",
list("20%"));
// Empty attribute
assertXPathValue(context, "vendor/location/@manager", "");
// Missing attribute
assertXPathValueLenient(context, "vendor/location/@missing", null);
// Missing attribute with namespace
assertXPathValueLenient(context, "vendor/location/@miss:missing", null);
// Using attribute in a predicate
assertXPathValue(
context,
"vendor/location[@id='101']//street",
"Tangerine Drive");
assertXPathValueIterator(
context,
"/vendor/location[1]/@*[name()!= 'manager']", list("100",
"local"));
}
public void testAxisNamespace() {
// namespace::
assertXPathValueAndPointer(
context,
"vendor/product/prix/namespace::price",
"priceNS",
"/vendor[1]/product[1]/prix[1]/namespace::price");
// namespace::*
assertXPathValue(
context,
"count(vendor/product/namespace::*)",
new Double(3));
// name of namespace
assertXPathValue(
context,
"name(vendor/product/prix/namespace::price)",
"price");
// local name of namespace
assertXPathValue(
context,
"local-name(vendor/product/prix/namespace::price)",
"price");
}
public void testAxisAncestor() {
// ancestor::
assertXPathValue(
context,
"vendor/product/price:sale/saleEnds/"
+ "ancestor::price:sale/saleEnds",
"never");
// ancestor:: with a wildcard
assertXPathValue(
context,
"vendor/product/price:sale/saleEnds/ancestor::price:*"
+ "/saleEnds",
"never");
}
public void testAxisAncestorOrSelf() {
// ancestor-or-self::
assertXPathValue(
context,
"vendor/product/price:sale/"
+ "ancestor-or-self::price:sale/saleEnds",
"never");
}
public void testAxisFollowing() {
assertXPathValueIterator(
context,
"vendor/contact/following::location//street",
list("Orchard Road", "Tangerine Drive"));
// following:: with a namespace
assertXPathValue(
context,
"//location/following::price:sale/saleEnds",
"never");
}
public void testAxisSelf() {
// self:: with a namespace
assertXPathValue(
context,
"//price:sale/self::price:sale/saleEnds",
"never");
// self:: with an unmatching name
assertXPathValueLenient(context, "//price:sale/self::x/saleEnds", null);
}
public void testNodeTypeComment() {
// comment()
assertXPathValue(
context,
"//product/comment()",
"We are not buying this product, ever");
}
public void testNodeTypeText() {
// text()
assertXPathValue(
context,
"//product/text()[. != '']",
"We love this product.");
// text() pointer
assertXPathPointer(
context,
"//product/text()",
"/vendor[1]/product[1]/text()[1]");
}
public void testNodeTypeProcessingInstruction() {
// processing-instruction() without an argument
assertXPathValue(
context,
"//product/processing-instruction()",
"do not show anybody");
// processing-instruction() with an argument
assertXPathValue(
context,
"//product/processing-instruction('report')",
"average only");
// processing-instruction() pointer without an argument
assertXPathPointer(
context,
"//product/processing-instruction('report')",
"/vendor[1]/product[1]/processing-instruction('report')[1]");
// processing-instruction name
assertXPathValue(
context,
"name(//product/processing-instruction()[1])",
"security");
}
public void testLang() {
// xml:lang built-in attribute
assertXPathValue(context, "//product/prix/@xml:lang", "fr");
// lang() used the built-in xml:lang attribute
assertXPathValue(context, "//product/prix[lang('fr')]", "934.99");
// Default language
assertXPathValue(
context,
"//product/price:sale[lang('en')]/saleEnds",
"never");
}
public void testDocument() {
assertXPathValue(
context,
"$document/vendor/location[1]//street",
"Orchard Road");
assertXPathPointer(
context,
"$document/vendor/location[1]//street",
"$document/vendor[1]/location[1]/address[1]/street[1]");
assertXPathValue(context, "$document/vendor//street", "Orchard Road");
}
public void testContainer() {
assertXPathValue(context, "$container/vendor//street", "Orchard Road");
assertXPathValue(context, "$container//street", "Orchard Road");
assertXPathPointer(
context,
"$container//street",
"$container/vendor[1]/location[1]/address[1]/street[1]");
// Conversion to number
assertXPathValue(
context,
"number(vendor/location/employeeCount)",
new Double(10));
}
public void testElementInVariable() {
assertXPathValue(context, "$element", "Orchard Road");
}
public void testTypeConversions() {
// Implicit conversion to number
assertXPathValue(
context,
"vendor/location/employeeCount + 1",
new Double(11));
// Implicit conversion to boolean
assertXPathValue(
context,
"vendor/location/employeeCount and true()",
Boolean.TRUE);
}
public void testBooleanFunction() {
assertXPathValue(
context,
"boolean(vendor//saleEnds[../@stores = 'all'])",
Boolean.TRUE);
assertXPathValue(
context,
"boolean(vendor//promotion[../@stores = 'all'])",
Boolean.TRUE);
assertXPathValue(
context,
"boolean(vendor//promotion[../@stores = 'some'])",
Boolean.FALSE);
}
public void testFunctionsLastAndPosition() {
assertXPathPointer(
context,
"vendor//location[last()]",
"/vendor[1]/location[2]");
}
public void testNamespaceMapping() {
context.registerNamespace("rate", "priceNS");
context.registerNamespace("goods", "productNS");
assertEquals("Context node namespace resolution",
"priceNS",
context.getNamespaceURI("price"));
assertEquals("Registered namespace resolution",
"priceNS",
context.getNamespaceURI("rate"));
// child:: with a namespace and wildcard
assertXPathValue(context,
"count(vendor/product/rate:*)",
new Double(2));
// Preference for externally registered namespace prefix
assertXPathValueAndPointer(context,
"//product:name",
"Box of oranges",
"/vendor[1]/product[1]/goods:name[1]");
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?