解释 XPath 表达式以了解特定模式

Interpreting an XPath expression to understand a particular schema

这是我第一次涉足 XML。我试图理解基于 Java 的 XML 管道处理结构,但我对 XPath 的用法有点困惑.. 基本缩写结构如下。特别是,我正在尝试围绕 XNAT 数据库的 pipeline schema 进行思考。

<Pipeline>
    <documentation>
        <author>
        </author>
        <input-parameters>
            <parameter>
                <name>example_parameter</name>
                <values><schemalink>xnat:imageSessionData/ID</schemalink></values>
            </parameter>
        </input-parameters>
    </documentation>     
    <outputFileNamePrefix>^concat(/Pipeline/parameters/parameter[name='workdir']/values/unique/text(),'/DicomToNifti')^</outputFileNamePrefix>
    <loop id="series" xpath="^/Pipeline/parameters/parameter[name='scanids']/values/list^"/>
    <parameters>
        <parameter>
            <name>workdir</name>
            <values>
                <unique>^concat(/Pipeline/parameters/parameter[name='builddir']/values/unique/text(),'/',/Pipeline/parameters/parameter[name='sessionId']/values/unique/text())^</unique>
            </values>
        </parameter>
    </parameters>
</Pipeline>

如果我理解正确,<outputFileNamePrefix> 元素正在使用 XPath 来 select workdir 参数的值...它本身似乎是一个略有不同的 XPath 表达式到名称为 builddir 的类似参数,但该参数似乎不存在于管道模式中的任何地方......整个项目可能有点过于复杂,无法包含在堆栈交换问题中,但也许有人可以给我指出正确的方向...

同样,上面的代码已经过缩写。可以找到完整的 .xml here.

在 XNAT 中为 'free' 提供的某些字段在管道 XML 中并未明确显示。对于其他需要照明的人,您可以在 XNAT 用户组上查看 this post