Как определить с помощью xsl, существует ли узел в моем xml?

#xml #xslt

#xml #xslt

Вопрос:

У меня есть этот xml

 <game>
 <genre>
  <action>...</action>
  <racing>...</racing>
 <price>
..
..
 </price>
</genre>
</game>
  

Я хочу проверить, присутствует ли узел price в xml с помощью xsl. как я могу это сделать? если присутствует узел с ценой, то вызовите определенный, template иначе вызовите другой template

Ответ №1:

Вы могли бы просто вызвать xsl:apply-templates с атрибутом match, установленным для имени элемента. Если элемент существует, вызывается шаблон. Если он не существует, шаблон вызываться не будет. Если вы пытаетесь создать оператор if-else, вы могли бы проверить его существование следующим образом

 <xsl:choose>
    <xsl:when test="boolean(price)">
        <!-- do something -->
    </xsl:when>
    <xsl:otherwise>
        <!-- do something else -->
    </xsl:otherwise>
</xsl:choose>
  

Таким образом, вы можете проверить наличие элемента и отреагировать соответствующим образом.

Комментарии:

1.Некоторые документы по этому поводу:w3.org/TR/xpath-functions/#func-boolean msdn.microsoft.com/en-us/library/ms256159.aspx