我不是 XSLT 专家,在网上找不到类似的示例。我想将来自多个文件的应用程序列表组合成一个可用于搜索的 var。
基本上,当我用新变量替换原始变量 decleration 时,XSLT 不喜欢它。我确实将变量内容输出到了一个文件中,它们在 XML 元素的格式上是相同的,所以它必须在某个地方链接到变量的一些元数据失败。
所有文件中的 XML 元素格式
<include-application name="appname" type="blah"/>
原始变量
<xsl:variable name="applications" select="board/packaging/*/include-application"/>
新变量定义
<xsl:variable name="applications">
<xsl:copy-of select="board/packaging/*/include-application"/>
<xsl:for-each select="board/packaging/applications/include">
<xsl:variable name="appset" as="xs:string" select="@name"/>
<xsl:variable name="includefile" as="xs:string" select="concat('../share/appsets/', $appset, '.xml')"/>
<xsl:copy-of select="document($includefile)/applications/include-application"/>
</xsl:for-each>
</xsl:variable>
然后,当我尝试访问元素以选择某些东西时,它会因新的变量定义而失败(第 39 行是下面块中的第一个)。
<xsl:variable name="type" select="$applications[@name = $appname]/@type"/>
<xsl:variable name="appid" select="$app-names/application-package-name[@name = $appname]/appid[@type = $type]/@value"/>
XPath 错误:无效类型运行时错误:文件 xslt/blah.xslt 第 39 行元素变量无法评估变量“类型”的表达式。
谢谢
大卫