【问题标题】:declare global variable in project and use it in xslt在项目中声明全局变量并在 xslt 中使用它
【发布时间】:2012-09-11 10:57:50
【问题描述】:

如果您对 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中使用它。

【问题讨论】:

    标签: xslt xslt-1.0


    【解决方案1】:

    我会使用&lt;include/&gt; 来包含定义了所有全局变量的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>
    

    还有&lt;import&gt; 元素可以用来导入样式表。导入样式表的优先级低于导入样式表 - 所以在你的情况下我会使用&lt;include&gt;

    【讨论】:

      【解决方案2】:

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

      &lt;xsl:import&gt;&lt;xsl:include&gt; 是专门为此任务设计的两条 XSLT 指令。

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

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

      【讨论】:

        猜你喜欢
        • 2010-11-17
        • 2014-06-07
        • 2019-02-04
        • 1970-01-01
        • 1970-01-01
        • 2018-04-04
        • 1970-01-01
        • 2015-08-12
        • 1970-01-01
        相关资源
        最近更新 更多