我的xml文件中有这样的东西
<tutor>
<heading>tutor</heading>
<p>paragraph</p>
<p>paragraph one two <a href="http://three.com">three</a> four give</p>
<ul>
<li>item</li>
<li>item</li>
<li>item</li>
</ul>
<p>paragraph</p>
<p>paragraph<a href="http://acho.com">test</a> one two two three</p>
<p>paragraph</p>
<p>paragraph</p>
</tutor>
如何使用xsl正确输出链接?我尝试应用模板并使用for-each但是无法正确执行我在我的xsl文件中有这样的东西
<xsl:template match="tutor">
<h4><xsl:value-of select="./heading" /></h4>
<p><xsl:value-of select="./p" /></p>
<a href="{./p/a/@href}"><xsl:value-of select="./p/a" /></a>
</xsl:template>
但是类似的东西却无法正确行事。有人可以帮我一把吗?感谢
我想要的输出就像....
tutor
paragraph
paragraph one two three four give
the bullet lists and so on
,其中三个将是一个链接,就像在html中输出内容一样
答案 0 :(得分:1)
您当前陈述的问题......
...这只是在XML中的第一个a
元素中寻找p
元素,这不是这里的情况。
如果您的XML已包含有效的HTML元素,则只需使用XSLT Identity Template输出它们
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
然后,您只需要为希望更改的XML元素编写模板。例如,您不想输出tutor
元素,因此您可以添加模板以跳过它
<xsl:template match="tutor">
<xsl:apply-templates/>
</xsl:template>
要将heading
更改为h4
,您需要编写一个这样的模板
<xsl:template match="heading">
<h4><xsl:apply-templates/></h4>
</xsl:template>
所有其他元素p
和a
以及ul
将按原样输出。
试试这个XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" />
<xsl:template match="tutor">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="heading">
<h4><xsl:apply-templates/></h4>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>