0

I use this compare script . The script doesn't support NULL values in fields. To generate the first XML I use now "FOR XML AUTO, ELEMENTS XSINIL"

<cd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <typ>new</typ>
  <Field1>505</Field1>
  <Field2 xsi:nil="true" />
  <Field3>15</Field3>
  <Field4>FA        </Field4>
  <Field5>0</Field5>
  <Field6 xsi:nil="true" />
  <Field7 xsi:nil="true" />
  <Field8>10</Field8>
  <Field9>3</Field9>
  <Field10>2</Field10>
...
</cd>

Now this part doesn't work anymore

declare namespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
for $f in cd/@*         
return         
      <data  name="{ local-name($f) }" value="{ data($f) }" /> 

Output is always empty.

Expected output

<data name="typ" value="new" />
<data name="Field1" value="505" />
<data name="Field2" value="NULL" />
<data name="Field3" value="15" />
<data name="Field4" value="FA        " />
<data name="Field5" value="0" />
<data name="Field6" value="NULL" />
<data name="Field7" value="NULL" />
<data name="Field8" value="10" />
<data name="Field9" value="3" />
<data name="Field10" value="2" />
...

Where is my error in the XQuery? Thank you!

Angelus
  • 1
  • 1

1 Answers1

0

If you have an XML with elements, you need to use /* rather than /@*:

declare namespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
for $f in cd/*         
return         
      <data  name="{ local-name($f) }" value="{ data($f) }" /> 
BeniBela
  • 16,412
  • 4
  • 45
  • 52