svrl:失败断言位置属性规范化元素名称

问题描述 投票:0回答:1
c# xml xslt saxon schematron
1个回答
0
投票

在您的 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 和本地名称串联。

© www.soinside.com 2019 - 2024. All rights reserved.