在项目中声明全局变量并在xslt中使用它

时间:2012-09-11 10:57:50

标签: xslt xslt-1.0

我会在XSLT中寻求您的怀疑指导。在我当前的项目中,需要创建许多XSLT文件。在这些转变中,几乎没有共同的步骤; for.eg.从输入xml更改元素值的大写。我目前在XSLT中使用以下代码,因此如果创建了50个XSLT,那么此代码将被复制。

<xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" />
            <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" /> 
            <xsl:message>UPPERCASE is <xsl:value-of select="translate($MsgType, $smallcase, $uppercase)" /></xsl:message>  

请求您就如何避免代码重复提出建议。我可以创建一个公共XML文件,如实用程序,并声明变量大写和小写,我应该在xslt中调用这些变量。与其他编程相似。 lang像java一样,我可以在全局声明一个公共函数,并在不同的类中使用它。基本上我想知道是否可以全局声明并在所有xslt中使用它。请给我建议,因为我是XSLT编程的新手。感谢。

2 个答案:

答案 0 :(得分:1)

我会使用<include/>来包含定义了所有全局变量的XSLT文件。 另请参阅http://www.w3.org/TR/xslt#element-include

将所有变量放入文件&#34; my_global_variables.xsl&#34;:

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

<xsl:variable name="myVariable" select="'xyz'"/>

<!-- more variables to add -->

</xsl:stylesheet>

您的主样式表如下所示,包括&#34; my_global_variables.xsl&#34;:

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

<xsl:include href="my_global_variables.xsl"/>

<xsl:template match="/">

</xsl:template>
</xsl:stylesheet>

我希望这对你有所帮助。

您还可以使用<import>元素导入样式表。导入样式表的优先级低于导入样式表 - 所以在您的情况下我会使用<include>

祝你好运, 彼得

答案 1 :(得分:0)

  

请求您就如何避免代码重复提出建议。我能创造吗?   一个常见的XML文件,如实用程序,并声明变量大写   和smallcase,我应该在xslt中调用这些变量。

<xsl:import> <xsl:include> 是专为此任务设计的两条XSLT指令。

样式表模块中的全局变量(xsl:stylesheet元素的子元素)可在包含此样式表的样式表中访问。导入的规则有点复杂,但如果导入的样式表中的全局变量之间没有命名冲突,则可以从导入样式表访问它们。

最后,我建议使用www.w3schools.com - 请参阅:http://www.w3fools.com