相关文章推荐
温柔的大葱  ·  Xamarin Forms: How to ...·  1 月前    · 
完美的砖头  ·  autohotkey GroupBox - ...·  4 月前    · 
狂野的皮蛋  ·  怎么继承 CSSProperties ...·  9 月前    · 
威武的香瓜  ·  reactjs - How can I ...·  2 年前    · 
备案 控制台
学习
实践
活动
专区
工具
TVP
写文章

PI Parameters

概观

XSLT支持在执行时将参数传递给样式表的概念。在JavaScript中使用XSLTProcessor时,这已经有一段时间了。但是,使用 <?xml-stylesheet?> 处理指令(PI)时,以前无法提供参数。

为了解决这两个新的PI在Firefox 2中实现(请参阅下面的支持版本以了解详细信息) <?xslt-param?> <?xslt-param-namespace?> 。两个PI都可以像 xml-stylesheet PI那样包含“伪属性” 。

以下文档将两个参数“color”和“size”传递给样式表“style.xsl”。

<?xslt-param name="color" value="blue"?>
<?xslt-param name="size" select="2"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>

请注意, XSLTProcessor 在JavaScript中使用对象完成转换时,这些PI没有效果。

处理说明

使用 xml-stylesheet中 定义的规则分析 xslt-param xslt-param-namespace PI中的属性。任何无法识别的属性都必须被忽略。只要该属性遵循其中的语法,任何属性的解析都不能由于存在无法识别的属性而失败。 xml-stylesheet

无论是 xslt-param xslt-param-namespace 必须出现在文档的序言中,第一个元素标记之前IE浏览器。序言中的所有PI都必须得到尊重,无论是在 xml-stylesheet PI 之前发生,还是在任何PI 之后发生。

如果有多个 xml-stylesheet PI,则参数将应用于所有样式表,因为所有样式表都按照XSLT spec.reference导入到单个样式表中?请注意, xml-stylesheet Firefox中目前不支持多个XSLT PI。

xslt-param

所述 xslt-param PI支持4个属性:

名称参数名称的本地名称部分。没有对属性进行语法检查,但如果它不是有效的 NCName ,它将永远不匹配样式表中的任何参数。命名空间参数名称的命名空间。没有对属性进行语法检查。值包含参数的字符串值。该属性的值用作参数的值。数据类型将始终是 字符串 。为该参数选择一个XPath表达式。该属性的值被解析为XPath表达式。评估表达式的结果被用作参数的值。

如果 name 属性缺失或为空,则PI将被忽略。

如果 名称空间 属性缺失或为空,则使用空名称空间。

指定样式表中不存在的参数名称(或样式表中的变量)不是错误。PI简单地被忽略。

如果 value select 都存在,或者如果既没有 也没有 select ,则PI被忽略。

请注意,由于该值可能包含撇号和引号字符, value="..." 因此不完全等同 select="'...'"

例子

将参数'color'设置为'red'字符串:

<?xslt-param name="color" value="red"?>

将参数'columns'设置为数字2: