XML 和 XSL 连接

Posted

技术标签:

【中文标题】XML 和 XSL 连接【英文标题】:XML and XSL connection 【发布时间】:2011-02-14 18:13:42 【问题描述】:

XML 和 XSL 文件之间存在问题。在 XML 文件中,有一些元素,如 *Stud ICMPE471CMPE412CMPE100螺柱 IICMPE471CMPE412我的名字 DESC I NAME II DESC II NAME III DESC III 在 XSL 文件中,我想到达我指定“courseCode”的“description”元素。输出应该是这样的, 1. Stud我     一个。 CMPE471 描述 I      b. CMPE412 描述 II     c. CMPE100 描述 III2.螺柱 II      a. CMPE471 描述 I     b. CMPE412 描述 II

在 XSL 文件中,我尝试写一些东西:

      //问题//问题//问题

谢谢。

【问题讨论】:

你应该缩进你的代码,让它看起来像代码。此外,结束 标记丢失。 【参考方案1】:

请参阅下面的 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> 

【讨论】:

我试过你的代码,但描述已经没有出现。只是课程代码和(课程代码)出现了。 =>CMPE352 (CMPE351)

以上是关于XML 和 XSL 连接的主要内容,如果未能解决你的问题,请参考以下文章

与 Xsl 连接

通过标签值连接来自不同节点的数据

WEB安全——XML注入

链接 XSL 和 XML?`

XML 和 XSL 中的前缀命名空间处理由 XML 解析器返回错误

xml用xsl实现分类排版的问题