首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSLT:在特定标记中剥离标记,但保留外部标记

XSLT:在特定标记中剥离标记,但保留外部标记
EN

Stack Overflow用户
提问于 2019-03-11 15:13:00
回答 1查看 60关注 0票数 0

我有下面的虚拟xml文件,我需要去掉TXT中的标记。我已经创建了一个样式表,它成功地剥离了所有的文件中的标记,但我只希望它只去除TXT块中的标记。为了实现这一点,我需要对XSLT进行哪些更改?

XML

代码语言:javascript
复制
<DOC>
    <ID>1234</ID>
<TXT>
<A><DESC type="PERSON">George Washington</DESC> lived in a house called <DESC type="PLACE">Mount Vernon.</DESC></A>
<A><DESC type="PERSON">Thomas Jefferson</DESC> lived in a house called <DESC type="PLACE">Monticello.</DESC></A>
</TXT>
</DOC>

XSLT

代码语言:javascript
复制
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template name="strip-tags">
        <xsl:param name="TXT"/>
        <xsl:choose>
            <xsl:when test="contains($TXT, 'A')">
                <xsl:value-of select="$TXT"/>
                <xsl:call-template name="strip-tags">
                    <xsl:with-param name="TXT" select="substring-after($TXT, 'A')"/>
                </xsl:call-template>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$TXT"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
</xsl:stylesheet>

电流输出

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
    1234

    George Washington lived in a house called Mount Vernon.
    Thomas Jefferson lived in a house called Monticello.

期望输出

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
    <DOC><ID>1234</ID>

    <TXT>George Washington lived in a house called Mount Vernon.
    Thomas Jefferson lived in a house called Monticello.</TXT>
    </DOC>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-11 15:56:16

重新制定您的请求:

TXT元素的子代外,每个节点都被转换为自身。

使用同一性变换

代码语言:javascript
复制
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:template>
    <xsl:template match="TXT//*">
        <xsl:apply-templates />
    </xsl:template>
</xsl:stylesheet>

结果:

代码语言:javascript
复制
<DOC>
    <ID>1234</ID>
   <TXT>
George Washington lived in a house called Mount Vernon.
Thomas Jefferson lived in a house called Monticello.
</TXT>
</DOC>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55104974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档