2

对于 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.xml 中调用这些变量吗?类似于其他编。像 java 这样的语言,我可以在其中全局声明一个通用函数并在不同的类中使用它。基本上我想知道是否可以全局声明并在所有xslt中使用它。

4

2 回答 2

2

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

将所有变量放入文件“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>.

于 2012-09-11T11:10:07.337 回答
1

就如何避免代码重复征求您的意见。我可以创建一个通用 XML 文件(例如实用程序)并声明变量大写和小写,我应该在 xslt.xml 中调用这些变量吗?

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

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

最后,我建议不要使用 www.w3schools.com -- 查看原因:http ://www.w3fools.com

于 2012-09-11T12:58:39.893 回答