我想在Schematron + XSLT项目中更改一个会影响验证深度的关键参数,最方便的方法是将Schematron阶段的名称绑定到全局变量(或Schematron文件中的)
我有一个解决方法,其中将Schematron绑定到定义一个特定对象的对应对象,并且可以使用,但是这意味着每个阶段都必须更改唯一参数名称的变量,因为在其中包含不合法同一文件(变量)具有多个s的单个文件。
<phase id="terse">
<active pattern="core-tests"/>
<active pattern="terse-true"/>
</phase>
<phase id="verbose">
<active pattern="core-tests"/>
<active pattern="verbose-true"/>
</phase>
<pattern id="terse-true">
<xsl:param name="validation-is-terse" select="true()"/>
</pattern>
<pattern id="verbose-true">
<xsl:param name="validation-is-verbose" select="true()"/>
</pattern>
我更喜欢这样写:
<xsl:param name="validation-depth" select="{$phase}"/>
<phase id="terse">
<active pattern="core-tests"/>
</phase>
<phase id="verbose">
<active pattern="core-tests"/>
</phase>