But now you are thinking in procedural terms instead of in a declarative
way.
On 12/23/2016 3:53 PM, Costello, Roger L. wrote:
> Hi Folks,
>
> *Problem*: There are N nodes. Create an XML instance so that the nodes
> form a ring (cyclic) topology.
>
> Rick Jelliffe solved this problem very elegantly [1].
>
> Here’s Rick’s solution: Arrange the nodes in document order:
>
> <Nodes>
> <Nodeid="N1">...</Node>
> <Nodeid="N2">...</Node>
> ...
> <Nodeid="Nn">...</Node>
> </Nodes>
>
> “How does that form a ring topology?” you ask. It doesn’t. Not yet. You
> need to define an operator on the nodes and give the operator the
> desired behavior (semantics). Allow me to explain.
>
> To traverse from one <Node> element to the next, you _must_ perform an
> operation. If you are moving from <Node> to <Node> using your eyes, then
> the operator is “physically move your eyes downward (or upward).” If you
> are moving from <Node> to <Node> using XPath, then the operator is
> following-sibling (or preceding-sibling). Regardless of the technology,
> some operator must be used to move from one <Node> element to the next.
> Let’s generically denote that operator by /succ/. To achieve our ring
> topology goal, then, we need to imbue the /succ/ operator with this
> semantic:
>
> The /succ/ of a <Node> is the next node in document order
> except when <Node> is the last node, then the /succ/ is the
> first node.
>
> Now the nodes take on a ring topology, by way of the /succ/ operator.
>
> Awesome! Thanks Rick!
>
> **
>
> *Lesson Learned*: XML has no semantics. When we define operators on the
> XML and imbue specific behaviors on the operators, only then we may
> _informally_ treat the XML as having semantics.
>
> Comments?
>
> /Roger
>
> [1]
> http://xml-dev.markmail.org/message/b3n774tmzqfe5k4d?q=Notable+declarative+expressions%3F+date:201612
>
>