Tool Name: h5dump
Syntax:
  `h5dump [`OPTIONS`]` file
Purpose:
  Displays HDF5 file contents.
Description:
  `h5dump` enables the user to examine the contents of an HDF5 file and dump those contents, in human readable form, to an ASCII file.

  `h5dump` dumps HDF5 file content to standard output. It can display the contents of the entire HDF5 file or selected objects, which can be groups, datasets, a subset of a dataset, links, attributes, or datatypes.

  The `--header` option displays object header information only.

  Names are the absolute names of the objects. `h5dump` displays objects in the order same as the command order. If a name does not start with a slash, `h5dump` begins searching for the specified object starting at the root group.

  If an object is hard linked with multiple names, `h5dump` displays the content of the object in the first occurrence. Only the link information is displayed in later occurrences.

  `h5dump` assigns a name for any unnamed datatype in the form of `#`oid1`:`oid2, where oid1 and oid2 are the object identifiers assigned by the library. The unnamed types are displayed within the root group.

  Datatypes are displayed with standard type names. For example, if a dataset is created with `H5T_NATIVE_INT` type and the standard type name for integer on that machine is `H5T_STD_I32BE`, `h5dump` displays `H5T_STD_I32BE` as the type of the dataset.

  `h5dump` can also dump a subset of a dataset. This feature operates in much the same way as hyperslabs in HDF5; the parameters specified on the command line are passed to the function `H5Sselect_hyperslab` and the resulting selection is displayed.

  The `h5dump` output is described in detail in the DDL for HDF5, the Data Description Language document.

  Note: It is not permissible to specify multiple attributes, datasets, datatypes, groups, or soft links with one flag. For example, one may not issue the command
  WRONG: `h5dump -a /attr1 /attr2 foo.h5` to display both `/attr1` and `/attr2`. One must issue the following command:
  CORRECT: `h5dump -a /attr1 -a /attr2 foo.h5`

  It's possible to select the file driver with which to open the HDF5 file by using the --filedriver (-f) command-line option. Acceptable values for the --filedriver option are: "sec2", "family", "split", "multi", and "stream". If the file driver flag isn't specified, then the file will be opened with each driver in turn and in the order specified above until one driver succeeds in opening the file.

  One byte integer type data is displayed in decimal by default. When displayed in ASCII, a non-printable code is displayed in 3 octal digits preceeded by a back-slash unless there is a C language escape sequence for it. For example, CR and LF are printed as \r and \n. Though the NUL code is represented as \0 in C, it is printed as \000 to avoid ambiguity as illustrated in the following 1 byte char data (since this is not a string, embedded NUL is possible).

      	141 142 143 000 060 061 062 012
      	  a   b   c  \0   0   1   2  \n

  h5dump prints them as "abc\000012\n". But if h5dump prints NUL as \0, the output is "abc\0012\n" which is ambiguous.
XML Output:
  With the `--xml` option, `h5dump` generates XML output. This output contains a complete description of the file, marked up in XML. The XML conforms to the HDF5 Document Type Definition (DTD) available at `http://www.hdfgroup.org/DTDs/HDF5-File.dtd`.

  The XML output is suitable for use with other tools, including the HDF5 Java Tools.

Options and Parameters:

`-h` or `--help`
  Print a usage message and exit.
`-n` or `--contents`
  Print a list of the file contents and exit.
`-B` or `--bootblock`
  Print the contents of the boot block.
`-H` or `--header`
  Print the header only; no data is displayed.
`-A`
  Print the header and value of attributes; data of datasets is not displayed.
`-i` or `--object-ids`
  Print the object ids.
`-r` or `--string`
  Print 1-bytes integer datasets as ASCII.
`-e`
  Escape non-printing characters.
`-V` or `--version`
  Print version number and exit.
`-a P` or `--attribute=P`
  Print the specified attribute.
`-d P` or `--dataset=P`
  Print the specified dataset.
`-y`
  Do not print array indices with data.
`-p` or `--properties`
  Print dataset filters, storage layout, and fill value.
`-f D` or `--filedriver=D`
  Specify which driver to open the file with.
`-g P` or `--group=P`
  Print the specified group and all members.
`-l P` or `--soft-link=P`
  Print the value(s) of the specified soft link.
`-o F` or `--output=F`
  Output raw data into file F.
`-t P` or `--datatype=P`
  Print the specified named datatype.
`-w N` or `--width=N`
  Set the number of columns of output.
`-b B` or `--binary=B`
  Output dataset to a binary file using the datatype specified by `B`.
  `B` must have one of the following values:
  `LE` Little-endian
  `BE` Big-endian
  `MEMORY` Memory datatype
  `FILE` File datatype
  Recommended usage is with the `-d` and `-o` options.
`-x` or `--xml`
  Output XML using XML schema (default) instead of DDL.
`-u` or `--use-dtd`
  Output XML using XML DTD instead of DDL.
`-D U` or `--xml-dtd=U`
  In XML output, refer to the DTD or schema at U instead of the default schema/DTD.
`-X S` or `--xml-dns=S`
  In XML output, (XML Schema) use qualified names in the XML:
  ":": no namespace, default: "hdf5:"
`--`
  Indicates that the following argument is not an option. E.g., to dump a file called `-f', use h5dump -- -f.
  (This option is necessary only when the name of the file to be examined starts with a dash (`-`), which could confuse the tool’s command-line parser.)
file
  The file to be examined.
The next four options enable subsetting, which is accomplished by selecting a hyperslab from a dataset. These options mirror the techniques used by an HDF5 application when performing hyperslab selection. The `start` and `count` parameters are mandatory if subsetting is to be performed; the `stride` and `block` parameters are optional and will default to `1` (one).
`-s L` or `--start=L`
  Offset of start of subsetting selection.
  Default: the beginning of the dataset.
`-S L` or `--stride=L`
  Hyperslab stride.
  Default: 1 in all dimensions.
`-c L` or `--count=L`
  Number of blocks to include in the selection.
`-k L` or `--block=L`
  Size of block in hyperslab.
  Default: 1 in all dimensions.
Subsetting parameters can also be expressed in a convenient compact form, as follows:
`--dataset="/foo/mydataset[START;STRIDE;COUNT;BLOCK]"`
All of the semicolons (`;`) are required, even when a parameter value is not specified. When not specified, default parameter values are used.
The option parameters listed above are defined as follows:
  D -- which file driver to use in opening the file. Acceptable values are "sec2", "family", "split", "multi", and "stream". Without the file driver flag the file will be opened with each driver in turn and in the order specified above until one driver succeeds in opening the file.
  P -- The full path from the root group to the object
  F -- A filename
  N -- An integer greater than 1
  L -- A list of integers, the number of which is equal to the number of dimensions in the dataspace being queried
  U -- A URI (as defined in [IETF RFC 2396], updated by [IETF RFC 2732]) that refers to the DTD to be used to validate the XML

Examples:

1. Dump the group `/GroupFoo/GroupBar` in the file `quux.h5`:

   > `h5dump -g /GroupFoo/GroupBar quux.h5`

2. Dump the dataset `Fnord`, which is in the group `/GroupFoo/GroupBar` in the file `quux.h5`:

   > `h5dump -d /GroupFoo/GroupBar/Fnord quux.h5`

3. Dump the attribute `metadata` of the dataset `Fnord`, which is in group `/GroupFoo/GroupBar` in the file `quux.h5`:

   > `h5dump -a /GroupFoo/GroupBar/Fnord/metadata quux.h5`

4. Dump the attribute `metadata` which is an attribute of the root group in the file `quux.h5`:

   > `h5dump -a /metadata quux.h5`

5. Produce an XML listing of the file `bobo.h5`, saving the listing in the file `bobo.h5.xml`:

   > `h5dump --xml bobo.h5 > bobo.h5.xml`

6. Dump a subset of the dataset `/GroupFoo/databar/` in the file `quux.h5`

   > `h5dump -d /GroupFoo/databar --start="1,1" --stride="2,3"
   > --count="3,19" --block="1,1" quux.h5`

7. The same example, using the short form to specify the subsetting parameters:

   > `h5dump -d "/GroupFoo/databar[1,1;2,3;3,19;1,1]" quux.h5`

8. Dump a binary copy of the dataset `/GroupD/FreshData/` in the file `quux.h5`, with data written in little-endian form, to the output file `FreshDataD.bin`:
   `h5dump -d "/GroupD/FreshData" -b LE -o "FreshDataD.bin" quux.h5`

Current Status:
  The current version of `h5dump` displays the following information:
  - Group
    - group attribute (see Attribute)
    - group member
  - Dataset
    - dataset attribute (see Attribute)
    - dataset type (see Datatype)
    - dataset space (see Dataspace)
    - dataset data
  - Attribute
    - attribute type (see Datatype)
    - attribute space (see Dataspace)
    - attribute data
  - Datatype
    - integer type
      - H5T_STD_I8BE, H5T_STD_I8LE, H5T_STD_I16BE, ...
    - floating point type
      - H5T_IEEE_F32BE, H5T_IEEE_F32LE, H5T_IEEE_F64BE, ...
    - string type
    - compound type
      - named, unnamed and transient compound type
      - integer, floating or string type member
    - opaque types
    - reference type
      - object references
      - data regions
    - enum type
    - variable-length datatypes
      - atomic types only
      - scalar or single dimensional array of variable-length types supported
  - Dataspace
    - scalar and simple space
  - Soft link
  - Hard link
  - Loop detection
See Also:

- HDF5 Data Description Language syntax at DDL for HDF5
- HDF5 XML Schema at http://www.hdfgroup.org/DTDs/HDF5-File.xsd
- HDF5 XML information at http://www.hdfgroup.org/HDF5/XML/