使用xslt删除xml中的重复项
发布时间:2020-12-16 23:15:30 所属栏目:百科 来源:网络整理
导读:我需要删除以下xml中的重复项: ListOfRowIDWithListOfBooks xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/" RowIDWithListOfBooks Row_IDADOA-XssK/Row_ID ListOfBookInfo book BookTypeBrand/BookType BookNamejon/BookName /book
我需要删除以下xml中的重复项:
<ListOfRowIDWithListOfBooks xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"> <RowIDWithListOfBooks> <Row_ID>ADOA-XssK</Row_ID> <ListOfBookInfo> <book> <BookType>Brand</BookType> <BookName>jon</BookName> </book> <book> <BookType>Brand</BookType> <BookName>jon</BookName> </book> </ListOfBookInfo> </RowIDWithListOfBooks> </ListOfRowIDWithListOfBooks> 有人可以帮忙吗? 解决方法
使用标准分组解决方案可以轻松实现此任务.不要使用单个select语句来执行众所周知会导致性能问题的语句.
注意对identity.xsl的引用只是在样式表中包含了众所周知的identity transformation模板. [XSLT 1.0] <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:key name="k-books" match="book" use="concat(BookType,'|',BookName)"/> <xsl:include href="identity.xsl"/> <xsl:template match="ListOfBookInfo"> <ListOfBookInfo> <xsl:copy> <xsl:apply-templates select="book [generate-id() =generate-id(key('k-books',concat(BookType,BookName))[1])]"/> </xsl:copy> </ListOfBookInfo> </xsl:template> </xsl:stylesheet> [XSLT 2.0] <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:include href="identity.xsl"/> <xsl:template match="ListOfBookInfo"> <ListOfBookInfo> <xsl:for-each-group select="book" group-by="concat(BookType,BookName)"> <xsl:apply-templates select="."/> </xsl:for-each-group> </ListOfBookInfo> </xsl:template> </xsl:stylesheet> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |