XPath: по умолчанию «Node A», вместо этого выберите «Node B», если «Node B» не пустой

Мне нужно создать выражение XPath, которое делает следующее:

Returns the element inside of 'NodeA' by default Returns the element inside of 'NodeB' if it is not empty.

Вот некоторый пример XML, чтобы моя целевая структура была ясно видна (я использую MS InfoPath):

<?xml version="1.0" encoding="UTF-8"?><?mso-infoPathSolution solutionVersion="1.0.0.10" productVersion="14.0.0" PIVersion="1.0.0.0" href="file:///C:\Documents%20and%20Settings\Chris\Local%20Settings\Application%20Data\Microsoft\InfoPath\Designer3\9016384cab6148f6\manifest.xsf" ?><?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.3"?>
<my:myFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-09-07T14:19:10" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="en-us">
<my:NodeASection>
    <my:NodeA>2012-09-13</my:NodeA>
</my:NodeASection>
    <my:NodeBSection>
        <my:NodeBGroup>
            <my:NodeB>2012-09-14</my:NodeB>
        </my:NodeBGroup>
    </my:NodeBSection>
</my:myFields>

Это выражение XPath можно использовать для оценки NodeB на наличие текста:boolean(//my:NodeB[(text())])

Я слышал о «методе Беккера» но я не уверен, как это применимо, когда существуют оба узла. Я & APOS; мvery новичок в XPath и ценим любую помощь, которая может быть предложена.

Ответы на вопрос(3)

Ваш ответ на вопрос