While building designs in IP-XACT, today there could be 100s of files involved (bus/abstraction definitions, components, design, designconfigurations) in a repository and not all these files would be actually in use in a particular design (especially the busdefinitions). Hence it becomes very difficult to cleanly isolate the database for a particular design which may be needed for sharing or anyother similar purpose.
A catalog can help in this case by listing the VLNV of the components which are in use in a partcular IP-XACT design and hence can be extracted from a bigger database for exchange. Standardising on this will also facilitate interoperability across tools as the catalog can be an input to tools to indicate which all files need to be input to do various tasks (e.g. RTL netlisting)
You should be able read the top design file and recursively follow every vlnv reference to create such a catalog.
BTW: why does everyone call it a VLNV? The N is the component name so it should be called a VLCV.
We can extract VLNV information starting from IP-XACT top component/design, However it the physical location of files corresponding to those VLNV cannot be extracted.
For sure such a catalog with VLNV and actual files can be written by a design environment based on the IP-XACT component/design loaded into it
VLNV is the unique identifier of any IP-XACT object be it component, design, bus/abstraction def, designconfiguration or generator, hence VLNV is used