XSLT表未使用

时间:2011-05-15 05:44:59

标签: xml xslt xsd

非常接近XML,我开发了一个XML表,以及一个XSD架构,最后是一个XSLT表来显示内容。当我在Web浏览器中查看XML数据表(在visual studio中完成)时,它会说:

此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。

我尝试过不同的文件路径并且与标题混淆,但运气不好。

XML数据

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xslt" href="lecturelayout.xslt"?>
<university>
<lesson>
  <subject>Biology</subject>
  <maintopic name="Human Biology">
    <subtopic>Enlarge Hearts</subtopic>
    <subtopic>Heart Valves</subtopic>
  </maintopic>
  <content>
    <sentance>Very long sentance one</sentance>
    <sentance>Very long sentance two</sentance>
    <sentance>Very long sentance three</sentance>
  </content>
</lesson>

  <lesson>
    <subject>Chemistry</subject>
    <maintopic name="Periodic Table">
      <subtopic>Enlarge Hearts</subtopic>
      <subtopic>Heart Valves</subtopic>
    </maintopic>
    <content>
      <sentance>Very long sentance one</sentance>
      <sentance>Very long sentance two</sentance>
      <sentance>Very long sentance three</sentance>
    </content>
  </lesson>
</university>

XSLT表 - 注意可能不是100%正确,显然无法测试它:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="@* | node()">
      <html>
        <body>
          <h1>Professional Training Facilities</h1>
            <strong>University: </strong>
            <xsl:for-each select="university/lesson">          
            <xsl:value-of select="subject"/>
          <br/>
          <p>
            <strong>Main Topic: </strong>
            <xsl:value-of select="maintopic=name"/>
          </p>
          <br/>
          <p>
            <strong>Sub Topics: </strong>
            <xsl:for-each select="maintopic">
              <p>
                <xsl:value-of select="subtopic"/>
              </p>
            </xsl:for-each>
          </p>
          <p></p>
          <strong>Content:</strong>
          <xsl:for-each select="content">
            <p>
              <xsl:value-of select="sentance"/>
            </p>
          </xsl:for-each>
          </xsl:for-each> 
          <br/>
        </body>
      </html>
    </xsl:template>
</xsl:stylesheet>

非常感谢,花了一段时间研究这个但是在XSLT上找不到任何关于XSL的信息。

编辑:一个伙伴刚刚在他的机器上复制了那个(而不是他的程序)并获得相同的结果,有人可以尝试一下吗? :)

2 个答案:

答案 0 :(得分:3)

您的类型属性应为text/xsl,而不是text/xslt。试试

<?xml-stylesheet type="text/xsl" href="lecturelayout.xslt"?>

答案 1 :(得分:2)

除了根据@Matt Gibson的建议将处理指令@type调整为type="text/xsl"之外,您还需要调整模板的匹配表达式。

您的模板设置为与每个属性node()匹配,并生成多个<html>元素(无效)。

根据根节点调整模板匹配:

<xsl:template match="/">