XSLT 1.0中xsl:variable与xsl:param的顺序是否有要求?
XSLT 1.0中xsl:param与xsl:variable的顺序影响及规范要求
代码片段
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" xmlns:msa="http://www.publictalksoftware.co.uk/msa"> <xsl:output method="html" indent="yes" version="4.01" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"/> <xsl:param name="CSSFile1"></xsl:param> <xsl:variable name="DutyHistory" select="document('DutyAssignHistory.XML')"/> <xsl:variable name="LabelsInfo" select="document('LabelsInfo.XML')"/> <xsl:template match="/">
问题
将上述代码中的<xsl:variable>代码行放在<xsl:param>代码行之前或之后是否会有影响?在Visual Studio中调整顺序后未收到警告,但想了解XSL文件中是否存在相关的潜在规范要求。
回答
在XSLT 1.0规范中,顶级的<xsl:param>和<xsl:variable>元素的顺序不会产生功能上的影响,只要它们都是直接作为<xsl:stylesheet>的子元素(即顶级节点)。
具体说明:
- 顶级参数和变量的作用域覆盖整个样式表,它们的初始化逻辑不依赖彼此的排列顺序(除非某一元素的定义显式引用了另一元素——但你的示例中变量未引用参数,参数也未引用变量,完全无依赖)。
- XSLT 1.0规范明确允许顶级的
<xsl:param>、<xsl:variable>、<xsl:template>等元素以任意顺序排列,只要符合样式表的整体结构规则。
特殊情况注意:如果某个顶级变量的定义中引用了另一个顶级参数或变量,也无需担心顺序问题——XSLT处理器会在样式表初始化阶段自动解析所有顶级元素的依赖关系,按正确逻辑顺序完成初始化,即使被引用的元素排在后面也能正常工作。
Visual Studio未给出警告,是因为这种顺序调整完全符合规范,不属于错误或不推荐的写法。
内容的提问来源于stack exchange,提问作者Andrew Truckle
相关产品推荐
相关产品推荐

