Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何从其他样式表导入模板?_Xml_Xslt_Import_Stylesheet - Fatal编程技术网

Xml 如何从其他样式表导入模板?

Xml 如何从其他样式表导入模板?,xml,xslt,import,stylesheet,Xml,Xslt,Import,Stylesheet,我知道我必须使用xsl:import,但我不知道如何调用模板的名称 怎么做?您可以使用在传统编程语言中调用函数 您可以在XSLT中定义函数,比如这个输出字符串的简单函数 <xsl:template name="dosomething"> <xsl:text>A function that does something</xsl:text> </xsl:template> 做某事的函数 可以通过调用此函数。您可以使用在传统编程语言中调用函数

我知道我必须使用
xsl:import
,但我不知道如何调用模板的
名称

怎么做?

您可以使用
在传统编程语言中调用函数

您可以在XSLT中定义函数,比如这个输出字符串的简单函数

<xsl:template name="dosomething">
  <xsl:text>A function that does something</xsl:text>
</xsl:template>

做某事的函数
可以通过

调用此函数。您可以使用
在传统编程语言中调用函数

您可以在XSLT中定义函数,比如这个输出字符串的简单函数

<xsl:template name="dosomething">
  <xsl:text>A function that does something</xsl:text>
</xsl:template>

做某事的函数
此函数可以通过

调用,使用
非常简单:

名为
f.XML的示例XML

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <a>abc</a>
    <b>cde</b>
</root>
包括示例XSLT
f1.XSLT

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="f1.xslt"/>

 <xsl:template match="/root">
   A: <xsl:value-of select="a/text()" />
   <xsl:call-template name="secondTemplate" />
 </xsl:template>

</xsl:stylesheet> 
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template name="secondTemplate">
   B: <xsl:value-of select="b/text()" />
 </xsl:template>

</xsl:stylesheet> 

B:
输出:

<?xml version="1.0"?>

   A: abc
   B: cde

A:美国广播公司
B:cde
因此,第一个XSLT(
f.XSLT
)确实调用了第二个XSLT(
f1.XSLT
)——它是通过使用
行访问的命名模板导入的

使用应用
非常简单:

名为
f.XML的示例XML

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <a>abc</a>
    <b>cde</b>
</root>
包括示例XSLT
f1.XSLT

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="f1.xslt"/>

 <xsl:template match="/root">
   A: <xsl:value-of select="a/text()" />
   <xsl:call-template name="secondTemplate" />
 </xsl:template>

</xsl:stylesheet> 
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template name="secondTemplate">
   B: <xsl:value-of select="b/text()" />
 </xsl:template>

</xsl:stylesheet> 

B:
输出:

<?xml version="1.0"?>

   A: abc
   B: cde

A:美国广播公司
B:cde

因此,第一个XSLT(
f.XSLT
)确实调用了第二个XSLT(
f1.XSLT
)——它是通过使用
行访问的命名模板导入的

是的,但是我已经在一个XSLT文件中完成了大量模板,我想将它们导入到另一个XSLT文件中,以便可以重用它们。我不知道怎么做。。。我知道我必须使用
xsl:import
,但不知道以后如何调用模板。您不需要导入所有模板,导入上游文件就足够了。是的,但是我在一个XSLT文件中已经完成了大量模板,我想将它们导入到另一个XSLT文件中,以便可以重用它们。我不知道怎么做。。。我知道我必须使用
xsl:import
,但不知道以后如何调用模板。您不需要导入所有模板,导入上游文件就足够了。当您在文件中导入另一个xslt时,它将自动应用于您的转换。您的问题不清楚。使用
xsl:import
时,将导入导入的样式表中的所有模板。然后调用或应用它们,就好像它们是您自己的样式表的一部分一样。更多信息,请阅读:当您在文件中导入另一个xslt时,它将自动应用于您的转换。您的问题不清楚。使用
xsl:import
时,将导入导入的样式表中的所有模板。然后调用或应用它们,就好像它们是您自己的样式表的一部分一样。欲了解更多信息,请阅读: