Example usage for javax.xml.xpath XPath setNamespaceContext

List of usage examples for javax.xml.xpath XPath setNamespaceContext

Introduction

In this page you can find the example usage for javax.xml.xpath XPath setNamespaceContext.

Prototype

public void setNamespaceContext(NamespaceContext nsContext);

Source Link

Document

Establish a namespace context.

Usage

From source file:gov.nij.bundles.intermediaries.ers.EntityResolutionMessageHandlerTest.java

@Test
public void testCreateLargeRecordSet() throws Exception {
    XPath xp = XPathFactory.newInstance().newXPath();
    xp.setNamespaceContext(new EntityResolutionNamespaceContext());
    XmlConverter converter = new XmlConverter();
    converter.getDocumentBuilderFactory().setNamespaceAware(true);
    Document testRequestMessage = converter.toDOMDocument(testRequestMessageInputStream);
    Element entityContainerElement = (Element) xp.evaluate(
            "/merge:EntityMergeRequestMessage/merge:MergeParameters/er-ext:EntityContainer", testRequestMessage,
            XPathConstants.NODE);
    assertNotNull(entityContainerElement);
    Element entityElement = (Element) xp.evaluate("er-ext:Entity[1]", entityContainerElement,
            XPathConstants.NODE);
    assertNotNull(entityElement);// www.  ja va 2  s. com
    int entityCount = ((NodeList) xp.evaluate("er-ext:Entity", entityContainerElement, XPathConstants.NODESET))
            .getLength();
    int expectedInitialEntityCount = 6;
    assertEquals(expectedInitialEntityCount, entityCount);
    int recordIncrement = 500;
    for (int i = 0; i < recordIncrement; i++) {
        Element newEntityElement = (Element) entityElement.cloneNode(true);
        entityContainerElement.appendChild(newEntityElement);
    }
    entityCount = ((NodeList) xp.evaluate("er-ext:Entity", entityContainerElement, XPathConstants.NODESET))
            .getLength();
    assertEquals(expectedInitialEntityCount + recordIncrement, entityCount);

    Node entityContainerNode = testRequestMessage
            .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "EntityContainer")
            .item(0);
    assertNotNull(entityContainerNode);

    NodeList entityNodeList = ((Element) entityContainerNode)
            .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "Entity");
    List<RecordWrapper> records = entityResolutionMessageHandler.createRecordsFromRequestMessage(entityNodeList,
            null);
    assertEquals(expectedInitialEntityCount + recordIncrement, records.size());
}

From source file:gov.nij.bundles.intermediaries.ers.EntityResolutionMessageHandlerTest.java

@Test
public void testPerformEntityResolutionWithDetermFactors() throws Exception {
    XmlConverter converter = new XmlConverter();
    converter.getDocumentBuilderFactory().setNamespaceAware(true);
    InputStream attributeParametersStream = getClass()
            .getResourceAsStream("/xml/TestAttributeParametersWithDeterm.xml");
    entityResolutionMessageHandler.setAttributeParametersStream(attributeParametersStream);
    testRequestMessageInputStream = getClass()
            .getResourceAsStream("/xml/EntityMergeRequestMessageForDeterm.xml");
    Document testRequestMessage = converter.toDOMDocument(testRequestMessageInputStream);

    Node entityContainerNode = testRequestMessage
            .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "EntityContainer")
            .item(0);/*  w  w  w .  j a va2 s . c om*/
    assertNotNull(entityContainerNode);
    Document resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null,
            null);

    resultDocument.normalizeDocument();
    // LOG.info(converter.toString(resultDocument));
    XPath xp = XPathFactory.newInstance().newXPath();
    xp.setNamespaceContext(new EntityResolutionNamespaceContext());
    NodeList entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity",
            resultDocument, XPathConstants.NODESET);
    assertEquals(2, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument,
            XPathConstants.NODESET);
    assertEquals(2, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:OriginalRecordReference", resultDocument,
            XPathConstants.NODESET);
    assertEquals(2, entityNodes.getLength());
    for (int i = 0; i < entityNodes.getLength(); i++) {
        Element e = (Element) entityNodes.item(i);
        String entityIdRef = e.getAttributeNS(EntityResolutionNamespaceContext.STRUCTURES_NAMESPACE, "ref");
        assertNotNull(entityIdRef);
        assertNotNull(xp.evaluate("//merge-result-ext:Entity[@s:id='" + entityIdRef + "']", resultDocument,
                XPathConstants.NODE));
    }
}

From source file:gov.nih.nci.cacis.common.util.ExtractSchematron.java

/**
 * Creates new instance of the schematron extractor.
 * /* ww w . ja v a 2s  .c  om*/
 * @throws ClassCastException if there is an error getting a SchemaLoader
 * @throws ClassNotFoundException if there is an error getting a SchemaLoader
 * @throws InstantiationException if there is an error getting a SchemaLoader
 * @throws IllegalAccessException if there is an error getting a SchemaLoader
 * @throws TransformerFactoryConfigurationError if there is an error getting a serializer
 * @throws TransformerConfigurationException if there is an error getting a serializer
 * @throws XPathExpressionException if there is an error compiling expressions
 */
public ExtractSchematron()
        throws ClassCastException, ClassNotFoundException, InstantiationException, IllegalAccessException,
        TransformerConfigurationException, TransformerFactoryConfigurationError, XPathExpressionException {
    final DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
    final XSImplementation impl = (XSImplementation) registry.getDOMImplementation("XS-Loader");

    this.dfactory = DocumentBuilderFactory.newInstance();
    this.dfactory.setNamespaceAware(true);

    final XPathFactory factory = XPathFactory.newInstance();
    final XPath xpath = factory.newXPath();
    xpath.setNamespaceContext(new SchNamespaceContext());

    this.serializer = TransformerFactory.newInstance().newTransformer();
    this.serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");

    this.patternExpr = xpath.compile("//sch:pattern");

    this.schemaLoader = impl.createXSLoader(null);
}

From source file:gov.nij.bundles.intermediaries.ers.EntityResolutionMessageHandlerTest.java

/**
 * This unit test will read a entity merge request document that has given and sur names in mixed case.
 * It will then set an ER threshold of 3 and pass in six entities so ER is skipped.
 * However, the results should still be sorted and passed back in order.
 * /*from  w w w  .j  a v a  2s. c  o m*/
 * @throws Exception
 */

@Test
public void testRecordLimitSorting() throws Exception {

    XmlConverter converter = new XmlConverter();
    converter.getDocumentBuilderFactory().setNamespaceAware(true);
    Document testRequestMessage = converter
            .toDOMDocument(getClass().getResourceAsStream("/xml/EntityMergeRequestMessageMixedCase.xml"));

    Node entityContainerNode = testRequestMessage
            .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "EntityContainer")
            .item(0);
    assertNotNull(entityContainerNode);

    Node entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode("2");

    Document attributeParametersDocument = entityResolutionMessageHandler.getAttributeParametersDocument();

    Document resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode,
            attributeParametersDocument.getDocumentElement(), entityResolutionConfigurationNode);

    XPath xp = XPathFactory.newInstance().newXPath();
    xp.setNamespaceContext(testNamespaceContext);
    NodeList entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity",
            resultDocument, XPathConstants.NODESET);
    int inputEntityNodeCount = 6;
    assertEquals(inputEntityNodeCount, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument,
            XPathConstants.NODESET);
    assertEquals(6, entityNodes.getLength());
    String recordLimitExceeded = xp.evaluate(
            "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument);
    assertEquals("true", recordLimitExceeded);

    assertEquals("DUCK", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[1]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName",
            resultDocument));
    assertEquals("Donald", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[1]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName",
            resultDocument));

    assertEquals("MOUSE", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[2]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName",
            resultDocument));
    assertEquals("FRANK", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[2]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName",
            resultDocument));

    assertEquals("mouse", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[3]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName",
            resultDocument));
    assertEquals("macky", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[3]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName",
            resultDocument));

    assertEquals("MouSe", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[4]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName",
            resultDocument));
    assertEquals("Mickey", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[4]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName",
            resultDocument));

    assertEquals("MOUSE", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[5]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName",
            resultDocument));
    assertEquals("Minn", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[5]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName",
            resultDocument));

    assertEquals("Mouse", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[6]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName",
            resultDocument));
    assertEquals("MINNY", xp.evaluate(
            "//merge-result:EntityContainer/merge-result-ext:Entity[6]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName",
            resultDocument));

    //LOG.info(new XmlConverter().toString(resultDocument));

}

From source file:gov.nij.bundles.intermediaries.ers.EntityResolutionMessageHandlerTest.java

@Test
public void testPerformEntityResolution() throws Exception {

    XPath xp = XPathFactory.newInstance().newXPath();
    xp.setNamespaceContext(testNamespaceContext);

    XmlConverter converter = new XmlConverter();
    converter.getDocumentBuilderFactory().setNamespaceAware(true);
    Document testRequestMessage = converter.toDOMDocument(testRequestMessageInputStream);
    // LOG.info(converter.toString(testRequestMessage));

    Node entityContainerNode = testRequestMessage
            .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "EntityContainer")
            .item(0);/*from w ww.ja  v  a 2  s.  co  m*/
    assertNotNull(entityContainerNode);

    List<String> lastNames = new ArrayList<String>();
    List<String> firstNames = new ArrayList<String>();
    List<String> sids = new ArrayList<String>();

    NodeList inputEntityNodes = (NodeList) testRequestMessage
            .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "Entity");
    int inputEntityNodeCount = 6;
    assertEquals(inputEntityNodeCount, inputEntityNodes.getLength());

    for (int i = 0; i < inputEntityNodeCount; i++) {
        Node entityNode = inputEntityNodes.item(i);
        lastNames.add(
                xp.evaluate("ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName", entityNode));
        firstNames.add(
                xp.evaluate("ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName", entityNode));
        sids.add(xp.evaluate(
                "ext:PersonSearchResult/ext:Person/jxdm:PersonAugmentation/jxdm:PersonStateFingerprintIdentification/nc:IdentificationID",
                entityNode));
    }

    Map<String, Integer> lastNameCountMap = new HashMap<String, Integer>();
    for (String lastName : lastNames) {
        Integer count = lastNameCountMap.get(lastName);
        if (count == null) {
            count = 0;
        }
        lastNameCountMap.put(lastName, ++count);
    }
    Map<String, Integer> firstNameCountMap = new HashMap<String, Integer>();
    for (String firstName : firstNames) {
        Integer count = firstNameCountMap.get(firstName);
        if (count == null) {
            count = 0;
        }
        firstNameCountMap.put(firstName, ++count);
    }
    Map<String, Integer> sidCountMap = new HashMap<String, Integer>();
    for (String sid : sids) {
        Integer count = sidCountMap.get(sid);
        if (count == null) {
            count = 0;
        }
        sidCountMap.put(sid, ++count);
    }

    Document resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null,
            null);

    resultDocument.normalizeDocument();
    // LOG.info(converter.toString(resultDocument));
    NodeList entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity",
            resultDocument, XPathConstants.NODESET);
    assertEquals(inputEntityNodeCount, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument,
            XPathConstants.NODESET);
    assertEquals(3, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:OriginalRecordReference", resultDocument,
            XPathConstants.NODESET);
    assertEquals(inputEntityNodeCount, entityNodes.getLength());
    for (int i = 0; i < entityNodes.getLength(); i++) {
        Element e = (Element) entityNodes.item(i);
        String entityIdRef = e.getAttributeNS(EntityResolutionNamespaceContext.STRUCTURES_NAMESPACE, "ref");
        assertNotNull(entityIdRef);
        assertNotNull(xp.evaluate("//merge-result-ext:Entity[@s:id='" + entityIdRef + "']", resultDocument,
                XPathConstants.NODE));
    }
    for (String lastName : lastNameCountMap.keySet()) {
        assertEquals(lastNameCountMap.get(lastName).intValue(), ((Number) xp.evaluate(
                "count(//merge-result-ext:Entity[ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName='"
                        + lastName + "'])",
                resultDocument, XPathConstants.NUMBER)).intValue());
    }
    for (String firstName : firstNames) {
        assertEquals(firstNameCountMap.get(firstName).intValue(), ((Number) xp.evaluate(
                "count(//merge-result-ext:Entity[ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName='"
                        + firstName + "'])",
                resultDocument, XPathConstants.NUMBER)).intValue());
    }
    for (String sid : sids) {
        assertEquals(sidCountMap.get(sid).intValue(), ((Number) xp.evaluate(
                "count(//merge-result-ext:Entity[ext:PersonSearchResult/ext:Person/jxdm:PersonAugmentation/jxdm:PersonStateFingerprintIdentification/nc:IdentificationID='"
                        + sid + "'])",
                resultDocument, XPathConstants.NUMBER)).intValue());
    }

    String recordLimitExceeded = xp.evaluate(
            "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument);
    assertEquals("false", recordLimitExceeded);

}

From source file:cz.cas.lib.proarc.common.export.cejsh.CejshBuilder.java

public CejshBuilder(CejshConfig config)
        throws TransformerConfigurationException, ParserConfigurationException, XPathExpressionException {
    this.gcalendar = new GregorianCalendar(UTC);
    this.logLevel = config.getLogLevel();
    TransformerFactory xslFactory = TransformerFactory.newInstance();
    tranformationErrorHandler = new TransformErrorListener();
    bwmetaXsl = xslFactory.newTransformer(new StreamSource(config.getCejshXslUrl()));
    if (bwmetaXsl == null) {
        throw new TransformerConfigurationException("Cannot load XSL: " + config.getCejshXslUrl());
    }//w w  w  .j  av a 2  s. c  o  m
    bwmetaXsl.setOutputProperty(OutputKeys.INDENT, "yes");
    bwmetaXsl.setErrorListener(tranformationErrorHandler);
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setNamespaceAware(true);
    db = dbf.newDocumentBuilder();
    XPathFactory xPathFactory = ProarcXmlUtils.defaultXPathFactory();
    XPath xpath = xPathFactory.newXPath();
    xpath.setNamespaceContext(new SimpleNamespaceContext().add("m", ModsConstants.NS));
    issnPath = xpath.compile("m:mods/m:identifier[@type='issn' and not(@invalid)]");
    partNumberPath = xpath.compile("m:mods/m:titleInfo/m:partNumber");
    dateIssuedPath = xpath.compile("m:mods/m:originInfo/m:dateIssued");
    reviewedArticlePath = xpath.compile("m:mods/m:genre[text()='article' and @type='peer-reviewed']");
}

From source file:gov.nij.bundles.intermediaries.ers.EntityResolutionMessageHandlerTest.java

@Test
public void testRecordLimit() throws Exception {

    XmlConverter converter = new XmlConverter();
    converter.getDocumentBuilderFactory().setNamespaceAware(true);
    Document testRequestMessage = converter.toDOMDocument(testRequestMessageInputStream);

    Node entityContainerNode = testRequestMessage
            .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "EntityContainer")
            .item(0);/*from   w  ww.  j a v  a 2 s .com*/
    assertNotNull(entityContainerNode);

    Node entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode(
            String.valueOf(Integer.MAX_VALUE));

    Document resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null,
            entityResolutionConfigurationNode);

    XPath xp = XPathFactory.newInstance().newXPath();
    xp.setNamespaceContext(new EntityResolutionNamespaceContext());
    NodeList entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity",
            resultDocument, XPathConstants.NODESET);
    int inputEntityNodeCount = 6;
    assertEquals(inputEntityNodeCount, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument,
            XPathConstants.NODESET);
    assertEquals(3, entityNodes.getLength());
    String recordLimitExceeded = xp.evaluate(
            "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument);
    assertEquals("false", recordLimitExceeded);

    entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode(6 + "");

    resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null,
            entityResolutionConfigurationNode);

    xp.setNamespaceContext(new EntityResolutionNamespaceContext());
    entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity",
            resultDocument, XPathConstants.NODESET);
    inputEntityNodeCount = 6;
    assertEquals(inputEntityNodeCount, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument,
            XPathConstants.NODESET);
    assertEquals(3, entityNodes.getLength());
    recordLimitExceeded = xp.evaluate(
            "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument);
    assertEquals("false", recordLimitExceeded);

    entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode(null);

    resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null,
            entityResolutionConfigurationNode);

    xp.setNamespaceContext(new EntityResolutionNamespaceContext());
    entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity",
            resultDocument, XPathConstants.NODESET);
    inputEntityNodeCount = 6;
    assertEquals(inputEntityNodeCount, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument,
            XPathConstants.NODESET);
    assertEquals(3, entityNodes.getLength());
    recordLimitExceeded = xp.evaluate(
            "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument);
    assertEquals("false", recordLimitExceeded);

    entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode("not an int");

    resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null,
            entityResolutionConfigurationNode);

    xp.setNamespaceContext(new EntityResolutionNamespaceContext());
    entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity",
            resultDocument, XPathConstants.NODESET);
    inputEntityNodeCount = 6;
    assertEquals(inputEntityNodeCount, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument,
            XPathConstants.NODESET);
    assertEquals(3, entityNodes.getLength());
    recordLimitExceeded = xp.evaluate(
            "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument);
    assertEquals("false", recordLimitExceeded);

    entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode(2 + "");

    Document attributeParametersDocument = entityResolutionMessageHandler.getAttributeParametersDocument();
    resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode,
            attributeParametersDocument.getDocumentElement(), entityResolutionConfigurationNode);

    xp.setNamespaceContext(new EntityResolutionNamespaceContext());
    entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity",
            resultDocument, XPathConstants.NODESET);
    inputEntityNodeCount = 6;
    assertEquals(inputEntityNodeCount, entityNodes.getLength());
    entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument,
            XPathConstants.NODESET);
    assertEquals(6, entityNodes.getLength());
    recordLimitExceeded = xp.evaluate(
            "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument);
    assertEquals("true", recordLimitExceeded);

    // LOG.info(new XmlConverter().toString(resultDocument));
    NodeList statNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord/merge-result-ext:MergeQuality",
            resultDocument, XPathConstants.NODESET);
    assertEquals(6, statNodes.getLength());
    statNodes = (NodeList) xp.evaluate(
            "//merge-result-ext:MergedRecord/merge-result-ext:MergeQuality/merge-result-ext:StringDistanceStatistics",
            resultDocument, XPathConstants.NODESET);
    assertEquals(12, statNodes.getLength());
    statNodes = (NodeList) xp.evaluate(
            "//merge-result-ext:MergedRecord/merge-result-ext:MergeQuality/merge-result-ext:StringDistanceStatistics/merge-result-ext:AttributeXPath",
            resultDocument, XPathConstants.NODESET);
    assertEquals(12, statNodes.getLength());
    statNodes = (NodeList) xp.evaluate(
            "//merge-result-ext:MergedRecord/merge-result-ext:MergeQuality/merge-result-ext:StringDistanceStatistics/merge-result-ext:StringDistanceMeanInRecord",
            resultDocument, XPathConstants.NODESET);
    assertEquals(12, statNodes.getLength());
    statNodes = (NodeList) xp.evaluate(
            "//merge-result-ext:MergedRecord/merge-result-ext:MergeQuality/merge-result-ext:StringDistanceStatistics/merge-result-ext:StringDistanceStandardDeviationInRecord",
            resultDocument, XPathConstants.NODESET);
    assertEquals(12, statNodes.getLength());
}

From source file:com.jkoolcloud.tnt4j.streams.parsers.ActivityXmlParserTest.java

@Test
public void testNamespaceAwareXpathResolveWithGenuineParser() throws Exception {
    NamespaceTestSuite testSuite = new NamespaceTestSuite().invoke();
    DocumentBuilderFactory domFactory = testSuite.getDomFactory();
    String xmlString = testSuite.getXmlString();
    XPath xPath = testSuite.getxPath();
    Map<String, String> namespaces = testSuite.getNamespaces();

    DocumentBuilder builder = domFactory.newDocumentBuilder();
    Document document = builder.parse(IOUtils.toInputStream(xmlString, Utils.UTF8));
    XMLFromBinDataPreParser xmlFromBinDataPreParser = new XMLFromBinDataPreParser();

    NamespaceMap nsContext = new NamespaceMap();
    xPath.setNamespaceContext(nsContext);

    nsContext.addPrefixUriMappings(namespaces);

    NamespaceMap documentNamespaces = new NamespaceMap();
    StreamsXMLUtils.resolveDocumentNamespaces(document, documentNamespaces, false);

    String evaluate = xPath.compile("/soapenv:Envelope/soapenv:Header/ch:TSYSprofileInq/ch:clientData")
            .evaluate(document);//  w w  w .  j  a  v  a2  s  .c  o  m
    assertEquals("xxxxxx-343e-46af-86aa-634a3688cf30", evaluate);
    evaluate = xPath.compile("/Envelope/Header/TSYSprofileInq/clientData").evaluate(document);
    assertEquals("", evaluate);
}

From source file:com.esri.gpt.server.csw.provider3.GetRecordsProvider.java

/**
 * Builds an ogc:Filter node from HTTP GET parameters.
 * @param namespace the namespace parameter values
 * @param constraintFilter the constraint parameter value
 * @throws Exception if a processing exception occurs
 *//*from  www .j a  v  a  2  s .c o m*/
protected Node buildFilterNode(String[] namespace, String constraintFilter) throws Exception {

    // TODO GetRecordsDomBuilder had a different pattern??

    // parse namespaces
    // pattern: namespace=xmlns(ogc=http://www.opengis.net/ogc),xmlns(gml=http://www.opengis.net/gml)...
    StringBuilder nsBuffer = new StringBuilder();
    boolean hasCswUri = false;
    boolean hasCswPfx = false;
    String cswPfx = "";

    List<String[]> parseNamespace = parseNamespace(namespace);
    for (String[] ns : parseNamespace) {
        String nsUri = ns[0];
        String nsPfx = ns[1];
        if (nsUri.equals(CswNamespaces.CSW_30.URI_CSW())) {
            hasCswUri = true;
            if (!nsPfx.isEmpty()) {
                hasCswPfx = true;
                cswPfx = nsPfx;
            }
        }
        if (nsPfx.isEmpty()) {
            nsBuffer.append(" xmlns=\"").append(nsUri).append("\"");
        } else {
            nsBuffer.append(" xmlns:").append(nsPfx).append("=\"").append(nsUri).append("\"");
        }
    }

    // use ogc as the default namespace if no namespace parameter was supplied
    if (nsBuffer.length() == 0) {
        nsBuffer.append(" xmlns=\"http://www.opengis.net/ogc\"");
    }

    // build the constraint XML
    StringBuilder sbXml = new StringBuilder("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    if (hasCswUri && hasCswPfx) {
        cswPfx = cswPfx + ":";
    } else if (hasCswUri) {
        cswPfx = "";
    } else {
        cswPfx = "csw:";
        nsBuffer.append(" xmlns:csw=\"http://www.opengis.net/cat/csw/3.0\"");
    }
    sbXml.append("\r\n<").append(cswPfx).append("Constraint");
    if (nsBuffer.length() > 0) {
        sbXml.append(" ").append(nsBuffer);
    }
    sbXml.append(">");
    sbXml.append("\r\n").append(constraintFilter);
    sbXml.append("\r\n</").append(cswPfx).append("Constraint>");

    // make the dom, find the ogc:Filter node
    try {
        Document dom = DomUtil.makeDomFromString(sbXml.toString(), true);
        CswNamespaces ns = CswNamespaces.CSW_30;
        XPath xpath = XPathFactory.newInstance().newXPath();
        xpath.setNamespaceContext(ns.makeNamespaceContext());

        Node ndFilter = null;
        Node ndConstraint = (Node) xpath.evaluate("csw:Constraint", dom, XPathConstants.NODE);
        if (ndConstraint != null) {
            ndFilter = (Node) xpath.evaluate("ogc:Filter", ndConstraint, XPathConstants.NODE);
            ;
        }
        if (ndFilter == null) {
            String msg = "The supplied constraint was not a valid ogc:Filter.";
            throw new OwsException(OwsException.OWSCODE_NoApplicableCode, "constraint", msg);
        } else {
            return ndFilter;
        }

    } catch (SAXException e) {
        String msg = "The supplied namespace/constraint pairs were not well-formed xml: ";
        msg += " " + e.toString();
        throw new OwsException(OwsException.OWSCODE_NoApplicableCode, "constraint", msg);
    }

}

From source file:com.geodan.ngr.serviceintegration.CSWTransformer.java

/**
 * Parses the InputStream to valid WMSResponses and returns them in a list using XPath.
 *
 * This method is essentially unchanged from the old Geodan implementation except it now parses a String.
 *
 * @param response      the String that contains the response from the GetRecords request
 * @return         a List that contains WMSResources or errors
 * @throws java.io.IOException in case of exception
 * @throws javax.xml.parsers.ParserConfigurationException in case of exception
 * @throws org.xml.sax.SAXException in case of exception
 *///w  w w.ja v a2  s  .com
private List<WMSResource> parse(String response)
        throws ParserConfigurationException, IOException, SAXException {

    List<WMSResource> wmsresourcelist = new ArrayList<WMSResource>();

    //
    // Create DOM document from response
    //
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    InputSource source = new InputSource(new StringReader(response));
    Document xmldoc = factory.newDocumentBuilder().parse(source);

    // With XPath get the WMS data
    XPath xpath = XPathFactory.newInstance().newXPath();
    NamespaceContext nsContext = new CSWNamespaceContext();
    xpath.setNamespaceContext(nsContext);

    // The XML parse expression
    String expr = "/GetRecordsResponse/SearchResults/MD_Metadata/distributionInfo/MD_Distribution/transferOptions/MD_DigitalTransferOptions/onLine/CI_OnlineResource";
    try {
        // Run XPath
        NodeList nodes = (NodeList) xpath.evaluate(expr, xmldoc, XPathConstants.NODESET);

        // Check for nodes else generate error no records available
        if (nodes != null && nodes.getLength() > 0) {

            // Get for every node the values if no name and URL are available then generate a error. If the title has no value then the name can be the title.
            for (int i = 0; i < nodes.getLength(); i++) {
                Element el = (Element) nodes.item(i);
                String title = findTitle(el);
                String description = findDescription(el);
                String url = getValue(el, "gmd:linkage");
                String protocol = getValue(el, "gmd:protocol");
                String name = getValue(el, "gmd:name");
                if (name != null && url != null && !name.equals("") && !url.equals("")) {
                    WMSResource wmsresource = new WMSResource(title, url, protocol, name, description);
                    if (title == null) {
                        wmsresource.setTitle(name);
                    }
                    wmsresourcelist.add(wmsresource);
                } else {
                    // Because there already is an List<WMSRecords> the method "getException" will not be used
                    WMSResource wmsresource = new WMSResource(" \"records\": []}}");
                    wmsresourcelist.add(wmsresource);
                }
            }
        } else {
            // Because there already is an List<WMSRecords> the method "getException" will not be used
            WMSResource wmsresource = new WMSResource(" \"records\": []}}");
            wmsresourcelist.add(wmsresource);
        }
    } catch (XPathExpressionException e) {
        // Because there already is an List<WMSRecords> the method "getException" will not be used
        WMSResource wmsresource = new WMSResource("\"error\": \"There is an XPathExpressionException\"}}");
        wmsresourcelist.add(wmsresource);
    } catch (Exception e) {
        log.error("ERROR: " + e.getMessage());
        e.printStackTrace();
        // Because there already is an List<WMSRecords> the method "getException" will not be used
        WMSResource wmsresource = new WMSResource("\"error\": \"The result could not be parsed\"}}");
        wmsresourcelist.add(wmsresource);
    }
    // Return the results
    return wmsresourcelist;
}