<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>