Согласно моим комментариям, вы захотите выполнить XPath в форме выражения, например,
nNumberItemsABC = System.Convert.ToInt32(xpath(MsgName,"count(/*[local-name()='Document' and namespace-uri()='']/*[local-name()='Details' and namespace-uri()=''][Name='ABC']/*[local-name()='Name' and namespace-uri()=''])"));
nNumberItemsDEF = System.Convert.ToInt32(xpath(MsgName,"count(/*[local-name()='Document' and namespace-uri()='']/*[local-name()='Details' and namespace-uri()=''][Name='DEF']/*[local-name()='Name' and namespace-uri()=''])"));
nNumberItemsGHI = System.Convert.ToInt32(xpath(MsgName,"count(/*[local-name()='Document' and namespace-uri()='']/*[local-name()='Details' and namespace-uri()=''][Name='GHI']/*[local-name()='Name' and namespace-uri()=''])"));
, а затем иметь форму определения, которая проверяет, существуют ли обязательные (равные 1)