Ida*_*dan 5 xml validation xsd schematron
我正在尝试将schematron验证添加到我的xsd中.这是我的新xsd:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
xmlns:sch="http://www.ascc.net/xml/schematron"
elementFormDefault="qualified" >
<xs:element name="books">
<xs:complextype>
<xs:sequence> ;P
<xs:element name="book" type="bookType" maxoccurs="unbounded">
<xs:annotation>
<xs:appinfo>
<sch:pattern id="onLoanTests" xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<sch:rule context="book">
<sch:report test="@on-loan and not(@return-date)">
Every book that is on loan must have a return date
</sch:report>
</sch:rule>
</sch:pattern>
</xs:appinfo>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complextype>
</xs:element>
<xs:complextype name="bookType">
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="author" type="xs:string" />
<xs:element name="publication-date" type="xs:string" />
</xs:sequence>
<xs:attribute name="publisher" type="xs:string" use="required" />
<xs:attribute name="on-loan" type="xs:string" use="required" />
<xs:attribute name="return-date" type="xs:string" use="optional" />
</xs:complextype>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
这是我的测试xml:
<books>
<book publisher="ddd" on-loan="sdsd">
<title>idan title</title>
<author>idan author</author>
<publication-date>idan date</publication-date>
</book>
</books>
Run Code Online (Sandbox Code Playgroud)
使用我提供的xml我没有得到验证错误.
我假设我会收到消息"每本借出的书必须有一个返回日期"并且xml将无效.建议为什么?
更新 我确实通过在oXygen xml编辑器中使用schematron验证来使其工作.但是,我想如何在我的代码中使用?我需要安装一些特别的东西吗?链接到另一个图书馆?
UPDATE2 显然,这里的"处理"一节中,所有必需的步骤详细.
您的第二次更新可能是该主题的最佳参考.XSD本身不允许您使用一种机制来验证schematron以及架构本身.该xsd:appinfo元素允许您嵌入不同模式语言的验证信息,但它专门用于应用程序(因此名称).
这意味着你需要做一些事情来启用它.您引用的论文提供了最佳方法,归结为:
根据您的环境,您可能需要考虑查看XProc实现(calabash或calumet)来实现该管道.
| 归档时间: |
|
| 查看次数: |
5650 次 |
| 最近记录: |