Modelica URI到文件的映射

Modelica URI到文件的映射,modelica,Modelica,我试图理解URI到文件的映射。让我们以这个URI为例: modelica://foo.bar/file.png file.png有两个可能的位置是否正确 可能是 $MODELICAPATH/foo/file.png如果文件$MODELICAPATH/foo/bar.mo存在 或 $MODELICAPATH/foo/bar/file.png如果文件$MODELICAPATH/foo/bar/package.mo存在。可能是帮助的“13.2.3外部资源”部分 对您的示例稍作修改有助于理解其工作原理。

我试图理解URI到文件的映射。让我们以这个URI为例:

modelica://foo.bar/file.png

file.png有两个可能的位置是否正确

可能是

$MODELICAPATH/foo/file.png
如果文件
$MODELICAPATH/foo/bar.mo
存在

$MODELICAPATH/foo/bar/file.png
如果文件
$MODELICAPATH/foo/bar/package.mo
存在。

可能是帮助的“13.2.3外部资源”部分

对您的示例稍作修改有助于理解其工作原理。使用
modelica://foo/bar/file.png
foo
称为顶级包/库。在模拟环境中加载路径时,将解析路径库。如果按层次存储库(即每个包表示为文件夹,每个模型表示为文件)
bar
将是库根目录中的子文件夹
file.png将是
bar
中的文件名

如果包存储为单个文件,则这是不同的,但由于这有几个缺点,我建议使用分层选项

如果加载了库,则无需编辑
$ModelicaPath$


通常,图片等被放入图书馆的资源文件夹中。此文件夹可以包含其他文件夹,如
数据
图像
脚本

这是否意味着我对上述示例的解释是正确的?我不是在写一个包,而是一个文档浏览器,需要正确解析所有类型的链接。它可以是第二个变体,即使foo/bar/package.mo不存在(如链接中所述)。实际上,它不可能是上述的第一个变体,因为modelica://foo/file.png 应该引用其他文件。对不起,我不明白。我完全糊涂了。规范中说,路径是相对于包进行解释的。我的理解是:如果类
foo.bar
存储在
foo/bar.mo
中,那么
file.png
必须相对于路径
foo/
,即
foo/file.png
。但如果
foo.bar
存储在
foo/bar/package.mo
中,则它与
foo/bar/
相关,即
foo/bar/file.png
。这个解释中的错误在哪里?文本“相对于包”有点不清楚-但是文本的其余部分清楚地表明,如果foo.bar存储在foo/package.mo中,那么modelica//foo.bar/file.png仍然可以存储为foo/bar/file.png,并且不能存储为foo/file.png,因为这会与modelica://foo/file.png. 正如MarkusA所写,一个更好的想法是使用一个Resources-folder。因此“相对于包”是指“相对于包的顶级目录”,这里的package一词与关键字package无关。