包括大块的 xsl
include chunk of xsl
我有一大块 XSL 代码(连同 Apache fop),我想重用它们:
使用的 XSL 版本和架构
<xsl:stylesheet version="3.0" xml:lang="en"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:exsl="http://exslt.org/common"
xmlns:java="http://xml.apache.org/xslt/java"
exclude-result-prefixes="java"
xmlns:map="xalan://java.util.HashMap" extension-element-prefixes="map">
要重用的块:
<xsl:choose>
<xsl:when test="map:get($etiquetas,'datosMensajeLabel')" />
<fo:table-cell padding="2pt" border-top-color="black"
border-top-width="0.5pt" border-top-style="solid"
background-color="grey">
<fo:block text-align="start" color="white" font-size="12pt">
<xsl:value-of
select="map:put($etiquetas,'datosMensajeLabel','')" />
<xsl:value-of
select="map:get($etiquetas,'datosMensajeLabel')" />
</fo:block>
</fo:table-cell>
</xsl:choose>
<xsl:otherwhise>
<fo:table-cell padding="2pt" background-color="grey">
<fo:block text-align="start" color="white" font-size="12pt">
<xsl:value-of
select="map:get($etiquetas,'datosMensajeLabel')" />
</fo:block>
</fo:table-cell>
</xsl:otherwhise>
到目前为止我试过了:
- 声明并使用命名的 模板:它失败了,因为 table-cell 破坏了声明模板的 Apache fop 模式
- 将那段代码放在另一个文件中并使用 import 或 include:它没有用,因为它没有用作子项共 xsl:stylesheet
您收到错误 fo:table-cell not allowed in that position 的原因是前面的 xsl:when 元素已关闭,因此不包装 元素。
xsl:choose 只允许 xsl:when 或 xsl:otherwise 作为直接子节点,因此在找到 时会抱怨。
在 周围环绕 xsl:when 应该可以消除错误消息。
顺便说一句,你拼错了xsl:otherwise
我有一大块 XSL 代码(连同 Apache fop),我想重用它们:
使用的 XSL 版本和架构
<xsl:stylesheet version="3.0" xml:lang="en"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:exsl="http://exslt.org/common"
xmlns:java="http://xml.apache.org/xslt/java"
exclude-result-prefixes="java"
xmlns:map="xalan://java.util.HashMap" extension-element-prefixes="map">
要重用的块:
<xsl:choose>
<xsl:when test="map:get($etiquetas,'datosMensajeLabel')" />
<fo:table-cell padding="2pt" border-top-color="black"
border-top-width="0.5pt" border-top-style="solid"
background-color="grey">
<fo:block text-align="start" color="white" font-size="12pt">
<xsl:value-of
select="map:put($etiquetas,'datosMensajeLabel','')" />
<xsl:value-of
select="map:get($etiquetas,'datosMensajeLabel')" />
</fo:block>
</fo:table-cell>
</xsl:choose>
<xsl:otherwhise>
<fo:table-cell padding="2pt" background-color="grey">
<fo:block text-align="start" color="white" font-size="12pt">
<xsl:value-of
select="map:get($etiquetas,'datosMensajeLabel')" />
</fo:block>
</fo:table-cell>
</xsl:otherwhise>
到目前为止我试过了:
- 声明并使用命名的 模板:它失败了,因为 table-cell 破坏了声明模板的 Apache fop 模式
- 将那段代码放在另一个文件中并使用 import 或 include:它没有用,因为它没有用作子项共 xsl:stylesheet
您收到错误 fo:table-cell not allowed in that position 的原因是前面的 xsl:when 元素已关闭,因此不包装
xsl:choose 只允许 xsl:when 或 xsl:otherwise 作为直接子节点,因此在找到
在
顺便说一句,你拼错了xsl:otherwise