2016-02-22 4 views
0

XML документКак выбрать элемент, если он существует в XML-документе

<Case> 
    <CaseParty> 
    <Address> 
     <AddressLine1>Testing</AddressLine1> 
    </Address> 
    </CaseParty> 
</Case> 

Проблема заключается в том, что иногда <AddressLine1>Testing</AddressLine1> элемент не найден в указанном выше пути. Вместо этого он находится по следующему пути

<Party> 
    <Address> 
    <AddressLine1>Testing</AddressLine1> 
    </Address> 
</Party> 

Я хотел бы показать <AddressLine1>Testing</AddressLine1>

Если элемент не найден в <CaseParty> адрес я хотел бы использовать следующий путь <Address/AddressLine1>

Как я это делаю?

Мой код XSLT работает только тогда, когда элемент addressLine1 находится в Party/Address/AddressLine1, но не тогда, когда элемент находится только под Case/CaseParty/Address/AddressLine1

<Address> 
    <xsl:value-of select="AddressLine1"/> 
</Address> 
+0

Вы забыли объяснить, в чем проблема. – Tomalak

+3

Сложно ответить, не зная, что такое контекст. Добавьте [Минимальный, Полный и Подтверждаемый Пример] (http://stackoverflow.com/help/mcve). –

ответ

0

Вы можете использовать условное выражение.

<Address> 
    <xsl:choose> 
     <xsl:when test="/Case/CaseParty/Address/AddressLine1"> 
      <xsl:value-of select="/Case/CaseParty/Address/AddressLine1"/> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:value-of select="/Party/Address/AddressLine1"> 
     </xsl:otherwise> 
    </xsl:choose> 
</Address> 

выбрать блок сначала проверяет addressLine1 существует в /Case/CaseParty/Адрес/addressLine1, и если он делает его выбирает. В противном случае он выбирает его из другого пути.

Смежные вопросы