我有以下XML代码:
并使用以下XSLT代码:
与W3 Schools" Tryit Editor" XSLT的工具。由于声誉,我无法将其链接。
我的问题是XSLT不解析所有元素(目录元素中的学期元素和学期元素中的类元素)。
WSL学校的XSLT示例只使用了一个子元素,而且我对两个子元素的操作感到茫然。
我的理解是第一个
<xsl:for-each select="catalog/semester">
将循环目录元素中的学期元素。
在循环中,我有一个HTML表,我想输出class元素的信息,即学期的子元素。我认为将此代码嵌套在原始for-each循环中应该为表中的每个类输出每个元素的文本:
<xsl:for-each select="class">
<td><xsl:value-of select="dept"/></td>
<td><xsl:value-of select="number"/></td>
<td><xsl:value-of select="title"/></td>
</xsl:for-each>
在HTML表格中,只显示元素类的第一个子元素dept的文本&#34; CIT&#34 ;.
我推断for-each循环没有解析。如果这是原因,为什么?
如果我推断为什么XSLT代码没有读取XML代码我的想法是不正确的,那么正确的原因是什么以及如何解决?
答案 0 :(得分:2)
这里有几个问题......
<number>
但尚未关闭(似乎以</dept>
结尾的标记旨在关闭它)。&
替换为&
</table>
标记。您需要将其添加进来。for-each
循环可能在<tr>
个节点周围有</tr>
和<td>...</td>
个标记。这是一个解决了所有这些问题的XSLTransform(我添加了一条output
指令,以便XSLTransform可以在窗口中将其显示为HTML):
http://xsltransform.net/94rmq66
所以最重要的是你是对的,XSLT解析器无法读取XML,因为它的XML格式错误。它根据您的输入做了任何事情是非常糟糕的事实,也是不使用W3Schools XSLT工具的另一个原因。