处理xml文件以删除元素

时间:2017-12-18 16:22:08

标签: xml xslt

我刚刚选择了一些操作XML文件的任务。我已经开始阅读一些基础知识,但我想我会问这里有多好的XSLT处理能够达到我需要它的速度。

我有一个大致具有以下结构的XML文件(在其主体中):

<p><no>12345</no>
<line>Lots of text here that I want to get rid of but need to keep the text in any <ref>tags like this</ref></line></p>

在一天结束时,文件被导入到Excel中,但是现在它很大并且处理它以删除任何<line>标签而没有<ref>是一个很长的工作,即使这样,文件也是如此仍然相当臃肿。如果可能的话,我想减少多余的文字。我认为我应该能够删除没有<line>标记的任何<ref>以及没有<p>标记的任何<ref>,但是是否可以删除实际文本?

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

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

    <xsl:strip-space elements="*"/>

    <!-- Delete all p or line element with no descendant ref -->
    <xsl:template match="p[not(descendant::ref)]|line[not(descendant::ref)]"/>

    <!-- Identical Transformation -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>

答案 1 :(得分:0)

谢谢你们。我将查看此链接并查看我可以排序的内容。很高兴知道它可以在我继续努力之前发挥作用。