You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用XmlPrime的xslt.exe命令行验证XML文档与XML Schema一致性?

解决方案:使用XmlPrime进行XML Schema验证

你之前遇到的问题核心是选错了工具:XmlPrime的xslt.exe是用于执行XSLT转换的工具,并非专门的XML Schema验证工具,因此单独使用--xsd和-v参数会报错(要求XSLT样式表)。正确的做法是使用XmlPrime自带的validate.exe工具完成Schema验证,具体步骤如下:

1. 基础XML Schema验证(使用validate.exe)

validate.exe是XmlPrime专门用于XML结构与Schema验证的工具,无需依赖XSLT样式表。针对你的目录结构(common存XSD,samples存发票XML),执行以下命令:

命令格式

# 基础验证,指定主XSD和目标XML
validate.exe --xsd "common/UBL-Invoice-2.1.xsd" "samples/invoice.xml"

# 若XSD存在依赖文件,指定XSD搜索目录
validate.exe --xsd "common/UBL-Invoice-2.1.xsd" --xsd-path "common" "samples/invoice.xml"

# 输出详细验证日志
validate.exe --verbose --xsd "common/UBL-Invoice-2.1.xsd" --xsd-path "common" "samples/invoice.xml"

参数说明

  • --xsd:指定主Schema文件路径(这里是UBL-Invoice-2.1.xsd)
  • --xsd-path:指定依赖Schema文件的搜索目录(解决XSD之间的引用问题)
  • --verbose:输出详细的验证错误与警告信息
  • 最后一个参数是待验证的XML文件路径

2. 为什么xslt.exe无法单独做Schema验证?

xslt.exe的--xsd参数是在执行XSLT转换前,验证输入XML是否符合指定Schema,它的核心功能仍是执行转换,因此必须搭配XSLT样式表文件使用。如果仅需验证而无需转换,validate.exe才是正确的选择。

3. 补充:完成Schematron验证(结合XmlPrime工具链)

你的目标还包括Schematron规则验证,可通过XmlPrime的schematron.exe和xslt.exe配合完成:

步骤1:将Schematron文件转换为XSLT

Schematron验证本质是通过XSLT实现的,需先把.sch文件转换成可执行的XSLT:

schematron.exe "peppol_schematron/PEPPOL-EN16931-UBL.sch" -o "peppol_schematron/PEPPOL-EN16931-UBL.xsl"

步骤2:执行XSLT完成Schematron验证(可同时做Schema验证)

用xslt.exe执行生成的XSLT,同时通过--xsd参数附加Schema验证:

xslt.exe --xsd "common/UBL-Invoice-2.1.xsd" --xsd-path "common" "samples/invoice.xml" "peppol_schematron/PEPPOL-EN16931-UBL.xsl" -o "validation-results.xml"

执行后,validation-results.xml会包含Schema与Schematron的所有验证结果。

4. 工具评估补充

  • XmlPrime:原生.NET工具,完美适配无Java的Windows环境,商业授权可直接联系官方获取报价,支持XSLT 2.0/3.0及Schematron全特性。
  • Saxon:有.NET版本(Saxon-HE .NET免费,PE/EE收费),若预算有限可考虑,但需注意.NET环境依赖;商业版本功能与XmlPrime相近。

内容的提问来源于stack exchange,提问作者pepr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 03:07:39