XSLT中'.?select=*.xml;recurse=yes'含义及collection()语法文档问询
嘿,我来帮你拆解这两个问题,刚好对XSLT的collection函数这块挺熟的:
问题1:
.?select=*.xml;recurse=yes的具体含义 这个字符串是Saxon处理器(Michael Kay是Saxon的作者,所以他的示例都是针对Saxon的)用来指定collection函数的遍历规则的,拆解每个部分:
.:代表当前工作目录,也就是你运行XSLT转换时所在的目录?:作为分隔符,后面跟的是控制遍历行为的查询参数,多个参数用分号;分隔select=*.xml:指定只收集所有文件名匹配*.xml的文件,也就是所有XML格式的文件recurse=yes:开启递归遍历模式,会自动遍历当前目录下的所有子目录,包括深层嵌套的子目录里的XML文件
问题2:传递给collection()函数的字符串语法的官方文档位置
你在XSLT规范里找不到相关内容是正常的——因为XSLT标准只定义了collection()函数的核心行为(比如返回节点序列),但具体的URI语法是由各个XSLT处理器自行实现的,属于处理器的扩展特性。
Michael Kay给出的这个语法是Saxon处理器专属的,详细的文档在Saxon官方文档的collection URI部分,里面会列出所有支持的参数(比如select、recurse、depth、exclude等)以及用法。其他处理器(比如Xalan)的collection()参数语法可能完全不同,需要看对应处理器的文档。
内容的提问来源于stack exchange,提问作者shawnT
相关产品推荐
相关产品推荐

