Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在XSLT2.0中获取当前xml文件名?_Java_Xml_Xslt_Xslt 2.0 - Fatal编程技术网

Java 如何在XSLT2.0中获取当前xml文件名?

Java 如何在XSLT2.0中获取当前xml文件名?,java,xml,xslt,xslt-2.0,Java,Xml,Xslt,Xslt 2.0,我正在将一个XML转换为html,并使用document-uri()获取当前文件名。当我在本地系统上进行转换时,这段代码运行良好,但当我尝试在服务器和应用程序上进行转换时,java不会返回任何值 XSLT代码: <xsl:value-of select="substring-before(replace(document-uri(.), '.*/', '') , '.xml')"/> 试试这个: <xsl:value-of select="tokenize(base-uri

我正在将一个XML转换为html,并使用
document-uri()
获取当前文件名。当我在本地系统上进行转换时,这段代码运行良好,但当我尝试在服务器和应用程序上进行转换时,java不会返回任何值

XSLT代码:

<xsl:value-of select="substring-before(replace(document-uri(.), '.*/', '') , '.xml')"/>

试试这个:

<xsl:value-of select="tokenize(base-uri(.), '/')[last()]"/>

如果文档uri(.)未返回任何内容,则表明存储文档的uri未知。这可能意味着文档在传递给XSLT处理器时在内存中,例如:

  • 您可能传递了一个没有系统ID属性的
    StreamSource

  • 您可能传递了一个DOM文档


因此,我们需要了解XSLT转换是如何调用的。

这似乎更像是一个Java问题,而不是XSLT问题。我用Saxon-9测试了它,它可以按预期工作。所以我添加了Java标记,问题似乎更多的是XML文件的相对/绝对路径。XML文件可能在本地工作,因为它可能被放置在类路径中,但是当部署到服务器上时,XML文件可能在类路径中不可用,因此返回
null
。请检查文件路径。如果我尝试在本地打印完整的文档uri(.),则即使文档uri(.)也不会返回任何内容。这很好,但我们将此XSL文件称为转换文件,因为它不会返回任何内容。是的!!你说得对,我们也是这么做的。我只是在java团队中看到了这一点,现在他们得到了这一点。谢谢