gpt4 book ai didi

xslt - 通过 XSLT 从 XML 中删除空标签

转载 作者:行者123 更新时间:2023-12-03 23:27:03 25 4
gpt4 key购买 nike

我有以下模式的 xml

<?xml version="1.0" encoding="UTF-8"?>
<Person>
<FirstName>Ahmed</FirstName>
<MiddleName/>
<LastName>Aboulnaga</LastName>
<CompanyInfo>
<CompanyName>IPN Web</CompanyName>
<Title/>
<Role></Role>
<Department>
</Department>
</CompanyInfo>
</Person>

我在尝试删除空标签时使用了以下 xslt(来自论坛)

 <xsl:template match="@*|node()">
<xsl:if test=". != '' or ./@* != ''">
<xsl:copy>
<xsl:copy-of select = "@*"/>
<xsl:apply-templates />
</xsl:copy>
</xsl:if>


使用的 xslt 成功删除标签,如
<Title/>
<Role></Role>

...但是当空标签在两行时失败,例如:
<Department>
</Department>

有什么解决办法吗?

最佳答案

这种转换根本不需要任何条件 XSLT 指令,也没有使用明确的优先级:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

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

<xsl:template match=
"*[not(@*|*|comment()|processing-instruction())
and normalize-space()=''
]"/>
</xsl:stylesheet>

应用于提供的 XML 文档时 :
<Person>
<FirstName>Ahmed</FirstName>
<MiddleName/>
<LastName>Aboulnaga</LastName>
<CompanyInfo>
<CompanyName>IPN Web</CompanyName>
<Title/>
<Role></Role>
<Department>
</Department>
</CompanyInfo>
</Person>

它产生了想要的、正确的结果 :
<Person>
<FirstName>Ahmed</FirstName>
<LastName>Aboulnaga</LastName>
<CompanyInfo>
<CompanyName>IPN Web</CompanyName>
</CompanyInfo>
</Person>

关于xslt - 通过 XSLT 从 XML 中删除空标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6648679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com