对于XSLT中的疑问,我会寻求您的指导。在我当前的项目中,需要创建许多XSLT文件。在这些转换中,很少执行常见的步骤;例如,更改输入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中调用这些变量吗。与其他程序类似。类似于java的lang,我可以全局声明一个公共函数,并在不同的类中使用它。基本上,我想知道是否可以全局声明并在所有xslt中使用它。
我会使用<include/>
来包含定义了所有全局变量的XSLT文件。另请参阅http://www.w3.org/TR/xslt#element-包括
将所有变量放入文件"中;my_global_variables.xsl":
<?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>
您的主样式表看起来是这样的,包括";my_global_variables.xsl":
<?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>
。
请就如何避免代码重复征求您的建议。我可以创建吗一个常见的XML文件,如实用程序,并将变量声明为大写和smallcase,我应该在xslt中调用这些变量吗。
<xsl:import>
和<xsl:include>
是专门为此任务设计的两条XSLT指令。
样式表模块中的全局变量(xsl:stylesheet
元素的子元素)可以在包含该样式表的样式表中访问。导入的规则稍微复杂一些,但如果导入样式表中的全局变量之间没有命名冲突,则可以从导入样式表访问它们。
最后,我建议不要使用www.w3schools.com,请访问:http://www.w3fools.com