Querying XML Nodes with SQL I think I'm nearly there with this but have reached an impasse!

I've a relatively straightforward XML structure that I need to parse out as a SQL resultset but can't seem to get it to work.

Here is the code:

DECLARE @xml XML;
SET @xml = '
&lt;values&gt;
    &lt;Nationality&gt;
        &lt;item&gt;
            &lt;key&gt;UK&lt;/key&gt;
            &lt;value&gt;def&lt;/value&gt;
        &lt;/item&gt;
        &lt;item&gt;
            &lt;key&gt;IE&lt;/key&gt;
            &lt;value&gt;def&lt;/value&gt;
        &lt;/item&gt;
    &lt;/Nationality&gt;
    &lt;Currency&gt;
        &lt;item&gt;
            &lt;key&gt;GBP&lt;/key&gt;
            &lt;value&gt;123&lt;/value&gt;
        &lt;/item&gt;
        &lt;item&gt;
            &lt;key&gt;EUR&lt;/key&gt;
            &lt;value&gt;345&lt;/value&gt;
        &lt;/item&gt;
    &lt;/Currency&gt;
&lt;/values&gt;';

select I.X.value('(/key/text())[1]', 'int') as ItemID,
       I.X.value('(/value/text())[1]', 'int') as Store
from @XML.nodes('/values/Nationality') as O(X)
cross apply O.X.nodes('/item') as I(X);


Essentially, I want to pull out the values from Nationality into:

Key  | Value
-------------
UK   | Def
IE   | Def


I may want to do Currency later but I think if I get the above cracked then the rest will be simple enough.

Can you help please?
Base on your input data, I will do something like this:

select I.X.value('(key/text())[1]', 'varchar(50)') as ItemID,
       I.X.value('(value/text())[1]', 'varchar(50)') as Store
from @XML.nodes('values/Nationality') as O(X)
  cross apply O.X.nodes('item') as I(X);


ouptput

ItemID  Store
UK  def
IE  def