我是新的schematron,我有以下问题。这是从XHTML文件的片段:实施schematron规则
<div class="provision">
<!-- provision (SECTION) -->
<header>
<!-- headers -->
<div class="desig">
<!-- if provision then header/[email protected]=desig/[email protected]=num required -->
<span class="num">1.</span>
</div>
<h1 class="title">prov-title</h1>
</header>
<p class="prov">para-prov-level</p>
<p class="prov">para-prov-level</p>
<div class="glossary">
<!-- glossary -->
<!-- glossary requires dl -->
<dl>
<!-- dl should have dt, and at least one dd -->
<dt> term </dt>
<dd>definition</dd>
<dt> term </dt>
<dd>definition</dd>
</dl>
</div>
<div class="level-1-grp">
<!-- SUBSECTION -->
<header>
<div class="desig">
<span class="num">(1)</span>
</div>
</header>
<p class="level-1">para-level-1</p>
<div class="level-2-grp">
<header>
<div class="desig">
<span class="num">(a)</span>
</div>
</header>
<p class="level-2">para-level-2</p>
</div>
<div class="level-2-grp">
<header>
<div class="desig">
<span class="num">(b)</span>
</div>
</header>
<p class="level-2">para-level-2</p>
</div>
<p class="level-1">para-level-1</p>
</div>
<p class="prov">para-prov-level</p>
</div>
,我想创建一个规则,以检查 是否有provision
然后header/[email protected]=desig/[email protected]=num
需要和glossary
需要dl
。我一直在尝试这样的,但它不工作:
<iso:pattern id="structure-provision">
<iso:title>Testing for Provision structure...</iso:title>
<iso:rule context="*:div[@class='provision']">
<iso:assert test="self::*:header/div[@class ='desig']/*:span[@class='num']">if provision then header/[email protected]=desig/[email protected]=num required</iso:assert>
</iso:rule>
</iso:pattern>
<!--glossory structure -->
<iso:pattern id="structure-glossory">
<iso:title>Testing for Provision structure...</iso:title>
<iso:rule context="*:div[@class='glossory']">
<iso:assert test="self::*:dl">glossary requires dl</iso:assert>
<iso:assert test="self::*:dl/dt">dl should have a dt</iso:assert>
</iso:rule>
</iso:pattern>
任何帮助,将不胜感激。谢谢
哪位不工作?所有的?鉴于你的上下文节点是正确的,测试节点应该是相对的。在做schematron时,我总是从简单开始。因此,例如,我强迫断言来证明上下文,并更改我正在验证的文档以减少潜在的歧义。除非你有一些非常聪明的工具,否则调试很痛苦。 –
如果我的回答解决了您的问题,您能否将其标记为正确答案?谢谢 – conorgil