
HI Wendell, Thank you very much. Works like a charm. Regards, Frank ------------------------------------------------------------------------ Am 22.02.2023 um 14:22 schrieb Wendell Piez:
Frank,
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.
This means we can pre-empt the application of rules by writing other rules.
For example:
<sch:pattern id="Check_LI">
<sch:rule context="*[exists(@conref)]//li | li[exists(@conref)]"/> <sch:rule context="li"> <sch:assert test="exists(*)">li must have children</sch:assert> </sch:rule>
</sch:pattern>
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.
Try it and see how it goes --
Cheers, Wendell
------------------------------------------------------------------------ On Wed, Feb 22, 2023 at 7:35 AM Frank Dissinger <frank.dissinger@cgs-oris.com> wrote:
Hi all,
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.
I have defined two separate rules...
<sch:pattern id="Check_LI2"> <sch:rule context="*li[not(@conkeyref)]*"> <sch:assert test="*">List does not contain any child elements</sch:assert> </sch:rule> </sch:pattern>
<sch:pattern id="Check_LI3"> <sch:rule context="*li[not(parent::*[@conkeyref])]*"> <sch:assert test="*">List does not contain any child elements</sch:assert> </sch:rule>
</sch:pattern>
... but I think I need to combine them into a single rule with an OR or AND operator.
<sch:pattern id="Check_LI3"> <sch:rule context="*li[not(@conkeyref)]* *OR **li[not(parent::*[@conkeyref])] *"> <sch:assert test="*">List does not contain any child elements</sch:assert> </sch:rule>
</sch:pattern>
However, this syntax is invalid. Can somebody help me?
Regards,
Frank
--
*Frank Dissinger*
Documentation Manager
....................................................................
*CGS Publishing Technologies International GmbH*
*Email *frank.dissinger@cgs-oris.com | *Web* www.cgs-oris.com <http://www.cgs-oris.com/>
*Address* Kettelerstr. 24 | D-63512 Hainburg | Germany
*Phone* +49 6182 9626-27 | *Fax* +49 6182 9626-99
*Commercial register* Offenbach, HRB no. 21495
*Managing directors* Bernd Rückert, Christoph Thommessen
https://www.cgs-oris.com/Signatur.png <https://www.cgs-oris.com/signatur>