Как добавить условие, которое проверяет данные XML с помощью таблицы поиска - PullRequest
0 голосов
/ 01 августа 2011

Я хочу спросить. Есть ли возможность добавить условие, которое будет проверять данные XML с помощью таблицы поиска, и, если у нас не было значения в таблице поиска, добавить const 8 к выводу? xslt код:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="Department" match="Department" use="../Collection"/>
    <xsl:template match="/">
    <document>
        <xsl:apply-templates/>
    </document>
</xsl:template>
 <xsl:template match="line">
     <xsl:variable name="inputDep" select="field[@id='3']"/>
<Department>
    <xsl:for-each select="document('lookup.xml')">
        <xsl:for-each select="key('Deparment',$inputDep)">
            <xsl:value-of select="."/>
        </xsl:for-each>
    </xsl:for-each>
</Department>

 </xsl:template>

</xsl:stylesheet>

справочная таблица:

<document>
    <line-item>
        <Collection>1</Collection>
        <Department>3</Department>
    </line-item>
    <line-item>
        <Collection>2</Collection>
        <Department>1</Department>
    </line-item>
    <line-item>
        <Collection>3</Collection>
        <Department>2</Department>
    </line-item>
</document>

XML-файл:

<document>
    <line id="0">
        <field id="3"><![CDATA[1]]></field>
    </line>
    <line id="1">
        <field id="3"/>
    </line>
    <line id="2">
        <field id="3"/><![CDATA[4]]></field>
    </line>
</document>

результат:

<Department>3<Department>
<Department>8<Department>
<Department>8<Department>

1 Ответ

1 голос
/ 01 августа 2011

Вы можете присвоить искомое значение переменной и выбрать, что выводить в зависимости от того, было ли что-либо найдено.

Редактировать 2: Полная демонстрационная таблица стилей:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:key name="Department" match="Department" use="../Collection"/>

  <xsl:template match="/">
    <document>
      <xsl:apply-templates/>
    </document>
  </xsl:template>

  <xsl:template match="line">
    <xsl:variable name="inputDep" select="field[@id='3']"/>
    <Department>
      <xsl:for-each select="document('lookup.xml')">
        <xsl:variable name="value" select="key('Department',$inputDep)"/>
        <xsl:choose>
          <xsl:when test="$value">
            <xsl:value-of select="$value"/> <!-- see note -->
          </xsl:when>
          <xsl:otherwise>8</xsl:otherwise>
        </xsl:choose>
      </xsl:for-each>
    </Department>
  </xsl:template>

</xsl:stylesheet>

Примечание. Замените цикл xsl:for-each в исходной таблице стилей на простой xsl:value-of, предполагая, что зацикливание значений не было преднамеренным. Если это действительно так, вы можете заменить это циклом for-each.

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