2
使用XSLT,我试图去除特定节点内的所有标签,同时保留这些标签之间的空白。XSLT:剥离标签,保留空格
我给出这样的XML:
<text>
<s id="s2"> The patient is a <p id="p22">56-year-old</p> <p id="p28">Caucasian</p> <p id="p30">male</p></s></text>
我想去掉所有的<小号>和< P的>标签,这样我只是有<文本>内的英语句子节点。
我试过了下面的模板,它成功地删除了所有的标签,但是如果没有其他字符,它也会删除<p>标签之间的空格。例如,我最终会说:“患者是一位56岁的高级女警”
<xsl:template name="strip-tags">
<xsl:param name="text"/>
<xsl:choose>
<xsl:when test="contains($text, '<')">
<xsl:value-of select="substring-before($text, '<')"/>
<xsl:call-template name="strip-tags">
<xsl:with-param name="text" select="substring-after($text, '>')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
有什么想法?谢谢!
啊,很高兴知道!但即使这样做,p标签之间的空白也会被删除。如果我用非空格字符替换XML中的空格,则会保留这些字符。 – embden
@embden你的样式表中是否有'? –
您可能正在使用Microsoft XML解析器,该解析器默认情况下剥夺了空白。一旦消失,XSLT无法保存它。 –