13.10. Default-Namensraum in XML

Bei den XML- und XPath-basierten Tests werden Namensräume, für die ein Präfix definiert ist, automatisch erkannt. Weil der XML-Standard aber zulässt, dass Namensräume mehrfach definiert werden, ermittelt PDFUnit den Default-Namensraum nicht automatisch. Er muss durch das Attribut defaultNamespace=".." vorgegeben werden:

<!-- 
  The default namespace has to be declared, 
  but any alias can be used for it.
-->
<testcase name="hasXFAData_UsingDefaultNamespace">
  <assertThat testDocument="xfa/xfa-enabled.pdf">
    <hasXFAData>
      <withNode tag="foo:log/foo:to" 
                value="memory" 
                defaultNamespace="http://www.xfa.org/schema/xci/2.6/" 
      />
    </hasXFAData>
  </assertThat>
</testcase>

Beachten Sie, dass in diesem Beispiel einmal das Präfix foo und einmal das Präfix bar für den gleichen Namensraum verwendet wird. Das ist zwar seltsam, aber der Java-Standard verlangt ein beliebiges Präfix, das nicht weggelassen werden darf.

Das nächste Beispiel zeigt die Deklaration des Default-Namensraumes für das Tag <matchingXPath />:

<testcase name="hasXMPData_MatchingXPath_WithDefaultNamespace">
  <assertThat testDocument="xmp/metadata-added.pdf">
    <hasXMPData>
      <matchingXPath expr="//foo:format = 'application/pdf'"
                     defaultNamespace="http://purl.org/dc/elements/1.1/"
      />
    </hasXMPData>
  </assertThat>
</testcase>