我想在' fomula'下获得文本节点和元素节点。元素按顺序,将XML转换为HTML。 我在下面展示了XML代码。文字不固定。 (我再次详细编写了代码。)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<section>
<formula>
m=12n
<superscript>
2
</superscript>
+3(3n
<superscript>
2
</superscript>
+2)
</formula>
<xxx>
abc
</xxx>
<formula>
c=a+b
<superscript>
4
</superscript>
</formula>
</section>
</root>
我应该写什么XSL来获得下面的结果?
<p>m=12n<span>2</span>+3(3n<span>2</span>+2</p>
<p>abc</p>
<p>c=a+b<span>4</span></p>
当我获得特定的元素节点时,我通常会像下面那样编写XSL。但我不知道如何按顺序获取带有兄弟元素节点的文本节点。 请给我建议。 (我再次详细编写了代码。)
<xsl:template match="/">
<html>
--omitted--
<body>
<xsl:apply-templates select="/root/section" />
</body>
<html>
</xsl:template>
<xsl:template match="section">
<xsl:for-each select="*">
<xsl:if test="name()='formula'">
<xsl:apply-templates select="." />
</xsl:if>
<xsl:if test="name()='xxx'">
<xsl:apply-templates select="." />
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template match="formula">
<p>
<xsl:apply-templates select="." />
</p>
</xsl:template>
<xsl:template match="xxx">
<p>
<xsl:apply-templates select="." />
</p>
</xsl:template>
答案 0 :(得分:3)
您应该查看xsl:template
和xsl:apply-templates
:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:apply-templates select="/root/section"/>
</xsl:template>
<xsl:template match="formula | xxx">
<p>
<xsl:apply-templates />
</p>
</xsl:template>
<xsl:template match="superscript">
<span>
<xsl:apply-templates />
</span>
</xsl:template>
</xsl:stylesheet>
您可以看到working example here。
编辑:可能的方法是为您需要的每种特定格式创建模板。所以:
formula
或xxx
元素时,我都会将其内容包含在p
元素中&#34; superscript
元素时,我都会将其内容包含在span
元素中&#34;