Subject: Re: [xsl] Compare logical expressions with XPath/XSLT From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 7 Mar 2019 16:11:08 -0000 |
I'm a bit confused by the sentence { A OR C } is not a subset of { (!A OR !B) AND !C } because intuitively these expressions are boolean predicates, not sets. Perhaps I should be reading "X is not a subset of Y" as "Y implies not X"? Is this the same as (or closely related to) the boolean satisfiability problem https://en.wikipedia.org/wiki/Boolean_satisfiability_problem ? Would it be a good idea to focus on finding an algorithm first, and then thinking about how to code it in XPath? Michael Kay Saxonica > On 7 Mar 2019, at 15:53, Michael MC<ller-Hillebrand mmh@xxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > Hi, > > I have a problem at hand that (I think) I understood on the whiteboard, but have no initial idea how to best tackle this using our beloved tools (currently limited to XSLT/XPath 2). > > We have larger objects (documents) and many child objects (chapters), and both can have a property, let's call it "Project Name". The task is to find conflicts between the document's and the chapter's project setting. Behind each project name there is a configurable boolean expression using AND, OR and NOT, which defines whether two projects may match or not. > > The definition of project names looks like this (with required="false" describing the NOT logic): > > <defs> > <def name="project-1"> > <set> > <AND> > <OR> > <item required="false">A</item> > <item required="false">B</item> > </OR> > <item required="false">C</item> > </AND> > </set> > </def> > <def name="project-2"> > <set> > <OR> > <item required="true">A</item> > <item required="true">C</item> > </OR> > </set> > </def> > <def name="project-3"> > <set> > <item required="false">C</item> > </set> > </def> > </defs> > > If the document uses "project-1", a chapter with "project-2" would be in conflict with project-1, because { A OR C } is not a subset of { (!A OR !B) AND !C }. > > A chapter with "project-3" would be okay, because { !C } is a subset of { (!A OR !B) AND !C }. > > I simply hope for some pointers to similar problems. > > Thanks a lot for your time, > > - Michael MC<ller-Hillebrand
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Compare logical expressions w, Michael Müller-Hille | Thread | Re: [xsl] Compare logical expressio, Michael Müller-Hille |
[xsl] Xsl stylesheet version =1 wit, Vasu Chakkera vasucv | Date | Re: [xsl] XSLT repetition construct, Dimitre Novatchev dn |
Month |