【问题标题】:XSLT handling text with tag in betweenXSLT 处理中间有标签的文本
【发布时间】:2014-05-08 19:22:25
【问题描述】:

我有以下 XML:<a>Text with <b>stuff</b> here</a>

使用我的代码:

<xsl:template match="*[local-name() = 'a'][namespace-uri()=namespace-uri(.)]">
    <xsl:value-of select="normalize-space(text()) "/><xsl:text> </xsl:text>
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match="*[local-name() = 'b'][namespace-uri()=namespace-uri(.)]">
    <xsl:value-of select="normalize-space(text())"/><xsl:text> </xsl:text>
    <xsl:apply-templates/>
</xsl:template>

我只得到结果:

文字内容

我想要的是:

这里有东西的文字。

那么我该如何处理&lt;b/&gt;元素之后的剩余文本呢?

【问题讨论】:

  • 查看更多样式表会很有帮助。当我只应用这些模板时,我会得到不同的输出。它产生Text with Text with stuff stuff here

标签: html xml xslt


【解决方案1】:

为什么这么复杂?如果这真的是您的 XML 输入:

<a>Text with <b>stuff</b> here</a>

然后是以下样式表:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text" encoding="UTF-8"/>

<xsl:template match="/">
    <xsl:value-of select="a" />
</xsl:template>

</xsl:stylesheet>

将返回请求的*结果:

Text with stuff here

--
(*) 除了末尾的句点,它不存在于输入中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    相关资源
    最近更新 更多