这次我非常接近;)
贝娄有:
我的xml文件(调用脚本)
在xml上操作xsl的输出(如shuold所示)
我的问题是,虽然href和src值应该相同,但总是有一个 他们之间的图片差异(pic3和pic4)好像我正在调用下一个pic元素......但我不明白我在哪里做这个?
<xsl:for-each select="data/pics/pic">
<div>
<a>
<xsl:attribute name="href">
<xsl:value-of select="@href" />
</xsl:attribute>
<img>
<xsl:attribute name="src">
<xsl:value-of select="@src" />
</xsl:attribute>
</img>
</a>
</div>
</xsl:for-each>
这是我的xml
<data>
<pics>
<pic href="pics\pic05.jpg" src="pics\pic05.jpg"></pic>
<pic href="pics\pic04.jpg" src="pics\pic04.jpg"></pic>
<pic href="pics\pic03.jpg" src="pics\pic03.jpg"></pic>
<pic href="pics\pic02.jpg" src="pics\pic02.jpg"></pic>
<pic href="pics\pic01.jpg" src="pics\pic01.jpg"></pic>
</pics>
</data>
这应该是输出:
<div>
<a href="pics\pic01.jpg">
<img src="pics\pic01.jpg">
</a>
</div>
<div>
<a href="pics\pic02.jpg">
<img src="pics\pic02.jpg">
</a>
</div>
<div>
<a href="pics\pic03.jpg">
<img src="pics\pic03.jpg">
</a>
</div>
<div>
<a href="pics\pic04.jpg">
<img src="pics\pic04.jpg">
</a>
</div>
<div>
<a href="pics\pic05.jpg">
<img src="pics\pic05.jpg">
</a>
</div>
答案 0 :(得分:2)
您使用的XSLT处理器可能有错误,或者您没有提供真正的xslt代码和xml文档。
提供的XSLT代码片段(包含在完整的样式表中:
)<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<html>
<xsl:for-each select="data/pics/pic">
<div>
<a>
<xsl:attribute name="href">
<xsl:value-of select="@href" />
</xsl:attribute>
<img>
<xsl:attribute name="src">
<xsl:value-of select="@src" />
</xsl:attribute>
</img>
</a>
</div>
</xsl:for-each>
</html>
</xsl:template>
</xsl:stylesheet>
并应用于提供的XML文档:
<data>
<pics>
<pic href="pics\pic05.jpg" src="pics\pic05.jpg"></pic>
<pic href="pics\pic04.jpg" src="pics\pic04.jpg"></pic>
<pic href="pics\pic03.jpg" src="pics\pic03.jpg"></pic>
<pic href="pics\pic02.jpg" src="pics\pic02.jpg"></pic>
<pic href="pics\pic01.jpg" src="pics\pic01.jpg"></pic>
</pics>
</data>
生成想要的正确结果:
<html>
<div>
<a href="pics\pic05.jpg">
<img src="pics\pic05.jpg"/>
</a>
</div>
<div>
<a href="pics\pic04.jpg">
<img src="pics\pic04.jpg"/>
</a>
</div>
<div>
<a href="pics\pic03.jpg">
<img src="pics\pic03.jpg"/>
</a>
</div>
<div>
<a href="pics\pic02.jpg">
<img src="pics\pic02.jpg"/>
</a>
</div>
<div>
<a href="pics\pic01.jpg">
<img src="pics\pic01.jpg"/>
</a>
</div>
</html>
当使用多个不同的XSLT处理器执行时,此转换产生相同的结果,例如MSXML3,4,6,Saxon6.5和AltovaXML(XML-SPY)。
请注意,转换可以重构为更短且可读的内容:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<html>
<xsl:for-each select="data/pics/pic">
<div>
<a href="{@href}">
<img src="{@src}"/>
</a>
</div>
</xsl:for-each>
</html>
</xsl:template>
</xsl:stylesheet>