如何使用XSLT筛选xsi:type="test1"的XML节点并输出目标文件
XSLT实现xsi:type属性筛选解决方案
以下是可直接使用的XSLT转换代码,转换后完全匹配你给出的预期输出:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exclude-result-prefixes="xsi"> <!-- 输出格式配置 --> <xsl:output method="xml" indent="yes" encoding="UTF-8" omit-xml-declaration="yes"/> <!-- 匹配根catalog节点 --> <xsl:template match="/catalog"> <catalog> <!-- 仅筛选xsi:type为test1的cd节点完整复制 --> <xsl:copy-of select="cd[@xsi:type='test1']"/> </catalog> </xsl:template> </xsl:stylesheet>
关键说明
- 必须在
xsl:stylesheet节点中声明和源XML完全一致的xsi命名空间,否则XPath无法正确识别xsi:type属性 exclude-result-prefixes="xsi"配置可避免xsi命名空间多余出现在输出的catalog根节点copy-of指令会完整保留符合条件的cd节点的所有子节点、属性、自带的命名空间声明,输出结构和预期完全一致- 如果需要保留XML声明头,删除
omit-xml-declaration="yes"配置即可
内容的提问来源于stack exchange,提问作者Shanka Somasiri
相关产品推荐
相关产品推荐

