Hello, Alejandro,
perhaps it is interesting for you that there is a BaseX-based open source project [1] supporting a free mixing of node tree and file system navigation, using two different operators (/ for file system navigation, \ for node tree navigation; they can be swapped, using option -b).
Example 1: File system navigation with descendant axis and predicates:
fox "samples//*[*.csv]"
=>
C:/Program Files/Oxygen XML Editor 19/samples/import/text
Example 2: As before, predicates inspecting document contents:
fox "samples//*[*.dita\learningContent]"
=>
C:/Program Files/Oxygen XML Editor 19/samples/dita/learning
Example 3: Navigate to files, continue navigation into their content (/ followed by \):
fox "samples//*.dita\*\name() => freq()"
=>
concept ........... (52)
glossentry ........ (8)
learningAssessment (1)
learningContent ... (1)
learningOverview .. (2)
learningPlan ...... (1)
learningSummary ... (1)
reference ......... (28)
task .............. (64)
topic ............. (67)
troubleshooting ... (1)
Also worth mentioning - a wealth of analytical functions complementing the navigational power, like the frequencies() function of the preceding example, or ftree-view(), presenting a tree view of selected file system resources:
Example 4: Select documents and create a tree view of what has been selected:
fox "samples//*.dita[\task] => ftree-view()"
=>
<ftree context="C:/Program Files/Oxygen XML Editor 19/samples" countFo="14" countFi="64">
<fo name="dita">
<fo name="flowers">
<fo name="tasks">
<fi name="gardenPreparation.dita"/>
<fi name="pruning.dita"/>
</fo>
</fo>
<fo name="garage">
<fo name="tasks">
<fi name="carMaintenance.dita"/>
...
The examples are but the tip of an Iceberg.
With kind regards -
Hans-Jürgen
PS: Foxpath can also navigate BaseX databases, just like file system contents, e.g.
fox "basex://gidocs//*[\\*:table\\*:table]"
=>
basex://gidocs/gi/bmotors/678003/20210505-104638/gi_678003_gi40_20210505-104638.xml
basex://gidocs/gi/cgear/678003/20210505-104638/gi_678003_gibook_20210505-104638.xml