[oXygen-user] Schematron rule

Wendell Piez wapiez at wendellpiez.com
Wed Feb 22 07:22:03 CST 2023


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 at 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 at cgs-oris.com | *Web* 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
>
>
> [image: https://www.cgs-oris.com/Signatur.png]
> <https://www.cgs-oris.com/signatur>
> _______________________________________________
> oXygen-user mailing list
> oXygen-user at oxygenxml.com
> https://www.oxygenxml.com/mailman/listinfo/oxygen-user
>


-- 
...Wendell Piez... ...wendell -at- nist -dot- gov...
...wendellpiez.com... ...pellucidliterature.org... ...pausepress.org...
...github.com/wendellpiez... ...gitlab.coko.foundation/wendell...
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.oxygenxml.com/pipermail/oxygen-user/attachments/20230222/cf82c745/attachment.htm>


More information about the oXygen-user mailing list