【问题标题】:XSLT transformation to remove space within elementXSLT 转换以删除元素内的空间
【发布时间】:2013-06-05 15:26:35
【问题描述】:

我对 XSLT 的东西有点陌生。问题是我需要删除输入 XML 中某些元素中的空格。例如

<element id="12">


</element>

应该变成

<element id="12"></element>

还有

<element id="12">

something

</element>

进入

<element id="12">something</element>

xml 的其余部分应保持不变。 xsl可以进行这种转换吗?

【问题讨论】:

    标签: xml xslt whitespace removing-whitespace


    【解决方案1】:

    你喜欢做的是Identity transform

    试试这样的:

    <?xml version="1.0" encoding="utf-8" ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="xml" indent="yes"/>
        <xsl:strip-space elements="*"/>
    
        <xsl:template match="@* | node()">
            <xsl:copy>
                <xsl:apply-templates select="@* | node()"/>
            </xsl:copy>
        </xsl:template>
    
        <xsl:template match="text()">
            <xsl:value-of select="normalize-space()"/>
        </xsl:template>
    
    </xsl:stylesheet>
    

    【讨论】:

    • 谢谢,伙计))行得通!顺便说一句,如果我想将此转换限制为特定标签怎么办?我应该把它放在 strip-space elements="specificTag" 吗?
    • 将 match="text()" 模板更改为:&lt;xsl:template match="element/text()"&gt; 以及每个“特定标签”的更多模板。
    【解决方案2】:

    希望对你有所帮助。

    <xsl:template match="text()">
        <xsl:value-of select="fn:normalize-space()"/> <!-- fn is the prefix bound to xpath functions -->
    </xsl:template>
    

    【讨论】:

    • hmm...它产生了完全空的文件))
    • 兄弟,我的回答是帮助您摆脱文本节点中的空格。您必须具有复制逻辑。无论如何,您通过发布的另一个答案得到了它;与我在这里发布的逻辑。
    • 只是我对 xslt 的东西一无所知。感谢您的输入)
    猜你喜欢
    • 1970-01-01
    • 2014-10-13
    • 2019-11-26
    • 2013-12-12
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多