如何查找当前XSL文件中引用路径对应的XML文件位置?
先明确路径的性质
你代码里select属性中的/this/is/a/path不是文件系统路径,它是XPath表达式,作用是定位当前XSLT正在处理的XML源文档中的节点:
- 开头的
/代表XML文档的根节点 - 后续每一段字符对应XML的节点标签名,该路径匹配的XML结构示例如下:
<this> <is> <a> <path>节点内容</path> </a> </is> </this>
定位路径对应内容的方法
- 先找到当前XSLT绑定处理的主输入XML文件,直接在该文件中按节点层级搜索对应结构即可
- 如需验证匹配是否正确,可以在XSL中增加测试代码
<xsl:value-of select="$xyz" />,运行转换后查看输出结果即可确认匹配的节点内容
路径内容来自其他文件的查找方法
如果该XPath匹配的节点不在主输入XML中,一般是XSLT通过document()函数加载了外部XML文件,可按以下步骤查找:
- 搜索当前XSL文件及其导入/引入的其他XSL文件,查找
document()函数的调用代码,常见写法为:<xsl:variable name="ext_file" select="document('外部XML的文件路径.xml')" /> - 如果XPath是基于外部文档的节点匹配,写法会是
$ext_file/this/is/a/path,找到$ext_file变量对应的document()参数里的文件路径,即可拿到目标外部XML,再按节点层级查找对应内容 - 如果项目内XML文件较多,可以批量检索所有XML文件的节点结构,搜索是否存在
<this><is><a><path>的层级结构,就能快速定位目标文件
内容的提问来源于stack exchange,提问作者Pradyumna Kp
相关产品推荐
相关产品推荐

