使用Kosit Validator CLI验证XRechnung为何未触发PEPPOL-EN16931-R010规则?
问题分析与解决建议
你遇到的问题核心是:空的<ram:URIID schemeID="EM">仅触发了PEPPOL-EN16931-R008(空元素检查),未触发PEPPOL-EN16931-R010(电子邮件格式/内容验证),主要原因和解决方向如下:
1. 规则执行优先级与拦截逻辑
PEPPOL-EN16931-R008属于基础结构验证规则,优先级高于业务语义类规则(如R010)。Kosit Validator在验证流程中,会先检查元素的基础有效性:当<ram:URIID>被判定为空元素(无文本内容)时,验证器会优先抛出R008错误,并且会跳过对该元素的后续语义规则检查——因为元素本身已经不符合最基本的结构要求,再检查格式或内容逻辑已无意义。
2. R010规则的触发条件
PEPPOL-EN16931-R010的触发前提是:<ram:URIID>元素存在且包含文本内容,同时schemeID="EM",此时才会检查内容是否符合电子邮件格式规范。你的案例中元素为空,不满足R010的前置触发条件,因此不会被触发。
解决步骤
- 先修复R008错误:给
<ram:URIID schemeID="EM">添加有效的电子邮件内容,示例:
若填写的内容不符合电子邮件格式(比如<ram:URIUniversalCommunication> <ram:URIID schemeID="EM">john.doe@example.com</ram:URIID> </ram:URIUniversalCommunication>john.doe-example.com),此时验证器会触发R010规则;若内容格式正确,则不会触发任何相关错误。 - 确认Scenario规则配置:检查标准
scenario.xml中是否包含R010规则的启用配置,确保该规则未被注释或禁用。通常Kosit的标准XRechnung场景会默认启用所有必填规则,但可通过查看场景文件中的规则引用列表确认。
内容的提问来源于stack exchange,提问作者user25809246
相关产品推荐
相关产品推荐

