我会在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编程的新手。感谢。
答案 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