I am (still) trying to get sane data from a rest webservice, it is
formatted in xml.

querying the webservice at http://api.kle-online.dk/resources/
hovedgrupper, I get this XDS (shortened here for convenience):

<nds dtdversion="3.5" ndsversion="8.x">
<source>
<product build="20150722_0750" instance="Rest Driver"
version="1.0.0.0">Identity Manager REST Driver</product>
<contact>NetIQ Corporation.</contact>
</source>
<input>
<driver-operation-data class-name="hovedgrupper" command="poll" event-
id="Rest Driver##1161024105328##0">
<response>
<value>&lt;?xml version="1.0" encoding="UTF-8"?>&lt;hg:KLE-
Hovedgrupper xmlns:hg="http://www.kle-online.dk/rest/resources/hovedgruppe/
liste" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:schemaLocation="http://www.kle-online.dk/
rest/resources/hovedgruppe/liste http://skemaer.kle-online.dk/rest/KLE-
REST-Hovedgrupper-liste-
version-1-1.xsd">
&lt;hg:Hovedgruppe ref="http://api.kle-online.dk/hovedgruppe/00">
&lt;HovedgruppeNr>00&lt;/HovedgruppeNr>
&lt;HovedgruppeTitel>Kommunens styrelse&lt;/HovedgruppeTitel> &lt;/
hg:Hovedgruppe> &lt;hg:Hovedgruppe ref="http://api.kle-online.dk/
hovedgruppe/01"> &lt;HovedgruppeNr>01&lt;/HovedgruppeNr>
&lt;HovedgruppeTitel>Fysisk planlægning og naturbeskyttelse&lt;/
HovedgruppeTitel> &lt;/hg:Hovedgruppe> &lt;hg:Hovedgruppe
ref="http://api.kle-online.dk/hovedgruppe/02">
&lt;HovedgruppeNr>02&lt;/HovedgruppeNr>
&lt;HovedgruppeTitel>Byggeri&lt;/HovedgruppeTitel> &lt;/
hg:Hovedgruppe> &lt;/hg:KLE-Hovedgrupper></value>
</response>
</driver-operation-data>
</input>
</nds>

The XML in the response originally looked like this:

<?xml version="1.0" encoding="UTF-8"?>
<hg:KLE-Hovedgrupper xmlns:hg="http://www.kle-online.dk/rest/resources/
hovedgruppe/liste"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.kle-online.dk/rest/
resources/hovedgruppe/liste http://skemaer.kle-online.dk/rest/KLE-REST-
Hovedgrupper-liste-version-1-1.xsd">








<hg:Hovedgruppe ref="http://api.kle-online.dk/
hovedgruppe/00">
<HovedgruppeNr>00</HovedgruppeNr>
<HovedgruppeTitel>Kommunens styrelse</HovedgruppeTitel>
</hg:Hovedgruppe>
<hg:Hovedgruppe ref="http://api.kle-online.dk/
hovedgruppe/01">
<HovedgruppeNr>01</HovedgruppeNr>
<HovedgruppeTitel>Fysisk planlægning og naturbeskyttelse</
HovedgruppeTitel>
</hg:Hovedgruppe>
<hg:Hovedgruppe ref="http://api.kle-online.dk/
hovedgruppe/02">
<HovedgruppeNr>02</HovedgruppeNr>
<HovedgruppeTitel>Byggeri</HovedgruppeTitel>
</hg:Hovedgruppe>

</hg:KLE-Hovedgrupper>

I was recently pointed to the fact, that since we have namespace
definitions in the xml I need that as well in the policy, if I want to
process it, so I defined the namespace "hg"

Now I convert the XML to a local variable

I check for a "poll"
<if-xml-attr mode="nocase" name="command" op="equal">poll</if-xml-attr>


If it is indeed a poll, I check if there is anything in the value of the
response

<if-xpath op="true">string-length(./response/value/text())>0</if-xpath>

If so, I set the local variable xmlInput to the xml in the response:

<do-set-local-variable name="xmlInput" scope="policy">
<arg-string>
<token-xpath expression="."/>
</arg-string>
</do-set-local-variable>

The resulting variable is something like this:

Token Value: "<?xml version="1.0" encoding="UTF-8"?><hg:KLE-Hovedgrupper
xmlns:hg="http://www.kle-online.dk/rest/resources/hovedgruppe/
liste" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:schemaLocation="http://www.kle-online.dk/
rest/resources/hovedgruppe/liste http://skemaer.kle-online.dk/rest/KLE-
REST-Hovedgrupper-liste-
version-1-1.xsd">
<hg:Hovedgruppe ref="http://api.kle-online.dk/hovedgruppe/00">
<HovedgruppeNr>00</HovedgruppeNr> <HovedgruppeTitel>Kommunens
styrelse</HovedgruppeTitel> </hg:Hovedgruppe> <hg:Hovedgruppe
ref="http://api.kle-online.dk/hovedgruppe/01"> <HovedgruppeNr>01</
HovedgruppeNr> <HovedgruppeTitel>Fysisk planlægning og
naturbeskyttelse</HovedgruppeTitel> </hg:Hovedgruppe>
<hg:Hovedgruppe ref="http://api.kle-online.dk/hovedgruppe/02">
<HovedgruppeNr>02</HovedgruppeNr> <HovedgruppeTitel>Byggeri</
HovedgruppeTitel> </hg:Hovedgruppe> </hg:KLE-Hovedgrupper>".

Now the trouble begins. I believed, that since the xpath expression "."
worked to select the entire xml of the response text, I could just do:

<do-set-local-variable name="xmlInputParse" scope="policy">
<arg-node-set>
<token-xpath expression=".//HovedgruppeNr/text()"/>
</arg-node-set>
</do-set-local-variable>

This does not work.

If I use the xml parse verb, I just get all the strings in the document
into one sigle instance of my nodeset, that is not very useful.

Why do I fail so miserably? what is the correct approach to get this done
using dirxmlscript (and not xslt)?

-Nicolai