Uploaded image for project: 'Commons JXPath'
  1. Commons JXPath
  2. JXPATH-97

Incomplete handling of undefined namespaces

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.2 Final, Nightly Builds
    • Fix Version/s: 1.3
    • Labels:
      None

      Description

      Mcduffey, Joe <jdmcduf@nsa.gov>

      Can someone tell me how to register namespaces so that attributes with namespaces does not cause the exception

      org.apache.common.ri.model.dom.DOMNodePointer.createAttribute
      unknown namespace prefix: xsi

      For example the following
      <ElementA A:myAttr="Mytype">
      <B:ElementB>MY VALUE</B:ElementB>
      </ElementA>

      Would result in the following exception:
      org.apache.common.ri.model.dom.DOMNodePointer.createAttribute
      unknown namespace prefix: A

      FYI: In this example there was a namespace decaration in the file and I also manually called the
      registerNamespace(A,"/http...");
      registerNamespace(B,"/http...");

      There was no problem encountered for elements. Only attributes. Can someone help? Thanks.

      1. NamespacesTest.java
        1.0 kB
        Sergey Vladimirov
      2. patch.txt
        19 kB
        Sergey Vladimirov

        Activity

        Hide
        mbenson Matt Benson added a comment -

        This should work in trunk. Thanks all!

        Show
        mbenson Matt Benson added a comment - This should work in trunk. Thanks all!
        Hide
        mbenson Matt Benson added a comment -

        reopening... elements still don't work apparently for prefixes that are only declared externally?

        Show
        mbenson Matt Benson added a comment - reopening... elements still don't work apparently for prefixes that are only declared externally?
        Hide
        bsp Sergey Vladimirov added a comment -

        Matt,

        sorry for the bad patch. But one of the main point is change in DOMNodePointer:

        @@ -102,9 +107,12 @@
        return true;
        }

        • if (wildcard
        • testName.getName()
        • .equals(DOMNodePointer.getLocalName(node))) {
          + // the same as for attribute ( DOMAttributeIterator::testAttr() )
          + if (equalStrings(nodePrefix, testPrefix)) { + return true; + }

          +
          + if (wildcard || testName.getName().equals(nodeLocalName))

          { String nodeNS = DOMNodePointer.getNamespaceURI(node); return equalStrings(namespaceURI, nodeNS); }
        Show
        bsp Sergey Vladimirov added a comment - Matt, sorry for the bad patch. But one of the main point is change in DOMNodePointer: @@ -102,9 +107,12 @@ return true; } if (wildcard testName.getName() .equals(DOMNodePointer.getLocalName(node))) { + // the same as for attribute ( DOMAttributeIterator::testAttr() ) + if (equalStrings(nodePrefix, testPrefix)) { + return true; + } + + if (wildcard || testName.getName().equals(nodeLocalName)) { String nodeNS = DOMNodePointer.getNamespaceURI(node); return equalStrings(namespaceURI, nodeNS); }
        Hide
        mbenson Matt Benson added a comment -

        elements handled.

        Show
        mbenson Matt Benson added a comment - elements handled.
        Hide
        mbenson Matt Benson added a comment -

        reopening to note that Joe McD also reported that createPathAndSetValue() wasn't working for ext-reg'd ns'd attrs.

        Show
        mbenson Matt Benson added a comment - reopening to note that Joe McD also reported that createPathAndSetValue() wasn't working for ext-reg'd ns'd attrs.
        Hide
        mbenson Matt Benson added a comment -

        fixed createPathAndSetValue() in trunk.

        Show
        mbenson Matt Benson added a comment - fixed createPathAndSetValue() in trunk.

          People

          • Assignee:
            Unassigned
            Reporter:
            bsp Sergey Vladimirov
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development