<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>HI Wendell,</p>
<p><br>
</p>
<p>Thank you very much. Works like a charm.</p>
<p><br>
</p>
<p>Regards,</p>
<p><br>
</p>
<p>Frank<br>
<br>
</p>
<div class="moz-cite-prefix">
<hr width="100%" size="2">Am 22.02.2023 um 14:22 schrieb Wendell
Piez:<br>
</div>
<blockquote type="cite"
cite="mid:CAAO_-xw2Czae1DLZhCtgm3aPdzOE6bSpUT+gUsu_txhNJO+8fA@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div>Frank,</div>
<div><br>
</div>
<div>There is an interesting feature of Schematron's design
useful in a case like yours, namely that within a pattern,
only one rule may apply to any element, and the first rule
wins.</div>
<div><br>
</div>
<div>This means we can pre-empt the application of rules by
writing other rules.</div>
<div><br>
</div>
<div>For example:</div>
<div><br>
</div>
<div> <sch:pattern id="Check_LI"></div>
<div><br>
</div>
<div> <sch:rule context="*[exists(@conref)]//li |
li[exists(@conref)]"/><br>
</div>
<div> <sch:rule context="li"></div>
<div> <sch:assert test="exists(*)">li must have
children</sch:assert></div>
<div> </sch:rule><br>
</div>
<div>
<p></sch:pattern></p>
</div>
<div>The second rule says "an li must have children". The first
rule intervenes for li elements that have @conref or an
ancestor with @conref - it does no checking so it is silent.</div>
<div><br>
</div>
<div>Try it and see how it goes --</div>
<div><br>
</div>
<div>Cheers, Wendell</div>
<div><br>
</div>
<div><br>
</div>
</div>
<hr width="100%" size="2">On Wed, Feb 22, 2023 at 7:35 AM Frank
Dissinger <<a href="mailto:frank.dissinger@cgs-oris.com"
moz-do-not-send="true" class="moz-txt-link-freetext">frank.dissinger@cgs-oris.com</a>>
wrote:<br>
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div class="moz-signature">
<p>Hi all,</p>
<p><br>
</p>
<p>I need a Schemtron rule which indicates an error when
<li> elements do not have any child elements. No
error schould be indicated for <li> elements with an
"conkeyref" attribute and also for <li> elements
which are children of any element with a "conkeyref"
attribute.</p>
<p><br>
</p>
<p>I have defined two separate rules...<br>
</p>
<p><br>
</p>
<sch:pattern id="Check_LI2"><br>
<sch:rule context="<b>li[not(@conkeyref)]</b>"><br>
<sch:assert test="*">List does not contain any
child elements</sch:assert><br>
</sch:rule><br>
</sch:pattern><br>
<br>
<sch:pattern id="Check_LI3"><br>
<sch:rule context="<b>li[not(parent::*[@conkeyref])]</b>"><br>
<sch:assert test="*">List does not contain any
child elements</sch:assert><br>
</sch:rule><br>
<p> </sch:pattern></p>
<p><br>
</p>
<p>... but I think I need to combine them into a single rule
with an OR or AND operator.</p>
<p><br>
</p>
<p> <sch:pattern id="Check_LI3"><br>
<sch:rule context="<b>li[not(@conkeyref)]</b> <b><font
color="#ff0000">OR </font></b><b>li[not(parent::*[@conkeyref])]
</b>"><br>
<sch:assert test="*">List does not contain any
child elements</sch:assert><br>
</sch:rule><br>
</p>
<p> </sch:pattern></p>
<p><br>
</p>
<p>However, this syntax is invalid. Can somebody help me?</p>
<p><br>
</p>
<p>Regards,</p>
<p>Frank<br>
</p>
-- <br>
<meta http-equiv="content-type" content="text/html;
charset=UTF-8">
<title></title>
<div class="moz-signature">
<style>
div.signature {font-family: Verdana, sans-serif; font-size: 10pt; color: #7F8C8D; padding-top: 0.4em;}
div.name {padding-bottom: 0.8em; padding-top: 0.8em}
div.contact {padding-bottom: 0.8em;}
p {margin: 0;}
span.separator {border-top-style: dotted; border-top-width: 2px; padding-top: 0.6em;}
a {color: inherit}
</style>
<div class="signature">
<div class="name">
<p><strong>Frank Dissinger</strong></p>
<p>Documentation Manager</p>
<p>....................................................................</p>
</div>
<div class="contact">
<p><strong>CGS Publishing Technologies International
GmbH</strong></p>
<p><strong>Email </strong><a
href="mailto:frank.dissinger@cgs-oris.com"
target="_blank" class="moz-txt-link-freetext">frank.dissinger@cgs-oris.com</a>
| <strong>Web</strong> <a
href="http://www.cgs-oris.com/" target="_blank">www.cgs-oris.com</a></p>
<p><strong>Address</strong> Kettelerstr. 24 | D-63512
Hainburg | Germany</p>
<p><strong>Phone</strong> +49 6182 9626-27 | <strong>Fax</strong>
+49 6182 9626-99</p>
<p><strong>Commercial register</strong> Offenbach, HRB
no. 21495</p>
<p><strong>Managing directors</strong> Bernd Rückert,
Christoph Thommessen</p>
<p><br>
</p>
<a href="https://www.cgs-oris.com/signatur"><img
alt="https://www.cgs-oris.com/Signatur.png"
longdesc="https://www.cgs-oris.com/signatur"
src="https://www.cgs-oris.com/Signatur.png"
width="394" height="200"></a> </div>
</div>
</div>
</div>
</blockquote>
</div>
</blockquote>
</body>
</html>