У меня есть проект, в котором мне нужно добавить schematron в мой файл xsd. Проблема в том, что я использовал xmllint, который не позволяет проверять schematron, я нашел другие решения, такие как использование xsltproc и iso-schematron, но это обязывает меня добавить папку iso-schematron в мой проект.
У вас есть более простое решение для проверки схемы с помощью команд bash?
Я использовал этот метод и хотел проверить с помощью этот процесс, но он кажется более сложным, чем мое первое решение.
XSD-код:
<xs:element name="worker">
<xs:annotation>
<xs:appinfo>
<sch:pattern name="Testing schematron" xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<sch:rule context="worker">
<sch:assert test="id>2"
You have to respect de schema.
</sch:assert>
</sch:pattern>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:token"/>
</xs:sequence>
</xs:complexType>
</xs:element>
xml-код:
<worker>
<id>3</id>
</worker>
Баш решения:
echo XSD validation
xsltproc iso-schematron-xslt/ExtractSchFromXSD.xsl my_xsd_schema.xsd > schema.sch
xsltproc iso-schematron-xslt/iso_dsdl_include.xsl schema.sch > step1.xsl
xsltproc iso-schematron-xslt/iso_abstract_expand.xsl step1.xsl > step2.xsl
xsltproc iso-schematron-xslt/iso_svrl_for_xslt1.xsl step2.xsl > step3.xsl
xsltproc step3.xsl my_xml_code.xml
rm schema.sch
rm step1.xsl
rm step2.xsl
rm step3.xsl