基本的XSLT示例

Eva*_*van 2 xml xslt

我刚刚开始使用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>
Run Code Online (Sandbox Code Playgroud)

或者像(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>
Run Code Online (Sandbox Code Playgroud)

我如何生成一个可以将上述示例转换为(A)的XSL文件:

<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>
Run Code Online (Sandbox Code Playgroud)

或(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>
Run Code Online (Sandbox Code Playgroud)

谢谢!

and*_*n22 5

<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>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这让我很清楚,非常感谢!(对于像我这样的任何剪辑n的一个小注释,@ title应该是@Title与上面的例子) (2认同)