我的xml代码类似于:
<body>Text Here1.
</body>
<body><Title>Title</Title>Text Here2.
</body>
<body>Text Here3.
</body>
我在XSLT中使用以下代码:
<xsl:when test="@name='body'">
<p>
<xsl:value-of select='normalize-space(node())'/>
</p>
</xsl:when>
在第二个节点中忽略该子元素的最佳机制是什么,或者可能在节点内对它应用特殊格式(假设我想加粗该文本)?
由于
答案 0 :(得分:1)
使用XSLT处理层次结构时,通常使用apply-templates,它允许您以递归方式遍历XML输入。下面的示例将使用body
元素将文本封装在paragraph
元素中,并将Title
元素中的文本封装在bold
元素中。所有其他元素都将被忽略。
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.0" encoding="iso-8859-1" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="body">
<p>
<xsl:apply-templates />
</p>
</xsl:template>
<xsl:template match="Title">
<b>
<xsl:apply-templates />
</b>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select='normalize-space(.)'/>
</xsl:template>
</xsl:stylesheet>