使用XSLT检索XML文件名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用XSLT检索XML文件名相关的知识,希望对你有一定的参考价值。
如何使用XSL 1.0代码检索XML源文件名?
答案
在XSLT 2.0中,有两个相关的函数:base-uri()和document-uri()。
在XSLT 1.0中,您必须将URL或文件名作为参数传递给样式表,除非处理器为此提供扩展功能。
另一答案
使用Xalan,有以下非官方功能:
<xsl:value-of select="document-location()"/>
我在转换本地文件时使用它,它给了我正在转换的XML文件的绝对路径。我发现浏览Xalan代码的函数,它是类FuncDoclocation
的一部分。
另一答案
无法获取XSL正在转换的文件的名称或路径。由于XSL的性质,被转换的数据可能不是来自文件,它可能只是转换数据流。
另一答案
我知道这已经过时了,但其他人可能仍在寻找答案。
我知道在XSLT 1.0中执行此操作的唯一方法是在XSLT中使用脚本函数:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="http://tempuri.org/msxsl">
<xsl:output method="xml" version="1.0"/>
<msxsl:script language="JScript" implements-prefix="user">
<![CDATA[
function getFilename(context){
return context.nextNode.url;
}
]]>
</msxsl:script>
<xsl:template match="/">
<INPUT>
<filename><xsl:value-of select="user:getFilename(/)"/></filename>
</INPUT>
</xsl:template>
</xsl:stylesheet>
这将生成XML输出,例如:
<?xml version="1.0" encoding="UTF-16"?>
<INPUT xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="http://tempuri.org/msxsl">
<filename>file:///C:/XLST/My%20Test%20XML%20File.txt.xml</filename>
</INPUT>
在这种情况下,我使用了一个名为C:/XLST/My Test XML File.txt
的文件。
用于导入文本文件的vb.net
代码首先将该文件转换为XML,并将.xml
扩展名附加到源文件名,然后由Transform处理。
这就是我的文件名以.txt.xml
结尾的原因
然后可以根据需要使用正常的XLST字符串函数来用%20
替换' '
,并且可能只返回文件名部分而不是整个路径和文件名。
以上是关于使用XSLT检索XML文件名的主要内容,如果未能解决你的问题,请参考以下文章