有没有办法发出当前正在处理的文档的uri(可能是也可能没有加载document()函数调用),最好是行号?
基本上我的XSL中存在可能存在错误的情况,因此我正在使用
<xsl:message terminate="yes">...</xsl:message>
如果消息可以在源xml文档中包含错误的位置,那就太好了。
目前我正在使用内置的.NET XSL引擎,尽管我可能不得不转而使用saxon来解决另一个问题。
答案 0 :(得分:0)
使用XSLT 2.0处理器,您可以使用base-uri(.)
作为URI。 Saxon的行号扩展名为http://www.saxonica.com/documentation/index.html#!functions/saxon/line-number。
使用XSLT 1.0,我认为可以访问输入URI,您必须定义参数并从应用程序中传入值。
答案 1 :(得分:0)
在XSLT 1.0规范中没有什么用处。
2.0规范有base-uri()和document-uri()。它们意味着略有不同:document-uri是一个URI,可用于使用doc()加载文档(由于URIResolvers和EntityResolvers,它可能与文档的实际位置无关),而base-uri( )适用于每个元素节点,并且是用于解析相对URI引用的URI(由于xml:基本属性和外部实体边界,它可能与文档位置不同)。
Saxon提供了saxon:system-id(),它是从中加载特定元素的实际文件的URI,以及saxon:line-number(),它是该源中该元素的行号文件。这取决于在构建文档时保留行号信息:命令行上的选项-l。我不认为微处理器中有类似的东西。