Michael, Wendell,
thanks for your responses.
The question was not on implementation but on demonstration.
What (apart from efficiency) is wrong with
//*[count(. | //*/*) != count(//*/*)]
Michael, thanks, this works perfect.
I have no idea what I did wrong before my email ...
$ echo "<a><b><c/></b><b><c/><c/></b></a>" | \
xpath++ "//*[count(. | //*/*) != count(//*/*)]" -
-------------------------------------------------------------------------------
<a><b><c/></b><b><c/><c/></b></a>
$
Mit besten Gruessen / Best wishes,
Hermann Stamm-Wilbrandt
Developer, XML Compiler, L3
Fixpack team lead
WebSphere DataPower SOA Appliances
https://www.ibm.com/developerworks/mydeveloperworks/blogs/HermannSW/
----------------------------------------------------------------------
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschaeftsfuehrung: Dirk Wittkopp
Sitz der Gesellschaft: Boeblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
From: Michael Kay <mike(_at_)saxonica(_dot_)com>
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Date: 03/24/2011 10:18 PM
Subject: Re: [xsl] Q: Kaysian set difference in pure XPath statement
On 24/03/2011 20:33, Hermann Stamm-Wilbrandt wrote:
Hello,
I saw a question on what "//*/*" means.
The answer is simple, all nodes beside the root element node.
This can be easily seen by this XPath expression:
$ echo "<a><b><c/></b><b><c/><c/></b></a>" | xpath++ "count(//*)-count
(//*/*)" -
1
$
Now I wanted to use Kaysian set difference method to output the
node in "//*" which is not in "//*/*", see 1a on this page:
http://www.xml.org//sites/www.xml.org/files/xslt_efficient_programming_techniques.pdf#page=3
But here two nodesets ($ns1, $ns2) are determined first before
determining
the set (asymmetric) difference as "$ns1[count(.|$ns2)!=count($ns2)]".
Is it possible to have that as pure XPath statement?
You're using "pure XPath" to mean "XPath 1.0", which seems a bit odd to
my ears....
The problem is to jump out of the scope of "//*[. ...]".
What (apart from efficiency) is wrong with
//*[count(. | //*/*) != count(//*/*)]
(Though it's not clear why you can't just write /*)
Michael Kay
Saxonica
This does not work correctly:
$ echo "<a><b><c/></b><b><c/><c/></b></a>" | xpath++ "//*[count(.|
ancestor-or-self::*//*/*)!=count(ancestor-or-self::*//*/*)]" -
-------------------------------------------------------------------------------
<a><b><c/></b><b><c/><c/></b></a>
-------------------------------------------------------------------------------
<b><c/></b>
-------------------------------------------------------------------------------
<b><c/><c/></b>
$
What is the correct XPath statement for "//* minus //*/*"?
[1]
https://www.ibm.com/developerworks/forums/thread.jspa?messageID=14511881#145
11881
Mit besten Gruessen / Best wishes,
Hermann Stamm-Wilbrandt
Developer, XML Compiler, L3
Fixpack team lead
WebSphere DataPower SOA Appliances
https://www.ibm.com/developerworks/mydeveloperworks/blogs/HermannSW/
----------------------------------------------------------------------
IBM Deutschland Research& Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschaeftsfuehrung: Dirk Wittkopp
Sitz der Gesellschaft: Boeblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or
e-mail:<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--