【问题标题】:XSLT - Own/Custom Tags (for Styling)XSLT - 自己的/自定义标签(用于样式)
【发布时间】:2013-10-16 13:12:55
【问题描述】:

我想为我的 XSL 文件指定自己的标签,例如:因为我有许多用于样式的冗余块:

<fo:block font-weight="bold" margin-bottom="1cm" color="#424242"> ... </fo:block>

所以我想要的是把这个&lt;fo:block&gt; 元素放在一个更短的标签中,这样我就不需要一次又一次地写这个并且只有一个简单的标签。

我现在用谷歌搜索了几个小时,但找不到解决方案或说“不可能”的人。

希望你能帮帮我!

【问题讨论】:

  • 您是在寻找一种方法来避免在制作 XSLT 时重复此操作,还是在寻找一种在 xsl-fo 中实际定义别名的方法?
  • 我想说我正在寻找一种方法来为此创建一个(短)别名,以便像 这样的标签代表 元素跨度>
  • 那么,您是手动编写此文档,还是使用 XSLT(或其他方式)构建它?
  • 我正在使用带有 Java 的 apache FOP 来构建 PDF 文档,所以是的,它的 xslt(如果我没有出错的话)
  • 您能否向我们展示一些使用这些元素的 XSLT?我们可以尝试向您展示如何减少重复。

标签: xml xslt xsl-fo apache-fop


【解决方案1】:

一个与您想要的相当接近的选项是使用xsl:attribute-set

例子:

<xsl:attribute-set name="headline">
    <xsl:attribute name="font-weight" select="'bold'"/>
    <xsl:attribute name="margin-bottom" select="'1cm'"/>
    <xsl:attribute name="color" select="'#424242'"/>
</xsl:attribute-set>

<xsl:template match="foo">
    <fo:block xsl:use-attribute-sets="headline">...</fo:block>
</xsl:template>

注意:如果您使用的是 XSLT 1.0,则不能在 xsl:attribute 中使用 select

【讨论】:

    【解决方案2】:

    编辑:删除了我最初的错误假设

    您可以将一个 XSLT 包含到另一个 XSLT 中。因此,如果您有许多共享某些定义的模板,请将所有共享定义放在一个共享模板中,并使用&lt;xsl:include&gt; 来引用共享模板。 Information on include

    【讨论】:

    • 嗯不知道你是不是弄错了,或者我写的有点奇怪:D 我有这样的东西:一些文本... 但是我不想一次又一次地写整个 fo:block 部分,我想把它“包装”成一个简单的标签,这样我就可以写了:Some text ...
    【解决方案3】:

    XSLT 允许您将 XML 文档收集为树,然后将该树用作当前上下文。换句话说,您可以对正在使用的“宏”进行自己的预处理。

    我建议你为你的宏创建一个命名空间,使调试过程更容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 2012-04-23
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 2021-05-24
      相关资源
      最近更新 更多