Function XSLT v1.0-document()调用外部模板

Function XSLT v1.0-document()调用外部模板,function,reference,xslt-1.0,Function,Reference,Xslt 1.0,我试图从模板内部访问不同xsl文件中的xsl模板。这两个模板位于不同的XSL文件上,这就是我需要document函数的原因。这些模板也适用于不同的xml文件 我的问题是如何从第一个模板内部调用第二个模板。我的代码示例: 我在模板库中: <xsl:template match="Library"> <fo:table table-layout="fixed" width="160mm"> <fo:table-column column-width

我试图从模板内部访问不同xsl文件中的xsl模板。这两个模板位于不同的XSL文件上,这就是我需要document函数的原因。这些模板也适用于不同的xml文件

我的问题是如何从第一个模板内部调用第二个模板。我的代码示例:

我在模板库中:

   <xsl:template match="Library">
    <fo:table table-layout="fixed" width="160mm">
    <fo:table-column column-width="80mm"/>
    <fo:table-column column-width="80mm"/>
      <fo:table-body>
            <fo:table-row>
              <xsl:for-each select="document(Library/@File)/Document/Books">
                <xsl:apply-templates select="."/>
              </xsl:for-each>
            </fo:table-row>
          <fo:table-body> 
       </fo:table>  
    </xsl:template>

我正在尝试访问模板书:

<xsl:template match="Books">
   <fo:table-cell>
      <fo:block font-family="arial" font-size="8pt" text-align="left">
         <xsl:value-of select="substring(@IBAN,4)"/>
      </fo:block>
   </fo:table-cell>  
   <fo:table-cell>
      <fo:block font-family="arial" font-size="8pt" text-align="left">
         <xsl:value-of select="@date"/>
      </fo:block>
   </fo:table-cell>   
 </xsl:template>

document函数中的第一个参数似乎设置不正确。我该怎么重写它呢?我在论坛中找不到有类似问题的任何问题。
任何帮助都将不胜感激,谢谢

要从另一个XSLT文件引入模板,请使用
xsl:import
xsl:include
。如果要将XSLT模板应用于指定文档中的XML以及默认输入XML,请使用
xsl:document

不幸的是,您将无法在XSLT文件的路径中使用变量,因为该路径是在编译时解析的


如果无法静态地确定路径(可能通过相对路径规范实现所需的变化),您可能需要重新考虑整个组织。您甚至可以在运行XSLT之前以编程方式编写XSLT,以便能够动态编写静态@href,但在这样做之前,请重新考虑您的总体解决方案体系结构。

Hi。您的回答使我们意识到xsl:include和xsl:document之间的区别,谢谢。我真正想要的是将XSLT模板应用到一个不同的xml文档,而不是我在里面提到的模板。似乎我不能在XSLT文件内的路径中使用变量,但似乎可以使用XPATH来访问所需的模板。