【发布时间】:2022-11-12 17:23:39
【问题描述】:
我正在使用 VSCode 应用程序开发 *.xsl 文件。
我正在使用一个 *.xsl 文件,其中包含我在整个项目中使用的全局变量,并将其包含在其他文件中。但是,仅在运行时间接导入时,VSCode 会将这些参数/变量突出显示为缺少引用。
这可以在 VSCode 编辑器中解决以在查找参考时在项目设置中包含其他文件吗?
例子:
文件A
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
<xsl:include href="./fileB.xsl"/>
<xsl:include href="./fileC.xsl"/>
<xsl:variable name="varA">Variable directly defined in file A</xsl:variable>
<xsl:value-of select="$varA"/> <!-- directly available -->
<xsl:value-of select="$varB"/> <!-- include works at runtime at in UI -->
<xsl:value-of select="$varC"/> <!-- include works at runtime at in UI -->
</xsl:stylesheet>
文件B
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
<xsl:variable name="varB">Variable defined in other file B</xsl:variable>
<xsl:value-of select="$varB"/> <!-- directly available -->
<xsl:value-of select="$varC"/> <!-- include works at runtime, but error in UI -->
</xsl:stylesheet>
文件C
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
<xsl:variable name="varC">Variable defined in other file C</xsl:variable>
<xsl:value-of select="$varC"/> <!-- directly available -->
</xsl:stylesheet>
子/文件D
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
<xsl:variable name="varD">Variable defined in other file D in sub dir</xsl:variable>
<xsl:value-of select="$varD"/> <!-- directly available -->
</xsl:stylesheet>
文件A
- 定义
varA - 包括文件 B 和 C
- 不包括文件 D
- 可以在运行时和 UI 中解析自己的变量
varA以及包含文件varB和varC中的变量
文件B
- 定义
varB - 可以解析自己的变量
varB - 不包括文件 C(明确)
- 可以在运行时解析
varC,因为包含在 fileA 中,但不在 UI 中(警告)
文件C
- 定义
varC - 可以解析自己的变量
varC
子/文件C
- 定义
varD - 可以解析自己的变量
varD
所以 fileA 包含文件 B+C 并且可以在运行时解析所有变量并且在 UI 中没有警告。 sub/fileD 不直接包含,但可以在子目录中找到,因此 UI 会警告“XPath: 变量/参数...这里无法解析,但可以在外部模块中定义"
FileB 尝试解析 varC,但不包含 fileC。运行时由fileA解析,包括fileB和fileC,所以运行时不会报错。但是 UI 找不到 varC 并将其标记为“XPath:变量/参数 $varA 无法解析"
您可能会问为什么不简单地在 fileB 中包含 fileC 来解决它!?原因是,我支持不同的语言。因此根 *.xsl 文件根据语言设置导入不同的文件。每个语言 *.xsl 在给定语言中定义相同的变量。模板使用公共变量以给定语言显示文本。因此,我在运行时依赖根导入。
我能否以某种方式告诉 UI,这些变量存在,即使该文件不包含在内?喜欢将其添加到项目设置等中吗?
【问题讨论】:
标签: visual-studio-code xslt reference