XSLT删除不需要的元素
发布时间:2020-12-16 23:15:49 所属栏目:百科 来源:网络整理
导读:我有 XML getInquiryAboutListReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" inquiryAbouts inquiryAbout codeCode/code nameKkSomething/nameKk nameRuSomething/nameRu documents xsi:nil="true"/ /inquiryAbout /inquiryAbouts/getInqui
我有
XML
<getInquiryAboutListReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <inquiryAbouts> <inquiryAbout> <code>Code</code> <nameKk>Something</nameKk> <nameRu>Something</nameRu> <documents xsi:nil="true"/> </inquiryAbout> </inquiryAbouts> </getInquiryAboutListReturn> 我想用XSLT处理它以复制所有XML <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output indent="yes" /> <xsl:template match="/"> <xsl:copy-of select="//getInquiryAboutListReturn/inquiryAbouts"/> </xsl:template> </xsl:stylesheet> 如何在没有< documents xsi:nil =“true”/>的情况下复制所有XML?或没有xsi:nil =“true”? 期望的输出XML <getInquiryAboutListReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <inquiryAbouts> <inquiryAbout> <code>Code</code> <nameKk>Something</nameKk> <nameRu>Something</nameRu> </inquiryAbout> </inquiryAbouts> </getInquiryAboutListReturn> 解决方法
这个简单的XSLT:
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0"> <xsl:output omit-xml-declaration="no" indent="yes"/> <xsl:strip-space elements="*"/> <!-- TEMPLATE #1 --> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <!-- TEMPLATE #2 --> <xsl:template match="*[@xsi:nil = 'true']" /> </xsl:stylesheet> …当应用于OP的源XML时: <?xml version="1.0"?> <getInquiryAboutListReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <inquiryAbouts> <inquiryAbout> <code>Code</code> <nameKk>Something</nameKk> <nameRu>Something</nameRu> <documents xsi:nil="true"/> </inquiryAbout> </inquiryAbouts> </getInquiryAboutListReturn> …生成预期结果XML: <?xml version="1.0"?> <getInquiryAboutListReturn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <inquiryAbouts> <inquiryAbout> <code>Code</code> <nameKk>Something</nameKk> <nameRu>Something</nameRu> </inquiryAbout> </inquiryAbouts> </getInquiryAboutListReturn> 说明: >第一个模板 – Identity Template – 按原样复制源XML文档中的所有节点和属性.>第二个模板匹配具有等于“true”的指定命名空间属性的所有元素,有效地删除了这些元素. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |