在您的 Schematron 中,您可以提供自己的
schxslt:location
函数,例如
<schema xmlns="http://purl.oclc.org/dsdl/schematron" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:schxslt="https://doi.org/10.5281/zenodo.1495494" queryBinding="xslt3">
<xsl:function name="schxslt:location" as="xs:string">
<xsl:param name="node" as="node()"/>
<xsl:sequence
select="string-join($node/ancestor-or-self::*!node-name(), '/')"/>
</xsl:function>
该示例只是向您展示如何设置自己的函数,函数体不是您想要生成的带有位置谓词的路径的实现,而只是生成带有节点名称的路径。但是您可以根据您的需求调整该函数,但尝试模仿
path
函数结果的原始 Schxslt 实现位于 https://github.com/schxslt/schxslt/blob/main/core/src/main/资源/xslt/2.0/compile/compile-2.0.xsl#L185。在该代码中,您似乎只想输出元素节点的 Q{
加上位置谓词,而不是 node-name()
命名空间-uri 和本地名称串联。