如何创建模板,以便使用以下XML ...
<content>
<bullet>text</bullet>
<bullet>more text</bullet>
o more text
o more text
o more text
<bullet>more text</bullet>
</content>
在html中看起来像这样......
<li>text</li
<li>more text</li>
o more text
o more text
o more text
<li>more text</li>
这可能很简单,但我最终还是......
text
more text
o more text
o more text
o more text
more text
<li>text</li>
<li>more text</li>
<li>more text</li>
感谢您的帮助。
答案 0 :(得分:1)
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- processes all *nodes* by copying them,
and can be overridden for individual
elements, attributes, comments, processing instructions,
or text nodes -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<!-- replace content with ul -->
<xsl:template match="content">
<ul>
<xsl:apply-templates select="@*|node()"/>
</ul>
</xsl:template>
<!-- replace bullet with li -->
<xsl:template match="bullet">
<li>
<xsl:apply-templates select="@*|node()"/>
</li>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:1)
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="content">
<ul><xsl:apply-templates/></ul>
</xsl:template>
<xsl:template match="bullet">
<li><xsl:apply-templates/></li>
</xsl:template>
</xsl:stylesheet>
答案 2 :(得分:0)
基本上你需要一个匹配所有东西的模板,然后根据输入的内容显示输出。我使用node()
作为模板匹配,然后使用<xsl:when>
标记来确定我是使用直接文本还是<bullet>
节点的内容并进行相应显示:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="node()">
<xsl:for-each select="node()">
<xsl:choose>
<xsl:when test="node()">
<li><xsl:value-of select="."/></li>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
您可以使用此工具测试样式表:http://xslttest.appspot.com/(很遗憾,此应用没有永久链接功能)。我得到以下输出:
<li>text</li>
<li>more text</li>
o more text
o more text
o more text
<li>more text</li>