【问题标题】:Passing params between XSLT files在 XSLT 文件之间传递参数
【发布时间】:2018-02-05 13:00:22
【问题描述】:

我正在尝试创建某种 XSLT 配置文件,如下所示:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo">
    <xsl:variable name="font_size" value="5pt"/>
</xsl:stylesheet>

我想要实现的是在其他 XSLT 文件中调用变量“font_size”来定义。

我试图这样做:

<?xml version="1.0" encoding="UTF-8"?>
 <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo">
    <xsl:include href="config.xsl"/>
      <fo:block font-size="$font-size">
          ...

但不幸的是,它没有成功。

【问题讨论】:

  • 你试过&lt;fo:block font-size="{$font-size}"&gt;吗?否则不会在文字属性值中识别任何变量,无论它是在主模块中还是在包含的模块中定义的,都与此处无关。
  • 有效!但我也将配置文件更改为:&lt;xsl:variable name="font-size"&gt;5pt&lt;/xsl:variable&gt; 谢谢 :)
  • @KubaKolybacz:应该也可以。

标签: xml xslt apache-fop


【解决方案1】:

首先,xsl:variable 没有“值”属性。我认为您的意思是“选择”。

其次,如果变量被命名为“font_size”,那么它不能被引用为“$font-size”(注意标点符号)

第三,你需要将变量引用放在大括号中:`font-size="{$font_size}"/>。

第四,如果你试图生成一个 fo:block 元素,那么它需要出现在模板或函数中。一个 fo:block 元素作为 xsl:stylesheet 的直接子元素是允许的,但没有任何作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多