是否可以从XSL模板元素中的另一个文件中包含大量xml?

我正在尝试使用XSLT(xsltproc.exe)将纯数据xml文件转换为svg图。结果svg中的许多符号有些复杂,通过直接在主xsl文件中包含svg代码,使xsl难以阅读。如果我可以将其放在单独的文件中,然后将其简单地包含在xsl:template中的适当位置,将会更加方便。

但是,<xsl:include/>抱怨它不在xsl:stylesheet元素本身之外的任何地方。

有没有一种方法可以在模板中包含大量的xml代码?

zjtw212 回答:是否可以从XSL模板元素中的另一个文件中包含大量xml?

好吧,您可以使用document函数来读取辅助XML文档,而SVG似乎是这样。然后,您可以在任何需要的地方使用<xsl:copy-of select="document('foo.svg')"/>,或者在需要时使用模板进一步处理SVG。

,

<xsl:include>仅用于将另一个XSLT样式表合并到当前样式表中(模拟功能为<xsl:import>,但设置了不同的优先级),并且如您所述,必须成为样式表根元素的子元素。

您要做的是使用XPath function document(),它将任何XML标记文件的URI作为第一个(或唯一)参数。然后,您可以在其他模板,变量等中使用它。

例如,如果要获取SVG文件的标题,则可以使用:

<xsl:value-of select="document(your.svg)/svg/title"/>

这可能是您使用SVG文件可能要做的最少有趣的事情,但是您可以在其中看到如何导航外部“文档”的XML结构。

如果您具有平面文件结构,则URI非常简单。如果在其他地方使用文件,它可能会变得更加复杂,但是它实际上可以用于从任何XML格式读取和使用数据。

本文链接:https://www.f2er.com/3164251.html

大家都在问