2015-06-26 5 views
0

Я пытаюсь выяснить, как сделать что-то похожее на `, если существует (узел)Как сравнить атрибут узла от узла

У меня есть следующие X и XLS I'm tryingto сравнить, если доступные флаги @ идентификатор существует в контакт/биографических/флаги

<availableflags> 
     <flag id="happy">Happy</flag> 
     <flag id="curious">Curious</flag> 
     <flag id="busy">Busy</flag> 
     <flag id="expert">Expert</flag> 
     <flag id="client">Client</flag> 
     <flag id="manager">Manager</flag> 
    </availableflags> 

<contact> 

     <biographical> 
      <age>33</age> 
      <flags> 
       <flag>happy</flag> 
       <flag>expert</flag> 
      </flags> 
     </biographical> 
     <contact> 

XLS

<xsl:if test="@id=contact/biographical/flags/@flag"> 
     <input type="checkbox" checked="checked"> <xsl:text>{contact/biographical/flags/@flag}</xsl:text> 
    </input> 

      </xsl:if> 

Я пробовал разные варианты, если заявление, б не повезло. Я надеялся, что кто-то может быть таким добрым и помочь мне. Thanks

ответ

1

Если ваш текущий контекст является элементом flag, вам необходимо немного перейти по дереву, чтобы достичь элемента contact. Также flag в контактной секции является элементом, а не атрибут

<xsl:if test="@id=../../contact/biographical/flags/flag"> 
    <input type="checkbox" checked="checked"> 
    <xsl:value-of select="." /> 
    </input> 
</xsl:if> 

Но в более общем плане, похоже, что вы пытаетесь оказать флажков для каждого доступного флага, с только выбранные проверены. В этом случае было бы легче сделать только атрибут условным, а не весь элемент:

<input type="checkbox"> 
    <xsl:if test="@id=../../contact/biographical/flags/flag"> 
    <xsl:attribute name="checked">checked</xsl:attribute> 
    </xsl:if> 
    <xsl:value-of select="." /> 
</input> 
Смежные вопросы