xsl-list
[Top] [All Lists]

Re: [xsl] XPath expression to express: There must be an empty sequence

2017-11-19 13:48:04
Hello Roger,

I understand - taking your last question into account where you wanted to generate the sequences - that you want the XSLT rules to verify, if some set of sequences is a solution for the combinatorical problem:

For the set S with m elements list the n-tuples for n := [0, m]
(https://en.wikipedia.org/wiki/Permutation#Permutations_with_repetition)

The total number of "permutations with repetition" according to this requirement will be
sum(m^k) for k := 0 to m and m := count(element)

Hopefully the mathematical background helps you tackling the problem...

One straight solution based on this mathematical fact would be to check whether the are
"sum(m^k) for k := 0 to m and m := count(element)" different sequences.

Best regards
Christoph Naber


Am 19.11.2017 um 19:38 schrieb Costello, Roger L. costello(_at_)mitre(_dot_)org:
Hi Folks,

I have a set:

<set>
     <element>A</element>
     <element>B</element>
</set>

Here are some sequences derived from the set:

<sequences>
     <sequence/>
     <sequence>
         <item>A</item>
     </sequence>
     <sequence>
         <item>B</item>
     </sequence>
     <sequence>
         <item>A</item>
         <item>A</item>
     </sequence>
     <sequence>
         <item>A</item>
         <item>B</item>
     </sequence>
     <sequence>
         <item>B</item>
         <item>A</item>
     </sequence>
     <sequence>
         <item>B</item>
         <item>B</item>
     </sequence>
</sequences>

Notice that:
- there is an empty sequence
- there is a sequence corresponding to each element of the set
- and there are other sequences (that I'm not concerned with for now)

I want to create XPath expressions which express the rules that sequences must 
satisfy to be valid.

First rule: There must be an empty sequence. I expressed that rule with this 
XPath expression:

sequence[not(item)]

Assume that the root element, <sequences>, is the context node.

Is that the right way to express the rule? Is there a better XPath expression? By 
"better" I mean simpler, plainer, more transparent. I seek simplicity and 
clarity over efficiency and cleverness.

Second rule: There must be a singleton sequence corresponding to every element in the set. A 
"singleton sequence" is a <sequence> containing one <item>.

I expressed that rule with this XPath expression:

every $element in $set//element satisfies exists(sequence[(item = $element) and 
not(item[2])])

Assume that $set is a variable whose value is the set.

Is that the right way to express the rule? Is there a better XPath expression?

/Roger

--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>