Базовый пример XSLT - PullRequest
       0

Базовый пример XSLT

2 голосов
/ 16 августа 2010

Я только начинаю использовать XSL для преобразования XML в HTML, и я прыгаю, чтобы получить помощь со следующим, чтобы помочь мне погрузиться.

Учитывая XML, как показано ниже (A):

<Course Title="SampleCourse">
  <Lesson Title="Overview"/>
  <Section Title="Section1">
    <Lesson Title="S1 Lesson 1" />
    <Lesson Title="S1 Lesson 2" />
  </Section>
  <Section Title="Sections 2">
    <Lesson Title="S2 Lesson 1" />
  </Section>
</Course>

Или как (B):

<Course Title="SampleCourse">
  <Section Title="Section1">
    <Lesson Title="S1 Lesson 1" />
    <Lesson Title="S1 Lesson 2" />
  </Section>
  <Section Title="Sections 2">
    <Lesson Title="S2 Lesson 1" />
  </Section>
</Course>

Как мне создать XSL-файл, который мог бы преобразовать приведенные выше примеры в (A):

<h3>SampleCourse</h3>
<ul>
  <li>Overview</li>
  <li>Section1</li>
  <ul>
    <li>S1 Lesson 1</li>
    <li>S1 Lesson 2</li>
  </ul>
  <li>Sections 2</li>
  <ul>
    <li>S1 Lesson 1</li>
  </ul>
</ul>

или(B):

<h3>SampleCourse</h3>
<ul>
  <li>Section1</li>
  <ul>
    <li>S1 Lesson 1</li>
    <li>S1 Lesson 2</li>
  </ul>
  <li>Sections 2</li>
  <ul>
    <li>S1 Lesson 1</li>
  </ul>
</ul>

Спасибо!

1 Ответ

5 голосов
/ 16 августа 2010
<xsl:template match="Course"> <!-- We use template to define what shows up when we encounter the element "Course" -->
    <h3><xsl:value-of select="@Title"/></h3> <!-- value-of is used here to grab the title. @ is for attribute. -->
    <ul>
        <xsl:apply-templates/> <!-- apply-templates continues parsing down the tree, looking for more template matches. -->
    </ul>
</xsl:template>

<xsl:template match="Section">
    <li><xsl:value-of select="@Title"/></li>
    <ul>
        <xsl:apply-templates/>
    </ul>
</xsl:template>

<xsl:template match="Lesson">
    <li><xsl:value-of select="@Title"/></li>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...