首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

刚接触XSL 请帮小弟我看看这个XMl文档的xsl

2012-12-29 
刚接触XSL 请帮我看看这个XMl文档的xsl小弟刚接触XSL 不知道对于结构比较复杂的XMl文档,该怎么编写xsl。举

刚接触XSL 请帮我看看这个XMl文档的xsl
小弟刚接触XSL 不知道对于结构比较复杂的XMl文档,该怎么编写xsl。举个小例,我不知道对应于不同的<title>标签里的A、B、C,怎么输出<ptTopContent>中的内容(title中的A下输出A:warning_1、A:(1)caption_1、A:para_2等,title中的B下输出B:(1)caption_4,以此类推)请大神明示,最好代码说话

我的XML 源文件


<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="xsl-1.xsl" type="text/xsl"?>
<dmodule>
<content>
<pt>
<ptInfo>
<ptTop>
<title>A</title>
<ptTopContent>
<caution>
<warning>A:warning_1</warning>
</caution>
<caption>
<captionLine>A:(1)caption_1.</captionLine>
</caption>
<caption>
<captionLine>A:(2)caption_2.</captionLine><?Pub
Caret 118?>
</caption>
<para>A:para_1</para>
<note>
<notePara>A:para_2</notePara>
</note>
<caption>
<captionLine>A:(3)caption_3.</captionLine>
</caption>
</ptTopContent>
</ptTop>

<ptTop>
<title>B</title>
<ptTopContent>
<caption>
<captionLine>B:(1)caption_4</captionLine>
</caption>
<para>B:para_3</para>
</ptTopContent>
</ptTop>
<ptTop>
<title>C</title>
<ptTopContent>
<para>C:para_4</para>
</ptTopContent>
</ptTop>
</ptInfo>
</pt>
</content>
</dmodule>
我写的对应的XSL,文件名:xsl-1 ,请问是哪里出错了

<?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:template match="/">
<html>
<head>
<title>XML—title</title>
</head>
<body>
<h1 align="center">xml'XSL<hr/></h1>

<xsl:apply-templates select="dmodule/content/pt/ptInfo"/>
<xsl:apply-templates select="dmodule/content/pt/ptInfo/*/*/*"/>

</body>
</html>
</xsl:template>

<xsl:template match="dmodule/content/pt/ptInfo">
<body>
<xsl:apply-templates select="ptTop"/>
</body>
</xsl:template>

<xsl:template match="dmodule/content/pt/ptInfo/ptTop">
<body>
<xsl:apply-templates select="title"/>
</body>
</xsl:template>

<xsl:template match="dmodule/content/pt/ptInfo/ptTop/title">
<font color="green" size="4"><p>
<xsl:value-of select="."/></p>
</font>
</xsl:template>

<xsl:template match="dmodule/content/pt/ptInfo/ptTop/ptTopContent/caption">
<body>
<xsl:apply-templates select="captionLine"/>
</body>
</xsl:template>

<xsl:template match="dmodule/content/pt/ptInfo/ptTop/ptTopContent/caption/captionLine">
<font color="grace" size="4"><p>
<xsl:value-of select="."/></p>
</font>
</xsl:template>

<xsl:template match="dmodule/content/pt/ptInfo/ptTop/ptTopContent">
<body>
<xsl:apply-templates select="para"/>
</body>
</xsl:template>

<xsl:template match="dmodule/content/pt/ptInfo/ptTop/ptTopContent/para">
<font color="pink" size="4"><p>


<xsl:value-of select="."/></p>
</font>
</xsl:template>

<xsl:template match="dmodule/content/pt/ptInfo/ptTop/ptTopContent/caution">
<body>
<xsl:apply-templates select="warning"/>
</body>
</xsl:template>

<xsl:template match="dmodule/content/pt/ptInfo/ptTop/ptTopContent/caution/warning">
<font color="red" size="4"><p>
<xsl:value-of select="."/></p>
</font>
</xsl:template>

<xsl:template match="dmodule/content/pt/ptInfo/ptTop/ptTopContent/note">
<body>
<xsl:apply-templates select="notePara"/>
</body>
</xsl:template>

<xsl:template match="dmodule/content/pt/ptInfo/ptTop/ptTopContent/note/notePara">
<font color="green" size="4"><p>
<xsl:value-of select="."/></p>
</font>
</xsl:template>

</xsl:stylesheet>


我不知道对应于不同的<title>标签里的A、B、C,怎么输出<ptTopContent>中的内容(title中的A下输出A:warning_1、A:(1)caption_1、A:para_2等,title中的B下输出B:(1)caption_4,以此类推)请大神明示,最好代码说话

[解决办法]
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="//ptTop"/>
</xsl:template>
<xsl:template match="ptTop">
title: <xsl:value-of select="title"/> <br/>
<xsl:apply-templates select="ptTopContent"/>
<hr />
</xsl:template>
</xsl:stylesheet>

[解决办法]
首先我说我的看法,你的<xsl:apply-templates select="ptTop"/>和下面的<xsl:template match="dmodule/content/pt/ptInfo/ptTop">select最好一样吧!然后,为什么你不用if-test和for-each语句呢?你还是仔细的看看xslt的转换吧!

热点排行