XSLT-преобразование с помощью встроенных операторов if - PullRequest
2 голосов
/ 17 ноября 2011

У меня есть некоторые XML-данные, которые я хочу преобразовать в HTML с помощью XSLT, и я в основном все понял правильно.Проблема с моим XML-вводом состоит в том, что он содержит встроенных операторов if / логических выражений , которые я не знаю, как обрабатывать.

<section>
  <title>My Title</title>
  <paragraph>
    <phrase class="inline-if">if_xVariable || if_yVariable</phrase>
    Show this text if if_xVariable or if_yVariable is true.
  </paragraph>
  <paragraph>
    <phrase class="inline-if">if_xVariable &amp;&amp; if_yVariable</phrase>
    Show this text if if_xVariable and if_yVariable is true
  </paragraph>
  <paragraph>
    Always show this text
  </paragraph>
</section>

Я думалдобавления xslt-vairables с каждым именем переменной (например, if_xVariable) к true / false и каким-то образом проверять их.

Как вы собираетесь решить эту проблему?

Обновление Это то, что я пробовал

<xsl:template match="section/paragraph">
  <xsl:variable name="inlineif" select="phrase[@class='inline-if']"/>
    <xsl:if test="$inlineif">
      <p>
      <xsl:value-of select="."/>
      </p>
    </xsl:if>
</xsl:template>

Поскольку у меня не указан ни if_xVariable, ни if_yVariable, вывод, вероятно, должен быть примерно таким:

<p>
Always show this text
</p>

но вместо этого я получаю вывод из всех абзацев.

Ответы [ 3 ]

0 голосов
/ 18 ноября 2011

это код в файле xsl

в теге

  <xsl:for-each select="persons/person">
  <xsl:if test="GenderElementType='combo'">
       <select name="gender">
      <option>
      <xsl:value-of select="Gender"/>
      </option>
      <xsl:if test="Gender='MALE'">
      <option>
       FEMALE
      </option>
      </xsl:if>
      <xsl:if test="Gender='FEMALE'">
      <option>
       MALE
      </option>
      </xsl:if>
      </select>
      </xsl:if>
 </xsl:for-each>

person.xml выглядит следующим образом

 <persons>
 <person>
        <Gender>MALE</Gender>
    <GenderElementType>radio</GenderElementType>


</person>

0 голосов
/ 06 декабря 2011

XSLT не имеет встроенной динамической оценки выражений.Возможные решения обсуждаются в ответе на этот вопрос .

0 голосов
/ 17 ноября 2011

вы можете использовать следующие

<xsl:if test="expression">
    ...some output if the expression is true...
 </xsl:if>

полный пример на http://www.w3schools.com/xsl/xsl_if.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...