XML и XSL соединение - PullRequest
       12

XML и XSL соединение

1 голос
/ 02 мая 2010

У меня проблема между файлами XML и XSL. В файле XML есть некоторые элементы, такие как
*

Stud I
CMPE471
CMPE412
CMPE100



Стад II
CMPE471
CMPE412


<код курса курса = "CMPE471">
ИМЯ I
DESC I



ИМЯ II
DESC II



ИМЯ III
DESC III


В XSL-файле я хочу получить доступ к элементу «description», который я указал «courseCode».
Вывод должен быть таким,
1. Стад I
a. CMPE471 Des I
b. CMPE412 Desc II
c. CMPE100 Desc III

2. Стад II
a. CMPE471 Des I
b. CMPE412 Desc II


В XSL-файле я пытался что-то написать:




  1. // ПРОБЛЕМА
    // ПРОБЛЕМА
    </ XSL: для каждого-> // ПРОБЛЕМА

</ XSL: для каждого->
Спасибо.

1 Ответ

0 голосов
/ 02 мая 2010

См. Мое решение XSLT 1.0 и 2.0 ниже. Проблема в вашем коде:

<xsl:value-of select="description [@courseCode = text()]"/>

Это означает, что вы ищете элемент description, атрибут которого courseCode совпадает с его текстовым значением. Я сохраняю код курса в переменной и проверяю элементы course, атрибут которых такой же, как у этой переменной.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
  <xsl:output indent="yes" />

  <xsl:template match="/">
    <ol>
      <xsl:for-each select="/school/student">
        <xsl:sort data-type="text" order="ascending" select="name" />
        <li>
          <xsl:value-of select="name" />
          <ol type="a">
            <xsl:for-each select="takes">
              <xsl:sort data-type="text" select="." order="ascending" />
              <li>
                <xsl:variable name="coursecode" select="." />
                <xsl:value-of select="concat('(',.,') ')" />
                <xsl:for-each select="/school/course[@courseCode = $coursecode]">
                  <xsl:value-of select="description" />
                </xsl:for-each>

              </li>
            </xsl:for-each>
          </ol>
        </li>
      </xsl:for-each>
    </ol>
  </xsl:template>
</xsl:stylesheet> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...