.xml结构如何转换
<a>
<p>
<name> 1 </name>
<S>
<S_name> Engl </S_name>
<Score> 80 </Score>
</S>
</p>
<p>
<name> 2 </name>
<S>
<S_name> En </S_name>
<Score> 8 </Score>
</S>
</p>
.xsl:
<xsl:for-each select= ".a/p ">
<xsl:value-of select= "name "/>
<xsl:for-each select= ".a/p/S ">
<xsl:value-of select= "Score "/>
</xsl:for-each>
</xsl:for-each>
不对。怎么改
[解决办法]
xml:
<?xml version= "1.0 "?>
<?xml-stylesheet type= "text/xsl " href= "xx.xsl "?>
<a>
<p>
<name> 1 </name>
<S>
<S_name> Engl </S_name>
<Score> 80 </Score>
</S>
</p>
<p>
<name> 2 </name>
<S>
<S_name> En </S_name>
<Score> 8 </Score>
</S>
</p>
</a>
xx.xsl:
<?xml version= "1.0 "?>
<xsl:stylesheet version= "1.0 " xmlns:xsl= "http://www.w3.org/1999/XSL/Transform ">
<xsl:template match= "/ ">
<xsl:for-each select= "a/p ">
<xsl:value-of select= "name "/>
<xsl:for-each select= "S ">
<xsl:value-of select= "Score "/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
[解决办法]
首先你 <a> 没有结束标记,估计你是这个意思
P.XML
<?xml version= "1.0 " encoding= "UTF-8 "?>
<!-- 编辑使用 XMLSpy v2006 U (http://www.altova.com) 由 any (any) -->
<?xml-stylesheet type= "text/xsl " href= "p.xsl "?>
<a>
<p>
<name> 1 </name>
<S>
<S_name> Engl </S_name>
<Score> 80 </Score>
</S>
</p>
<p>
<name> 2 </name>
<S>
<S_name> En </S_name>
<Score> 8 </Score>
</S>
</p>
</a>
P.XSL
<?xml version= "1.0 " encoding= "utf-8 "?>
<xsl:stylesheet version= "1.0 " xmlns:xsl= "http://www.w3.org/1999/XSL/Transform " xmlns:fo= "http://www.w3.org/1999/XSL/Format " >
<xsl:output method= "html " encoding= "UTF-8 "/>
<xsl:template match= "a ">
<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=UTF-8 "/>
<title> yangzi </title>
</head>
<body>
<xsl:for-each select= "./p ">
<xsl:value-of select= "name "/>
<xsl:for-each select= "./S ">
<xsl:value-of select= "Score "/>
</xsl:for-each>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
[解决办法]
你的xslt语句应该用 <xsl:template match= ". "> </xsl:template> 括起来。
<xsl:for-each select= ".a/p "> 这句有错, ". "代表当前节点, ".a "是错误用法。把 ". "去掉即可。
<xsl:for-each select= ".a/p/S "> 这句有同样错误,所以 ". "也应该去掉。另外,这个for-each是嵌套在上面那个for-each里面的,所以 "a/p/ "也应该去掉。