Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
.net 从XSL/XPath发出当前文档名和行号_.net_Xslt_Xpath - Fatal编程技术网

.net 从XSL/XPath发出当前文档名和行号

.net 从XSL/XPath发出当前文档名和行号,.net,xslt,xpath,.net,Xslt,Xpath,是否有方法发出当前正在处理的文档的uri(该文档可能已加载document()函数调用,也可能未加载document()函数调用)以及行号 基本上,我的XSL中有一种可能存在错误的情况,所以我使用 <xsl:message terminate="yes">...</xsl:message> 。。。 如果消息可以在源xml文档中包含错误的位置,那就太好了 目前,我正在使用内置的.NET XSL引擎,尽管我可能不得不改用saxon来处理另一个问题。对于XSLT 2.0处理

是否有方法发出当前正在处理的文档的uri(该文档可能已加载document()函数调用,也可能未加载document()函数调用)以及行号

基本上,我的XSL中有一种可能存在错误的情况,所以我使用

<xsl:message terminate="yes">...</xsl:message>
。。。
如果消息可以在源xml文档中包含错误的位置,那就太好了


目前,我正在使用内置的.NET XSL引擎,尽管我可能不得不改用saxon来处理另一个问题。

对于XSLT 2.0处理器,您可以使用
基本uri(.)
来处理uri。Saxon的行号有一个扩展名


对于XSLT1.0,我认为要访问输入URI,必须定义一个参数并从应用程序中传入值。

XSLT1.0规范中没有什么非常有用的东西

2.0规范有base-uri()和document-uri()。它们的含义稍有不同:文档uri是一个uri,可用于使用doc()加载文档(由于UriResolver和EntityResolver,它可能与文档的实际位置无关),而base-uri()适用于每个元素节点,是用于解析相对uri引用的uri(这可能与文档位置不同,因为xml:base属性和外部实体边界)

Saxon提供Saxon:system-id(),它是从中加载特定元素的实际文件的URI,以及Saxon:line-number()这是源文件中该元素的行号。这取决于在命令行上生成文档时保留行号信息:option-l。我认为Microsoft处理器中没有类似的东西