【问题标题】:Interpreting an XPath expression to understand a particular schema解释 XPath 表达式以理解特定模式
【发布时间】:2022-02-10 17:12:50
【问题描述】:

这是我第一次涉足 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>

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

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

【问题讨论】:

  • 我不知道 XNAT 是什么,它的网站也没有试图对还不知道它是什么的人有用。 (我从 SO 标签扩展中获得的信息比其他任何东西都多)。关键是要理解这个 XML 或任何 XML,您需要结合直觉和文档。是的,这个 XML 看起来很像使用 XPath 表达式以某种方式从文档的一部分链接到另一部分。除此之外,你的猜测和我的一样好。你的问题到底是什么?
  • XNAT 是一个使用 postgres 组织和存储图像的 webapp 数据库。它还有一个基于 java 的引擎来执行这些管道(上传图像时自动执行的操作),在这种情况下,这里的目标是从一种图像格式转换为另一种图像格式。管道引擎以某种方式使用 XML 来构建字符串,与您在命令行中键入以手动进行转换的内容相同......我想明确的问题是:我应该在哪里寻找 builddir
  • 也许更好的问题是“这个 XPath 表达式解析到什么?” ^concat(/Pipeline/parameters/parameter[name='builddir']/values/unique/text(),'/',/Pipeline/parameters/parameter[name='sessionId']/values/unique/text())^
  • 好吧,如果根据本文档进行评估,那么它会评估为字符串“/”,这可能是也可能不是预期的,但它的含义是任何人的猜测。 (但您说您对文档进行了缩写,所以您可能遗漏了重要的内容。)
  • 我链接了完整的文档。但即便如此,我在完整的 Pipeline XML 中也没有看到任何 builddirsessionId,所以我倾向于同意它应该解析为“/”......是,这个管道实际上是在工作实现中,这就是为什么我很困惑......是否可以针对不同的文档评估该表达式?

标签: xml xpath xnat


【解决方案1】:

在 XNAT 中为“免费”提供了某些字段,这些字段在管道 XML 中没有明确显示。对于其他需要照明的人,您可以在 XNAT 用户组中查看this post

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 2010-11-24
    • 2013-01-06
    • 2018-09-11
    相关资源
    最近更新 更多