Take into account that [position()=1] is equivalent to [1] in XPath. In fact, another thing worth noticing is that if you can assure unique atCodes you only need to put last one. Using both XPath look like this
/cluster[@archetype_id='openEHR-EHR-CLUSTER.bert.v1']/items[@archetype_node_id='at0008']/value[1]/value=Jan /cluster[@archetype_id='openEHR-EHR-CLUSTER.bert.v1']/items[@archetype_node_id='at0008']/value[2]/value=Peter /cluster[@archetype_id='openEHR-EHR-CLUSTER.bert.v1']/items[@archetype_node_id='at0009']/value/value=Balkenende By the way, I see these like an argument for using atCodes in all object nodes. I don't think anyone would argue that using atCodes is less clear than using [1],[2], and [3] (being [3] in a completely different branch) 2013/11/20 Bert Verhees <bert.verhees at rosa.nl>: > Hi, > > The idea below was by Leo Simons in a private discussion, I mention also my > remarks on it, to ask your opinions on this > > If we would have produced this XML from a dataset: > > <?xml version="1.0" encoding="UTF-8"?> > <cluster xmlns="http://schemas.openehr.org/v1" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://schemas.openehr.org/v1 file:Structure.xsd" > archetype_node_id="openEHR-EHR-CLUSTER.bert.v1"> > <items archetype_node_id="at0008"> > <value> > <value xsi:type="DV_TEXT">Jan</value> > > </value> > </items> > <items xsi:type="ELEMENT" archetype_node_id="at0008"> > <value xsi:type="DV_TEXT"> > <value>Peter</value> > </value> > </items> > <items xsi:type="ELEMENT" archetype_node_id="at0009"> > <value xsi:type="DV_TEXT"> > <value>Balkenende</value> > </value> > </items> > </cluster> > > The XPaths would look like: > > /cluster[@archetype_id='openEHR-EHR-CLUSTER.bert.v1' and > @archetype_node_id='at0007']/items[position()=1 and > @archetype_node_id='at0008']/value/value=Jan > /cluster[@archetype_id='openEHR-EHR-CLUSTER.bert.v1' and > @archetype_node_id='at0007']/items[position()=2 and > @archetype_node_id='at0008']/value/value=Peter > /cluster[@archetype_id='openEHR-EHR-CLUSTER.bert.v1' and > @archetype_node_id='at0007']/items[position()=3 and > @archetype_node_id='at0009']/value/value=Balkenende > > As you can see, I use the attribute archetype_id, which is not in the > specifications, but also I filed an JIRA for that > http://www.openehr.org/issues/browse/SPECPR-92 > > But apart from that > There are a few things that I don't like about this XPath notation for > non-query-purpose. > > First is the connecting operator "and" (in position()=1 and > @archetype_node_id='at0008'), it is meaningless, because I am not defining a > logical condition. > The second thing is that items which are different (in archetype_node_id) > also gets an index-notation, following on the previous. (3 in this case) > > The problem is that the feel-weight (like we build up over the years) of > elements with a different archetype_node_id is that it is a completely > different element, although belonging to the same items-list in code. > In the OpenEHR culture, we tend to omit an index-notation, when the element > is unique because of its archetype_node_id, but I wonder, is that the right > thing to do? > > So I wonder, is X Path-compatibility the right answer to this? > > So, summarizing > three problems with xPath: > - the logical operator "and" while it is not a query > - the index still counting while different archetype_node_id > - there was one more, but it slipped from my mind, and I have to leave right > now in a hurry. > > Maybe not following xPath-like path-notation is a better idea? > > I will reply later to the other mails regarding this > > Thank you all very much > Bert > > > > > > > On 11/19/2013 10:23 PM, Thomas Beale wrote: > > On 19/11/2013 20:08, Bert Verhees wrote: > > Hi Alessandro, > > I think you propose this? > > /items[at0008,1]/value/value = Mark > /items[at0009,2]/value/value = Rutte > > > Either this or Bert's original (if it's legal Xpath) is correct, assuming > the data look something like (I just added the outer <cluster> bit and > header to make it work in a tool): > > <?xml version="1.0" encoding="UTF-8"?> > <cluster xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > archetype_node_id="openEHR-EHR-CLUSTER.bert.v1" > xmlns="http://schemas.openehr.org/v1"> > <items xsi:type="CLUSTER" archetype_node_id="at0007"> > <items xsi:type="ELEMENT" archetype_node_id="at0008"> > <value xsi:type="DV_TEXT"> > <value>Jan</value> > </value> > </items> > <items xsi:type="ELEMENT" archetype_node_id="at0008"> > <value xsi:type="DV_TEXT"> > <value>Peter</value> > </value> > </items> > <items xsi:type="ELEMENT" archetype_node_id="at0009"> > <value xsi:type="DV_TEXT"> > <value>Balkenende</value> > </value> > </items> > </items> > </cluster> > > I'm just messing around in Oxygen with some Xqueries and Xpaths. > > - thomas > > > > _______________________________________________ > openEHR-technical mailing list > openEHR-technical at lists.openehr.org > http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org > > > > _______________________________________________ > openEHR-technical mailing list > openEHR-technical at lists.openehr.org > http://lists.openehr.org/mailman/listinfo/openehr-technical_lists.openehr.org

