phax / ph-schematron

Java Schematron library that supports XSLT and native application
Apache License 2.0
116 stars 36 forks source link

Rule is fired even if context was matched by a previous rule #84

Open dmj opened 5 years ago

dmj commented 5 years ago

Using the following Schematron:

<sch:schema>
  <sch:pattern>
    <sch:rule context="element">
      <sch:assert test="true()"/>
    </sch:rule>
    <sch:rule context="*">
      <sch:assert test="false()"/>
    </sch:rule>
  </sch:pattern>
</sch:schema>

And the following document:

<?pi Processing instruction ?>
<element attribute="value">
  <!-- Comment -->
  <element>Text content</element>
</element>

I expect the second rule not to fire. But it does:

<?xml version="1.0" encoding="UTF-8"?>
<schematron-output xmlns="http://purl.oclc.org/dsdl/svrl">
  <active-pattern/>
  <fired-rule context="//element"/>
  <fired-rule context="//*"/>
  <failed-assert location="/element" test="false()">
    <text/>
  </failed-assert>
  <failed-assert location="/element/element" test="false()">
    <text/>
  </failed-assert>
</schematron-output>

This was discovered with running ph-schematron 5.2.0 against a in-progress schematron testsuite. The complete test results are shown here.

stale[bot] commented 5 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.