Я хочу, чтобы правило, обеспечивающее, чтобы любой div[@class='extend']/div[@class='check']
был последним в пределах div[@class='chapter']
. Обратите внимание, что могут быть другие «расширенные» подразделения, которые имеют разные вложенные элементы (например, div[@class='extend']/div[@class='video']
), местоположение которых, как ожидается, не будет последним. Вложенный бит div[@class='extend']/div[@class='check']
заставляет меня написать это правило.
Я пробовал:
XML
<test>
<div class="chapter" id="s1">
<h1 class="title">18.3</h1>
<div class="intro" id="s2">
<p>Some intro text here</p>
</div>
<!--Incorrect position of div class="extend"/div class="check"-->
<div class="extend" id="s3">
<div class="check" id="s4">
<div class="metadata" id="s5">
<div class="title" id="s6">
<p>Check 18.3</p>
</div>
</div>
<h1 class="title">Check 18.3</h1>
<p>This is the Check for Chapter 18.3</p>
</div>
</div>
<!---\-\-\-->
<div class="sect1" id="s7">
<h1 class="title">Section text here</h1>
<p>text text text.</p>
<div class="extend" id="s8">
<div class="video">
<div class="metadata" id="s9">
<div class="title" id="s10">
<p>Video 18.3</p>
</div>
</div>
<h1 class="title">Video 18.3</h1>
<p>This is the Video for Chapter 18.3</p>
</div>
</div>
<div class="sect2" id="s11">
<h1 class="title">Section text here</h1>
<p>text text text.</p>
</div>
</div>
<!--div class="extend"/div class="check" should be here as last div of chapter-->
</div>
</test>
Schematron:
<pattern id="lastdiv">
<rule context="xhtml:div[@class='check']">
<assert test="(ancestor::xhtml:div[@class='chapter']/xhtml:div[@class='extend'])[last()]" role="error">This check (with <value-of select="@id"/>) should be the last extend div within a chapter.</assert>
</rule>
</pattern>
Однако, это не находит мой ожидаемый результат (должен выдать ошибку).